/*
* INTEL CONFIDENTIAL
* Copyright (c) 2026 Intel Corporation
* All Rights Reserved.
*
* The source code contained or described herein and all documents related to
* the source code ("Material") are owned by Intel Corporation or its
* suppliers or licensors. Title to the Material remains with Intel
* Corporation or its suppliers and licensors. The Material may contain trade
* secrets and proprietary and confidential information of Intel Corporation
* and its suppliers and licensors, and is protected by worldwide copyright
* and trade secret laws and treaty provisions. No part of the Material may be
* used, copied, reproduced, modified, published, uploaded, posted,
* transmitted, distributed, or disclosed in any way without Intel's prior
* express written permission.
*
* No license under any patent, copyright, trade secret or other intellectual
* property right is granted to or conferred upon you by disclosure or
* delivery of the Materials, either expressly, by implication, inducement,
* estoppel or otherwise. Any license under such intellectual property rights
* must be express and approved by Intel in writing.
*
* Unless otherwise agreed by Intel in writing, you may not remove or alter
* this notice or any other notice embedded in Materials by Intel or Intels
* suppliers or licensors in any way.
*/

#include "Ipu8StaticGraphAutogen.h"
#define CHECK_BITMAP128_BIT(bitmap, index) ((bitmap[(index)/64]) & ((uint64_t)1 << ((index) % 64)))

/*
 * External Interfaces
 */
IStaticGraphConfig::IStaticGraphConfig(SensorMode* selectedSensorMode, VirtualSinkMapping* sinkMappingConfiguration, int32_t graphId, int32_t settingsId) :
_selectedSensorMode(selectedSensorMode), _graphId(graphId), _settingsId(settingsId)
{
    memcpy(_sinkMappingConfiguration, sinkMappingConfiguration, sizeof(VirtualSinkMapping));
}

StaticGraphStatus IStaticGraphConfig::getSensorMode(SensorMode** sensorMode)
{
    if (!sensorMode)
    {
        STATIC_GRAPH_LOG("Sensor mode does not exist for this setting.");
        return StaticGraphStatus::SG_OK;
    }
    *sensorMode = _selectedSensorMode;
    return StaticGraphStatus::SG_OK;
};

StaticGraphStatus IStaticGraphConfig::getGraphTopology(GraphTopology** topology)
{
    *topology = _selectedGraphTopology;
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus IStaticGraphConfig::getGraphId(int32_t* graphId)
{
    if (graphId == nullptr)
    {
        return StaticGraphStatus::SG_ERROR;
    }

    *graphId = _graphId;
    return StaticGraphStatus::SG_OK;
};

StaticGraphStatus IStaticGraphConfig::getSettingsId(int32_t* settingsId)
{
    if (settingsId == nullptr)
    {
        return StaticGraphStatus::SG_ERROR;
    }

    *settingsId = _settingsId;
    return StaticGraphStatus::SG_OK;
};

StaticGraphStatus IStaticGraphConfig::getVirtualSinkConnection(VirtualSink& virtualSink, HwSink* hwSink)
{
    switch (virtualSink)
    {
    case VirtualSink::PreviewSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->preview);
        break;
    case VirtualSink::VideoSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->video);
        break;
    case VirtualSink::PostProcessingVideoSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->postProcessingVideo);
        break;
    case VirtualSink::StillsSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->stills);
        break;
    case VirtualSink::ThumbnailSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->thumbnail);
        break;
    case VirtualSink::RawSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->raw);
        break;
    case VirtualSink::RawPdafSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->rawPdaf);
        break;
    case VirtualSink::RawDolLongSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->rawDolLong);
        break;
    case VirtualSink::RawCvSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->rawCv);
        break;
    case VirtualSink::VideoIrSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->videoIr);
        break;
    case VirtualSink::PreviewIrSink:
        *hwSink = static_cast<HwSink>(_sinkMappingConfiguration->previewIr);
        break;
    default:
        STATIC_GRAPH_LOG("Failed to get virtual sink mapping for virtual sink %d", static_cast<int>(virtualSink));
        return StaticGraphStatus::SG_ERROR;
    }

    return StaticGraphStatus::SG_OK;
}

GraphTopology::GraphTopology(GraphLink** links, int32_t numOfLinks, VirtualSinkMapping* sinkMappingConfiguration) :
    links(links), numOfLinks(numOfLinks), _sinkMappingConfiguration(sinkMappingConfiguration) {}

StaticGraphStatus GraphTopology::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{
    // Default impl. No inner nodes in the sub-graph nodes.
    (void)subGraphInnerNodeConfiguration;
    return StaticGraphStatus::SG_OK;
};

InnerNodeOptionsFlags GraphTopology::GetInnerOptions(SubGraphPublicInnerNodeConfiguration* publicInnerOptions)
{
    InnerNodeOptionsFlags res = None;

    if (publicInnerOptions)
    {
        res |= no3A & (publicInnerOptions->no3A ? -1 : 0);
        res |= noMp & (publicInnerOptions->noMp ? -1 : 0);
        res |= noDp & (publicInnerOptions->noDp ? -1 : 0);
        res |= noPdaf & (publicInnerOptions->noPdaf ? -1 : 0);
    }

    return res;
}

bool GraphTopology::isLinkVanished(GraphLink* link)
{
    if (link == nullptr)
    {
        return false;
    }

    switch(link->type)
    {
        case LinkType::Node2Self:
        case LinkType::Node2Node:
        {
            if (link->srcNode == nullptr || link->destNode == nullptr)
            {
                return false;
            }

            uint8_t srcTeb = link->srcTerminalId / 32;
            uint8_t srcTebIndex = link->srcTerminalId % 32;
            uint8_t destTeb = link->destTerminalId / 32;
            uint8_t destTebIndex = link->destTerminalId % 32;

            if (((link->srcNode->bitmaps.teb[srcTeb] & (1 << srcTebIndex)) == 0) &&
                ((link->destNode->bitmaps.teb[destTeb] & (1 << destTebIndex)) == 0))
            {
                return true;
            }

            return false;
        }
        case LinkType::Node2Sink:
        {
            if (link->srcNode == nullptr)
            {
                return false;
            }

            uint8_t srcTeb = link->srcTerminalId / 32;
            uint8_t srcTebIndex = link->srcTerminalId % 32;

            if ((link->srcNode->bitmaps.teb[srcTeb] & (1 << srcTebIndex)) == 0)
            {
                return true;
            }

            return false;
        }
        case LinkType::Source2Node:
        {
            if (link->destNode == nullptr)
            {
                return false;
            }

            uint8_t destTeb = link->destTerminalId / 32;
            uint8_t destTebIndex = link->destTerminalId % 32;

            if ((link->destNode->bitmaps.teb[destTeb] & (1 << destTebIndex)) == 0)
            {
                return true;
            }

            return false;
        }

    }

    return false;
}

/*
 * Outer Nodes
 */

void OuterNode::Init(uint8_t nodeResourceId,
    NodeTypes nodeType,
    uint32_t kernelCount,
    uint32_t operationMode,
    uint32_t streamId,
    uint8_t nodeNumberOfFragments)
{
    resourceId = nodeResourceId;
    type = nodeType;
    nodeKernels.kernelCount = kernelCount;
    numberOfFragments = nodeNumberOfFragments;
    if (kernelCount > 0)
    {
        nodeKernels.kernelList = new StaticGraphPacRunKernel[kernelCount];
        for (uint32_t j = 0; j < kernelCount; j++)
        {
            nodeKernels.kernelList[j].fragment_descs = nullptr;
        }

        kernelListInConfigOrder = new uint16_t[kernelCount];
    }
    else
    {
        nodeKernels.kernelList = nullptr;
    }
    for (uint32_t i = 0; i < 4; ++i)
    {
        fragmentVanishStatus[i] = VanishOption::Full;
    }

    nodeKernels.operationMode = operationMode;
    nodeKernels.streamId = streamId;
}
OuterNode::~OuterNode()
{
    delete[] nodeKernels.kernelList;
    delete[] kernelListInConfigOrder;
}
void OuterNode::InitRunKernels(uint16_t* kernelsUuids, uint64_t kernelsRcbBitmap[2], StaticGraphKernelRes* resolutionInfos, uint64_t kernelsResolutionHistoryGroupBitmap[2], uint64_t fragmentDescriptorsGroupBitmap[2], StaticGraphKernelRes* resolutionHistories, StaticGraphKernelBppConfiguration* bppInfos, uint8_t* systemApisSizes, uint8_t* systemApiData, KernelFragments* fragmentDescriptors, uint16_t* runKernelConfigOrder)
{
    uint8_t* systemApiDataCurrentPtr = systemApiData;
    uint32_t currentResolutionHistoryIndex = 0;
    uint32_t currentRcbIndex = 0;
    int32_t currentFragmentsDescriptorIndex = -1;

    for (uint32_t i = 0; i < nodeKernels.kernelCount; ++i)
    {
        auto& runKernel = nodeKernels.kernelList[i].run_kernel;
        runKernel.kernel_uuid = kernelsUuids[i];
        runKernel.stream_id = nodeKernels.streamId;
        runKernel.enable = 1;
        runKernel.output_count = 1;
        if (CHECK_BITMAP128_BIT(kernelsRcbBitmap, i))
        {
            // RCB
            runKernel.resolution_info = &resolutionInfos[currentRcbIndex];
            currentRcbIndex++;
        }
        else
        {
            runKernel.resolution_info = nullptr;
        }

        if (CHECK_BITMAP128_BIT(kernelsResolutionHistoryGroupBitmap, i))
        {
            // Next resolution history group
            currentResolutionHistoryIndex++;
        }
        runKernel.resolution_history = &resolutionHistories[currentResolutionHistoryIndex];

        runKernel.bpp_info.input_bpp = bppInfos[i].input_bpp;
        runKernel.bpp_info.output_bpp = bppInfos[i].output_bpp;

        // system API
        uint32_t systemApiSize = systemApisSizes[i];
        runKernel.system_api.size = systemApiSize;
        runKernel.system_api.data = systemApiSize != 0 ? systemApiDataCurrentPtr : nullptr;

        if (systemApiDataCurrentPtr)
        {
            systemApiDataCurrentPtr = systemApiDataCurrentPtr + systemApiSize;
        }

        // Metadata
        runKernel.metadata[0] = 0;
        runKernel.metadata[1] = 0;
        runKernel.metadata[2] = 0;
        runKernel.metadata[3] = 0;

        // Init fragments information
        if (CHECK_BITMAP128_BIT(fragmentDescriptorsGroupBitmap, i))
        {
            // New group
            currentFragmentsDescriptorIndex++;
        }

        nodeKernels.kernelList[i].fragment_descs = &fragmentDescriptors[currentFragmentsDescriptorIndex].fragmentDescriptors[0];
        nodeKernels.kernelList[i].fragments_defined = (numberOfFragments > 0);

        kernelListInConfigOrder[i] = runKernelConfigOrder[i];
    }
}

void OuterNode::SetDisabledKernels(uint64_t disabledRunKernelsBitmap[2])
{
    for (uint32_t i = 0; i < nodeKernels.kernelCount; ++i)
    {
        // check the i'th bit in the bitmap
        if (CHECK_BITMAP128_BIT(disabledRunKernelsBitmap, i))
        {
            nodeKernels.kernelList[i].run_kernel.enable = 2; // disabled
        }
    }
}

uint8_t OuterNode::GetNumberOfFragments()
{
    return numberOfFragments;
}
void OuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Default implementation
    (void)vanishStatus;
}

const uint16_t* OuterNode::getRunKernelConfigOrder()
{
    return kernelListInConfigOrder;
}

void IsysOuterNode::Init(IsysOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 1, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[1] = {11470 /*is_odr_a*/};
    uint64_t kernelsRcbBitmap[] = {0x1, 0x0}; // { is_odr_a[0] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x0, 0x0}; // {{is_odr_a}[0] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1, 0x0}; // {{is_odr_a}[0] }
    uint8_t systemApisSizes[1] = {0 /*is_odr_a*/};
    uint16_t runKernelConfigOrder[1] = {0 /*is_odr_a*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, nullptr, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerNoGmvNoTnrNoSapOuterNode::Init(LbffBayerNoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 34, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[34] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3FDF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], image_upscaler_1_1[24], odr_ofs_mp_1_4[26], b2i_ds_output_1_1[27], odr_ofs_dp_1_4[28], odr_awb_std_1_4[29], odr_awb_sat_1_4[30], aestatistics_2_1[31], odr_ae_1_4[32], odr_af_std_1_4[33] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3F3800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {image_upscaler_1_1}[10], {cas_1_1}[11], {odr_ofs_mp_1_4}[12], {b2i_ds_output_1_1}[13], {odr_ofs_dp_1_4}[14], {odr_awb_std_1_4}[15], {odr_awb_sat_1_4}[16], {aestatistics_2_1}[17], {odr_ae_1_4}[18], {odr_af_std_1_4}[19] }
    uint8_t systemApisSizes[34] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[34] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*image_upscaler_1_1*/, 25 /*cas_1_1*/, 26 /*odr_ofs_mp_1_4*/, 27 /*b2i_ds_output_1_1*/, 28 /*odr_ofs_dp_1_4*/, 19 /*rgbs_grid_1_1*/, 29 /*odr_awb_std_1_4*/, 30 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 31 /*aestatistics_2_1*/, 32 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerWithGmvNoTnrNoSapOuterNode::Init(LbffBayerWithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 38, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[38] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3FFDF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], image_upscaler_1_1[24], odr_ofs_mp_1_4[26], b2i_ds_output_1_1[27], odr_ofs_dp_1_4[28], odr_awb_std_1_4[29], odr_awb_sat_1_4[30], aestatistics_2_1[31], odr_ae_1_4[32], odr_af_std_1_4[33], ifd_gmv_1_4[34], gmv_statistics_1_1[35], odr_gmv_feature_1_4[36], odr_gmv_match_1_4[37] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3FF3800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {gmv_statistics_1_1}[14], {odr_gmv_feature_1_4}[15], {odr_gmv_match_1_4}[16] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {image_upscaler_1_1}[10], {cas_1_1}[11], {odr_ofs_mp_1_4}[12], {b2i_ds_output_1_1}[13], {odr_ofs_dp_1_4}[14], {odr_awb_std_1_4}[15], {odr_awb_sat_1_4}[16], {aestatistics_2_1}[17], {odr_ae_1_4}[18], {odr_af_std_1_4}[19], {ifd_gmv_1_4}[20], {gmv_statistics_1_1}[21], {odr_gmv_feature_1_4}[22], {odr_gmv_match_1_4}[23] }
    uint8_t systemApisSizes[38] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[38] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*image_upscaler_1_1*/, 25 /*cas_1_1*/, 26 /*odr_ofs_mp_1_4*/, 27 /*b2i_ds_output_1_1*/, 28 /*odr_ofs_dp_1_4*/, 19 /*rgbs_grid_1_1*/, 29 /*odr_awb_std_1_4*/, 30 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 31 /*aestatistics_2_1*/, 32 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_gmv_1_4*/, 35 /*gmv_statistics_1_1*/, 36 /*odr_gmv_feature_1_4*/, 37 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void SwGdcOuterNode::Init(SwGdcOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(4, NodeTypes::Sw, 1, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[1] = {5637 /*gdc7_1*/};
    uint64_t kernelsRcbBitmap[] = {0x1, 0x0}; // { gdc7_1[0] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x0, 0x0}; // {{gdc7_1}[0] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1, 0x0}; // {{gdc7_1}[0] }
    uint8_t systemApisSizes[1] = {0 /*gdc7_1*/};
    uint16_t runKernelConfigOrder[1] = {0 /*gdc7_1*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, nullptr, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerNoGmvWithTnrNoSapOuterNode::Init(LbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 46, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[46] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DD9FEF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], tnr_scaler_lb_1_1[25], odr_awb_std_1_4[26], odr_awb_sat_1_4[27], aestatistics_2_1[28], odr_ae_1_4[29], odr_af_std_1_4[30], ifd_tnr_sp_bc_yuv4nm1_1_4[31], ifd_tnr_sp_bc_rs4nm1_1_4[32], odr_tnr_sp_bc_rs4n_1_4[35], ifd_tnr_fp_blend_yuvnm1_1_4[36], odr_tnr_fp_yuvn_1_4[38], tnr_scaler_fp_1_1[39], image_upscaler_1_1[40], odr_ofs_mp_1_4[42], b2i_ds_output_1_1[43], odr_ofs_dp_1_4[44], odr_tnr_scale_fp_yuv4n_1_4[45] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3233FD800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[15], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[16], {odr_ofs_dp_1_4}[17], {odr_tnr_scale_fp_yuv4n_1_4}[18] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFBFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {tnr7_spatial_1_1}[10], {tnr_scaler_lb_1_1}[11], {odr_awb_std_1_4}[12], {odr_awb_sat_1_4}[13], {aestatistics_2_1}[14], {odr_ae_1_4}[15], {odr_af_std_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {tnr7_ims_1_2, tnr7_bc_1_2}[19], {odr_tnr_sp_bc_rs4n_1_4}[20], {ifd_tnr_fp_blend_yuvnm1_1_4}[21], {tnr7_blend_1_1}[22], {odr_tnr_fp_yuvn_1_4}[23], {tnr_scaler_fp_1_1}[24], {image_upscaler_1_1}[25], {cas_1_1}[26], {odr_ofs_mp_1_4}[27], {b2i_ds_output_1_1}[28], {odr_ofs_dp_1_4}[29], {odr_tnr_scale_fp_yuv4n_1_4}[30] }
    uint8_t systemApisSizes[46] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[46] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*tnr7_spatial_1_1*/, 25 /*tnr_scaler_lb_1_1*/, 19 /*rgbs_grid_1_1*/, 26 /*odr_awb_std_1_4*/, 27 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 28 /*aestatistics_2_1*/, 29 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 30 /*odr_af_std_1_4*/, 31 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 32 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 33 /*tnr7_ims_1_2*/, 34 /*tnr7_bc_1_2*/, 35 /*odr_tnr_sp_bc_rs4n_1_4*/, 36 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 37 /*tnr7_blend_1_1*/, 40 /*image_upscaler_1_1*/, 41 /*cas_1_1*/, 42 /*odr_ofs_mp_1_4*/, 43 /*b2i_ds_output_1_1*/, 44 /*odr_ofs_dp_1_4*/, 38 /*odr_tnr_fp_yuvn_1_4*/, 39 /*tnr_scaler_fp_1_1*/, 45 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerWithGmvWithTnrNoSapOuterNode::Init(LbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 50, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[50] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DD9FFEF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], tnr_scaler_lb_1_1[25], odr_awb_std_1_4[26], odr_awb_sat_1_4[27], aestatistics_2_1[28], odr_ae_1_4[29], odr_af_std_1_4[30], ifd_gmv_1_4[31], gmv_statistics_1_1[32], odr_gmv_feature_1_4[33], odr_gmv_match_1_4[34], ifd_tnr_sp_bc_yuv4nm1_1_4[35], ifd_tnr_sp_bc_rs4nm1_1_4[36], odr_tnr_sp_bc_rs4n_1_4[39], ifd_tnr_fp_blend_yuvnm1_1_4[40], odr_tnr_fp_yuvn_1_4[42], tnr_scaler_fp_1_1[43], image_upscaler_1_1[44], odr_ofs_mp_1_4[46], b2i_ds_output_1_1[47], odr_ofs_dp_1_4[48], odr_tnr_scale_fp_yuv4n_1_4[49] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3233FFD800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {gmv_statistics_1_1}[12], {odr_gmv_feature_1_4}[13], {odr_gmv_match_1_4}[14], {ifd_tnr_sp_bc_yuv4nm1_1_4}[15], {ifd_tnr_sp_bc_rs4nm1_1_4}[16], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[19], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[20], {odr_ofs_dp_1_4}[21], {odr_tnr_scale_fp_yuv4n_1_4}[22] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFBFFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {tnr7_spatial_1_1}[10], {tnr_scaler_lb_1_1}[11], {odr_awb_std_1_4}[12], {odr_awb_sat_1_4}[13], {aestatistics_2_1}[14], {odr_ae_1_4}[15], {odr_af_std_1_4}[16], {ifd_gmv_1_4}[17], {gmv_statistics_1_1}[18], {odr_gmv_feature_1_4}[19], {odr_gmv_match_1_4}[20], {ifd_tnr_sp_bc_yuv4nm1_1_4}[21], {ifd_tnr_sp_bc_rs4nm1_1_4}[22], {tnr7_ims_1_2, tnr7_bc_1_2}[23], {odr_tnr_sp_bc_rs4n_1_4}[24], {ifd_tnr_fp_blend_yuvnm1_1_4}[25], {tnr7_blend_1_1}[26], {odr_tnr_fp_yuvn_1_4}[27], {tnr_scaler_fp_1_1}[28], {image_upscaler_1_1}[29], {cas_1_1}[30], {odr_ofs_mp_1_4}[31], {b2i_ds_output_1_1}[32], {odr_ofs_dp_1_4}[33], {odr_tnr_scale_fp_yuv4n_1_4}[34] }
    uint8_t systemApisSizes[50] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[50] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*tnr7_spatial_1_1*/, 25 /*tnr_scaler_lb_1_1*/, 19 /*rgbs_grid_1_1*/, 26 /*odr_awb_std_1_4*/, 27 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 28 /*aestatistics_2_1*/, 29 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 30 /*odr_af_std_1_4*/, 31 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 33 /*odr_gmv_feature_1_4*/, 34 /*odr_gmv_match_1_4*/, 35 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 36 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 37 /*tnr7_ims_1_2*/, 38 /*tnr7_bc_1_2*/, 39 /*odr_tnr_sp_bc_rs4n_1_4*/, 40 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 41 /*tnr7_blend_1_1*/, 44 /*image_upscaler_1_1*/, 45 /*cas_1_1*/, 46 /*odr_ofs_mp_1_4*/, 47 /*b2i_ds_output_1_1*/, 48 /*odr_ofs_dp_1_4*/, 42 /*odr_tnr_fp_yuvn_1_4*/, 43 /*tnr_scaler_fp_1_1*/, 49 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void IsysWithCvOuterNode::Init(IsysWithCvOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 4, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[4] = {36280 /*crop_bpp_adjust_1_0*/, 5420 /*upipe_1_0*/, 26150 /*isys_drainer_1_0*/, 11470 /*is_odr_a*/};
    uint64_t kernelsRcbBitmap[] = {0xB, 0x0}; // { crop_bpp_adjust_1_0[0], upipe_1_0[1], is_odr_a[3] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xE, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xF, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3] }
    uint8_t systemApisSizes[4] = {0 /*crop_bpp_adjust_1_0*/, 34 /*upipe_1_0*/, 20 /*isys_drainer_1_0*/, 0 /*is_odr_a*/};
    uint16_t runKernelConfigOrder[4] = {0 /*crop_bpp_adjust_1_0*/, 1 /*upipe_1_0*/, 2 /*isys_drainer_1_0*/, 3 /*is_odr_a*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void SwSegnetOuterNode::Init(SwSegnetOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(3, NodeTypes::Sw, 0, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerWithGmvWithTnrWithSapOuterNode::Init(LbffBayerWithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 62, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[62] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BF77D63187FFE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_gmv_1_4[17], ifd_tnr_sp_bc_yuv4nm1_1_4[18], ifd_tnr_sp_bc_rs4nm1_1_4[19], ifd_tnr_fp_blend_yuvnm1_1_4[20], ifd_segmap_bnlm_1_4[21], smurf_bnlm_1_0[22], ifd_segmap_xnr_1_4[27], smurf_xnr_1_0[28], ifd_segmap_acm_1_4[32], smurf_acm_1_0[33], b2i_ds_1_1[37], lbff_crop_espa_1_4[38], tnr_scaler_lb_1_1[40], gmv_statistics_1_1[42], odr_gmv_feature_1_4[43], odr_gmv_match_1_4[44], ifd_segmap_tnr_bc_1_4[45], smurf_tnr_bc_1_0[46], odr_tnr_sp_bc_rs4n_1_4[48], ifd_segmap_tnr_blend_1_4[49], smurf_tnr_blend_1_0[50], odr_tnr_fp_yuvn_1_4[52], tnr_scaler_fp_1_1[53], image_upscaler_1_1[54], odr_tnr_scale_fp_yuv4n_1_4[55], ifd_segmap_cas_1_4[56], smurf_cas_1_0[57], odr_ofs_mp_1_4[59], b2i_ds_output_1_1[60], odr_ofs_dp_1_4[61] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x278EFEC738FFF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_gmv_1_4}[9], {ifd_tnr_sp_bc_yuv4nm1_1_4}[10], {ifd_tnr_sp_bc_rs4nm1_1_4}[11], {ifd_tnr_fp_blend_yuvnm1_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0}[18], {ifd_segmap_acm_1_4}[19], {smurf_acm_1_0}[20], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[21], {lbff_crop_espa_1_4}[22], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[23], {tnr7_ims_1_2}[24], {gmv_statistics_1_1}[25], {odr_gmv_feature_1_4}[26], {odr_gmv_match_1_4}[27], {ifd_segmap_tnr_bc_1_4}[28], {smurf_tnr_bc_1_0}[29], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[30], {ifd_segmap_tnr_blend_1_4}[31], {smurf_tnr_blend_1_0}[32], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[33], {odr_tnr_scale_fp_yuv4n_1_4}[34], {ifd_segmap_cas_1_4}[35], {smurf_cas_1_0}[36], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[37], {odr_ofs_dp_1_4}[38] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFFFE738FFFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {ifd_tnr_sp_bc_yuv4nm1_1_4}[14], {ifd_tnr_sp_bc_rs4nm1_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1}[25], {b2i_ds_1_1}[26], {lbff_crop_espa_1_4}[27], {tnr7_spatial_1_1}[28], {tnr_scaler_lb_1_1}[29], {tnr7_ims_1_2}[30], {gmv_statistics_1_1}[31], {odr_gmv_feature_1_4}[32], {odr_gmv_match_1_4}[33], {ifd_segmap_tnr_bc_1_4}[34], {smurf_tnr_bc_1_0}[35], {tnr7_bc_1_2}[36], {odr_tnr_sp_bc_rs4n_1_4}[37], {ifd_segmap_tnr_blend_1_4}[38], {smurf_tnr_blend_1_0}[39], {tnr7_blend_1_1}[40], {odr_tnr_fp_yuvn_1_4}[41], {tnr_scaler_fp_1_1}[42], {image_upscaler_1_1}[43], {odr_tnr_scale_fp_yuv4n_1_4}[44], {ifd_segmap_cas_1_4}[45], {smurf_cas_1_0}[46], {cas_1_1}[47], {odr_ofs_mp_1_4}[48], {b2i_ds_output_1_1}[49], {odr_ofs_dp_1_4}[50] }
    uint8_t systemApisSizes[62] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[62] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 23 /*bnlm_3_4*/, 24 /*bxt_demosaic*/, 25 /*vcsc_2_0_b*/, 26 /*gltm_2_0*/, 29 /*xnr_5_4*/, 30 /*vcr_3_1*/, 31 /*glim_2_0*/, 34 /*acm_1_2*/, 35 /*gammatm_v4*/, 36 /*csc_1_1*/, 37 /*b2i_ds_1_1*/, 38 /*lbff_crop_espa_1_4*/, 39 /*tnr7_spatial_1_1*/, 40 /*tnr_scaler_lb_1_1*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_gmv_1_4*/, 42 /*gmv_statistics_1_1*/, 43 /*odr_gmv_feature_1_4*/, 44 /*odr_gmv_match_1_4*/, 18 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 19 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 41 /*tnr7_ims_1_2*/, 47 /*tnr7_bc_1_2*/, 48 /*odr_tnr_sp_bc_rs4n_1_4*/, 20 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 51 /*tnr7_blend_1_1*/, 54 /*image_upscaler_1_1*/, 58 /*cas_1_1*/, 59 /*odr_ofs_mp_1_4*/, 60 /*b2i_ds_output_1_1*/, 61 /*odr_ofs_dp_1_4*/, 52 /*odr_tnr_fp_yuvn_1_4*/, 53 /*tnr_scaler_fp_1_1*/, 55 /*odr_tnr_scale_fp_yuv4n_1_4*/, 21 /*ifd_segmap_bnlm_1_4*/, 27 /*ifd_segmap_xnr_1_4*/, 32 /*ifd_segmap_acm_1_4*/, 45 /*ifd_segmap_tnr_bc_1_4*/, 49 /*ifd_segmap_tnr_blend_1_4*/, 56 /*ifd_segmap_cas_1_4*/, 22 /*smurf_bnlm_1_0*/, 28 /*smurf_xnr_1_0*/, 33 /*smurf_acm_1_0*/, 46 /*smurf_tnr_bc_1_0*/, 50 /*smurf_tnr_blend_1_0*/, 57 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[23].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void SwScalerOuterNode::Init(SwScalerOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(5, NodeTypes::Sw, 1, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[1] = {19706 /*sw_scaler*/};
    uint64_t kernelsRcbBitmap[] = {0x1, 0x0}; // { sw_scaler[0] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x0, 0x0}; // {{sw_scaler}[0] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1, 0x0}; // {{sw_scaler}[0] }
    uint8_t systemApisSizes[1] = {5 /*sw_scaler*/};
    uint16_t runKernelConfigOrder[1] = {0 /*sw_scaler*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void SwNntmOuterNode::Init(SwNntmOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(6, NodeTypes::Sw, 1, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[1] = {46539 /*nntm_1_0*/};
    uint64_t kernelsRcbBitmap[] = {0x0, 0x0}; // {  }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x0, 0x0}; // {{nntm_1_0}[0] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1, 0x0}; // {{nntm_1_0}[0] }
    uint8_t systemApisSizes[1] = {5 /*nntm_1_0*/};
    uint16_t runKernelConfigOrder[1] = {0 /*nntm_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, nullptr, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerNoGmvWithTnrWithSapOuterNode::Init(LbffBayerNoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 58, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[58] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BF76B18C3FFE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_tnr_sp_bc_yuv4nm1_1_4[17], ifd_tnr_sp_bc_rs4nm1_1_4[18], ifd_tnr_fp_blend_yuvnm1_1_4[19], ifd_segmap_bnlm_1_4[20], smurf_bnlm_1_0[21], ifd_segmap_xnr_1_4[26], smurf_xnr_1_0[27], ifd_segmap_acm_1_4[31], smurf_acm_1_0[32], b2i_ds_1_1[36], lbff_crop_espa_1_4[37], tnr_scaler_lb_1_1[39], ifd_segmap_tnr_bc_1_4[41], smurf_tnr_bc_1_0[42], odr_tnr_sp_bc_rs4n_1_4[44], ifd_segmap_tnr_blend_1_4[45], smurf_tnr_blend_1_0[46], odr_tnr_fp_yuvn_1_4[48], tnr_scaler_fp_1_1[49], image_upscaler_1_1[50], odr_tnr_scale_fp_yuv4n_1_4[51], ifd_segmap_cas_1_4[52], smurf_cas_1_0[53], odr_ofs_mp_1_4[55], b2i_ds_output_1_1[56], odr_ofs_dp_1_4[57] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x278EF639C7FF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_tnr_sp_bc_yuv4nm1_1_4}[9], {ifd_tnr_sp_bc_rs4nm1_1_4}[10], {ifd_tnr_fp_blend_yuvnm1_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0}[17], {ifd_segmap_acm_1_4}[18], {smurf_acm_1_0}[19], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[20], {lbff_crop_espa_1_4}[21], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[22], {tnr7_ims_1_2}[23], {ifd_segmap_tnr_bc_1_4}[24], {smurf_tnr_bc_1_0}[25], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[26], {ifd_segmap_tnr_blend_1_4}[27], {smurf_tnr_blend_1_0}[28], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[29], {odr_tnr_scale_fp_yuv4n_1_4}[30], {ifd_segmap_cas_1_4}[31], {smurf_cas_1_0}[32], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[33], {odr_ofs_dp_1_4}[34] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFFF39C7FFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {ifd_tnr_fp_blend_yuvnm1_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1}[24], {b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {tnr7_spatial_1_1}[27], {tnr_scaler_lb_1_1}[28], {tnr7_ims_1_2}[29], {ifd_segmap_tnr_bc_1_4}[30], {smurf_tnr_bc_1_0}[31], {tnr7_bc_1_2}[32], {odr_tnr_sp_bc_rs4n_1_4}[33], {ifd_segmap_tnr_blend_1_4}[34], {smurf_tnr_blend_1_0}[35], {tnr7_blend_1_1}[36], {odr_tnr_fp_yuvn_1_4}[37], {tnr_scaler_fp_1_1}[38], {image_upscaler_1_1}[39], {odr_tnr_scale_fp_yuv4n_1_4}[40], {ifd_segmap_cas_1_4}[41], {smurf_cas_1_0}[42], {cas_1_1}[43], {odr_ofs_mp_1_4}[44], {b2i_ds_output_1_1}[45], {odr_ofs_dp_1_4}[46] }
    uint8_t systemApisSizes[58] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[58] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 22 /*bnlm_3_4*/, 23 /*bxt_demosaic*/, 24 /*vcsc_2_0_b*/, 25 /*gltm_2_0*/, 28 /*xnr_5_4*/, 29 /*vcr_3_1*/, 30 /*glim_2_0*/, 33 /*acm_1_2*/, 34 /*gammatm_v4*/, 35 /*csc_1_1*/, 36 /*b2i_ds_1_1*/, 37 /*lbff_crop_espa_1_4*/, 38 /*tnr7_spatial_1_1*/, 39 /*tnr_scaler_lb_1_1*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 18 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 40 /*tnr7_ims_1_2*/, 43 /*tnr7_bc_1_2*/, 44 /*odr_tnr_sp_bc_rs4n_1_4*/, 19 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 47 /*tnr7_blend_1_1*/, 50 /*image_upscaler_1_1*/, 54 /*cas_1_1*/, 55 /*odr_ofs_mp_1_4*/, 56 /*b2i_ds_output_1_1*/, 57 /*odr_ofs_dp_1_4*/, 48 /*odr_tnr_fp_yuvn_1_4*/, 49 /*tnr_scaler_fp_1_1*/, 51 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20 /*ifd_segmap_bnlm_1_4*/, 26 /*ifd_segmap_xnr_1_4*/, 31 /*ifd_segmap_acm_1_4*/, 41 /*ifd_segmap_tnr_bc_1_4*/, 45 /*ifd_segmap_tnr_blend_1_4*/, 52 /*ifd_segmap_cas_1_4*/, 21 /*smurf_bnlm_1_0*/, 27 /*smurf_xnr_1_0*/, 32 /*smurf_acm_1_0*/, 42 /*smurf_tnr_bc_1_0*/, 46 /*smurf_tnr_blend_1_0*/, 53 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[22].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void IsysPdaf2WithCvOuterNode::Init(IsysPdaf2WithCvOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 5, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[5] = {36280 /*crop_bpp_adjust_1_0*/, 5420 /*upipe_1_0*/, 26150 /*isys_drainer_1_0*/, 11470 /*is_odr_a*/, 55449 /*is_odr_b*/};
    uint64_t kernelsRcbBitmap[] = {0x1B, 0x0}; // { crop_bpp_adjust_1_0[0], upipe_1_0[1], is_odr_a[3], is_odr_b[4] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1E, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3], {is_odr_b}[4] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1F, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3], {is_odr_b}[4] }
    uint8_t systemApisSizes[5] = {0 /*crop_bpp_adjust_1_0*/, 34 /*upipe_1_0*/, 20 /*isys_drainer_1_0*/, 0 /*is_odr_a*/, 0 /*is_odr_b*/};
    uint16_t runKernelConfigOrder[5] = {0 /*crop_bpp_adjust_1_0*/, 1 /*upipe_1_0*/, 2 /*isys_drainer_1_0*/, 3 /*is_odr_a*/, 4 /*is_odr_b*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2NoGmvWithTnrWithSapOuterNode::Init(LbffBayerPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 62, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[62] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BF76B18C3FFFE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_pdaf_1_4[17], pext_1_0[18], pafstatistics_1_2[19], odr_pdaf_1_4[20], ifd_tnr_sp_bc_yuv4nm1_1_4[21], ifd_tnr_sp_bc_rs4nm1_1_4[22], ifd_tnr_fp_blend_yuvnm1_1_4[23], ifd_segmap_bnlm_1_4[24], smurf_bnlm_1_0[25], ifd_segmap_xnr_1_4[30], smurf_xnr_1_0[31], ifd_segmap_acm_1_4[35], smurf_acm_1_0[36], b2i_ds_1_1[40], lbff_crop_espa_1_4[41], tnr_scaler_lb_1_1[43], ifd_segmap_tnr_bc_1_4[45], smurf_tnr_bc_1_0[46], odr_tnr_sp_bc_rs4n_1_4[48], ifd_segmap_tnr_blend_1_4[49], smurf_tnr_blend_1_0[50], odr_tnr_fp_yuvn_1_4[52], tnr_scaler_fp_1_1[53], image_upscaler_1_1[54], odr_tnr_scale_fp_yuv4n_1_4[55], ifd_segmap_cas_1_4[56], smurf_cas_1_0[57], odr_ofs_mp_1_4[59], b2i_ds_output_1_1[60], odr_ofs_dp_1_4[61] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x278EF639C7FFF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {ifd_tnr_fp_blend_yuvnm1_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[24], {lbff_crop_espa_1_4}[25], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[26], {tnr7_ims_1_2}[27], {ifd_segmap_tnr_bc_1_4}[28], {smurf_tnr_bc_1_0}[29], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[30], {ifd_segmap_tnr_blend_1_4}[31], {smurf_tnr_blend_1_0}[32], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[33], {odr_tnr_scale_fp_yuv4n_1_4}[34], {ifd_segmap_cas_1_4}[35], {smurf_cas_1_0}[36], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[37], {odr_ofs_dp_1_4}[38] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFFF39C7FFFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {ifd_tnr_fp_blend_yuvnm1_1_4}[19], {ifd_segmap_bnlm_1_4}[20], {smurf_bnlm_1_0}[21], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[22], {ifd_segmap_xnr_1_4}[23], {smurf_xnr_1_0}[24], {xnr_5_4, vcr_3_1, glim_2_0}[25], {ifd_segmap_acm_1_4}[26], {smurf_acm_1_0}[27], {acm_1_2, gammatm_v4, csc_1_1}[28], {b2i_ds_1_1}[29], {lbff_crop_espa_1_4}[30], {tnr7_spatial_1_1}[31], {tnr_scaler_lb_1_1}[32], {tnr7_ims_1_2}[33], {ifd_segmap_tnr_bc_1_4}[34], {smurf_tnr_bc_1_0}[35], {tnr7_bc_1_2}[36], {odr_tnr_sp_bc_rs4n_1_4}[37], {ifd_segmap_tnr_blend_1_4}[38], {smurf_tnr_blend_1_0}[39], {tnr7_blend_1_1}[40], {odr_tnr_fp_yuvn_1_4}[41], {tnr_scaler_fp_1_1}[42], {image_upscaler_1_1}[43], {odr_tnr_scale_fp_yuv4n_1_4}[44], {ifd_segmap_cas_1_4}[45], {smurf_cas_1_0}[46], {cas_1_1}[47], {odr_ofs_mp_1_4}[48], {b2i_ds_output_1_1}[49], {odr_ofs_dp_1_4}[50] }
    uint8_t systemApisSizes[62] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[62] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 26 /*bnlm_3_4*/, 27 /*bxt_demosaic*/, 28 /*vcsc_2_0_b*/, 29 /*gltm_2_0*/, 32 /*xnr_5_4*/, 33 /*vcr_3_1*/, 34 /*glim_2_0*/, 37 /*acm_1_2*/, 38 /*gammatm_v4*/, 39 /*csc_1_1*/, 40 /*b2i_ds_1_1*/, 41 /*lbff_crop_espa_1_4*/, 42 /*tnr7_spatial_1_1*/, 43 /*tnr_scaler_lb_1_1*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_pdaf_1_4*/, 18 /*pext_1_0*/, 19 /*pafstatistics_1_2*/, 20 /*odr_pdaf_1_4*/, 21 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 22 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 44 /*tnr7_ims_1_2*/, 47 /*tnr7_bc_1_2*/, 48 /*odr_tnr_sp_bc_rs4n_1_4*/, 23 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 51 /*tnr7_blend_1_1*/, 54 /*image_upscaler_1_1*/, 58 /*cas_1_1*/, 59 /*odr_ofs_mp_1_4*/, 60 /*b2i_ds_output_1_1*/, 61 /*odr_ofs_dp_1_4*/, 52 /*odr_tnr_fp_yuvn_1_4*/, 53 /*tnr_scaler_fp_1_1*/, 55 /*odr_tnr_scale_fp_yuv4n_1_4*/, 24 /*ifd_segmap_bnlm_1_4*/, 30 /*ifd_segmap_xnr_1_4*/, 35 /*ifd_segmap_acm_1_4*/, 45 /*ifd_segmap_tnr_bc_1_4*/, 49 /*ifd_segmap_tnr_blend_1_4*/, 56 /*ifd_segmap_cas_1_4*/, 25 /*smurf_bnlm_1_0*/, 31 /*smurf_xnr_1_0*/, 36 /*smurf_acm_1_0*/, 46 /*smurf_tnr_bc_1_0*/, 50 /*smurf_tnr_blend_1_0*/, 57 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[26].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2WithTnrWithSapOuterNode::Init(LbffBayerPdaf2WithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 66, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[66] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xBF77D63187FFFE31, 0x3}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_pdaf_1_4[17], pext_1_0[18], pafstatistics_1_2[19], odr_pdaf_1_4[20], ifd_gmv_1_4[21], ifd_tnr_sp_bc_yuv4nm1_1_4[22], ifd_tnr_sp_bc_rs4nm1_1_4[23], ifd_tnr_fp_blend_yuvnm1_1_4[24], ifd_segmap_bnlm_1_4[25], smurf_bnlm_1_0[26], ifd_segmap_xnr_1_4[31], smurf_xnr_1_0[32], ifd_segmap_acm_1_4[36], smurf_acm_1_0[37], b2i_ds_1_1[41], lbff_crop_espa_1_4[42], tnr_scaler_lb_1_1[44], gmv_statistics_1_1[46], odr_gmv_feature_1_4[47], odr_gmv_match_1_4[48], ifd_segmap_tnr_bc_1_4[49], smurf_tnr_bc_1_0[50], odr_tnr_sp_bc_rs4n_1_4[52], ifd_segmap_tnr_blend_1_4[53], smurf_tnr_blend_1_0[54], odr_tnr_fp_yuvn_1_4[56], tnr_scaler_fp_1_1[57], image_upscaler_1_1[58], odr_tnr_scale_fp_yuv4n_1_4[59], ifd_segmap_cas_1_4[60], smurf_cas_1_0[61], odr_ofs_mp_1_4[63], b2i_ds_output_1_1[64], odr_ofs_dp_1_4[65] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x78EFEC738FFFF062, 0x2}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_gmv_1_4}[13], {ifd_tnr_sp_bc_yuv4nm1_1_4}[14], {ifd_tnr_sp_bc_rs4nm1_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[27], {tnr7_ims_1_2}[28], {gmv_statistics_1_1}[29], {odr_gmv_feature_1_4}[30], {odr_gmv_match_1_4}[31], {ifd_segmap_tnr_bc_1_4}[32], {smurf_tnr_bc_1_0}[33], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[34], {ifd_segmap_tnr_blend_1_4}[35], {smurf_tnr_blend_1_0}[36], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[37], {odr_tnr_scale_fp_yuv4n_1_4}[38], {ifd_segmap_cas_1_4}[39], {smurf_cas_1_0}[40], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[41], {odr_ofs_dp_1_4}[42] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFE738FFFFE73, 0x3}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_gmv_1_4}[17], {ifd_tnr_sp_bc_yuv4nm1_1_4}[18], {ifd_tnr_sp_bc_rs4nm1_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {ifd_segmap_bnlm_1_4}[21], {smurf_bnlm_1_0}[22], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[23], {ifd_segmap_xnr_1_4}[24], {smurf_xnr_1_0}[25], {xnr_5_4, vcr_3_1, glim_2_0}[26], {ifd_segmap_acm_1_4}[27], {smurf_acm_1_0}[28], {acm_1_2, gammatm_v4, csc_1_1}[29], {b2i_ds_1_1}[30], {lbff_crop_espa_1_4}[31], {tnr7_spatial_1_1}[32], {tnr_scaler_lb_1_1}[33], {tnr7_ims_1_2}[34], {gmv_statistics_1_1}[35], {odr_gmv_feature_1_4}[36], {odr_gmv_match_1_4}[37], {ifd_segmap_tnr_bc_1_4}[38], {smurf_tnr_bc_1_0}[39], {tnr7_bc_1_2}[40], {odr_tnr_sp_bc_rs4n_1_4}[41], {ifd_segmap_tnr_blend_1_4}[42], {smurf_tnr_blend_1_0}[43], {tnr7_blend_1_1}[44], {odr_tnr_fp_yuvn_1_4}[45], {tnr_scaler_fp_1_1}[46], {image_upscaler_1_1}[47], {odr_tnr_scale_fp_yuv4n_1_4}[48], {ifd_segmap_cas_1_4}[49], {smurf_cas_1_0}[50], {cas_1_1}[51], {odr_ofs_mp_1_4}[52], {b2i_ds_output_1_1}[53], {odr_ofs_dp_1_4}[54] }
    uint8_t systemApisSizes[66] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[66] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 27 /*bnlm_3_4*/, 28 /*bxt_demosaic*/, 29 /*vcsc_2_0_b*/, 30 /*gltm_2_0*/, 33 /*xnr_5_4*/, 34 /*vcr_3_1*/, 35 /*glim_2_0*/, 38 /*acm_1_2*/, 39 /*gammatm_v4*/, 40 /*csc_1_1*/, 41 /*b2i_ds_1_1*/, 42 /*lbff_crop_espa_1_4*/, 43 /*tnr7_spatial_1_1*/, 44 /*tnr_scaler_lb_1_1*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_pdaf_1_4*/, 18 /*pext_1_0*/, 19 /*pafstatistics_1_2*/, 20 /*odr_pdaf_1_4*/, 21 /*ifd_gmv_1_4*/, 46 /*gmv_statistics_1_1*/, 47 /*odr_gmv_feature_1_4*/, 48 /*odr_gmv_match_1_4*/, 22 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 23 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 45 /*tnr7_ims_1_2*/, 51 /*tnr7_bc_1_2*/, 52 /*odr_tnr_sp_bc_rs4n_1_4*/, 24 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 55 /*tnr7_blend_1_1*/, 58 /*image_upscaler_1_1*/, 62 /*cas_1_1*/, 63 /*odr_ofs_mp_1_4*/, 64 /*b2i_ds_output_1_1*/, 65 /*odr_ofs_dp_1_4*/, 56 /*odr_tnr_fp_yuvn_1_4*/, 57 /*tnr_scaler_fp_1_1*/, 59 /*odr_tnr_scale_fp_yuv4n_1_4*/, 25 /*ifd_segmap_bnlm_1_4*/, 31 /*ifd_segmap_xnr_1_4*/, 36 /*ifd_segmap_acm_1_4*/, 49 /*ifd_segmap_tnr_bc_1_4*/, 53 /*ifd_segmap_tnr_blend_1_4*/, 60 /*ifd_segmap_cas_1_4*/, 26 /*smurf_bnlm_1_0*/, 32 /*smurf_xnr_1_0*/, 37 /*smurf_acm_1_0*/, 50 /*smurf_tnr_bc_1_0*/, 54 /*smurf_tnr_blend_1_0*/, 61 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[27].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3NoGmvWithTnrWithSapOuterNode::Init(LbffBayerPdaf3NoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 61, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[61] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1DFBB58C61FFF1F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[12], ccm_3a_2_0[13], fr_grid_1_0[14], odr_awb_std_1_4[15], odr_awb_sat_1_4[16], aestatistics_2_1[17], odr_ae_1_4[18], odr_af_std_1_4[19], ifd_tnr_sp_bc_yuv4nm1_1_4[20], ifd_tnr_sp_bc_rs4nm1_1_4[21], ifd_tnr_fp_blend_yuvnm1_1_4[22], ifd_segmap_bnlm_1_4[23], smurf_bnlm_1_0[24], ifd_segmap_xnr_1_4[29], smurf_xnr_1_0[30], ifd_segmap_acm_1_4[34], smurf_acm_1_0[35], b2i_ds_1_1[39], lbff_crop_espa_1_4[40], tnr_scaler_lb_1_1[42], ifd_segmap_tnr_bc_1_4[44], smurf_tnr_bc_1_0[45], odr_tnr_sp_bc_rs4n_1_4[47], ifd_segmap_tnr_blend_1_4[48], smurf_tnr_blend_1_0[49], odr_tnr_fp_yuvn_1_4[51], tnr_scaler_fp_1_1[52], image_upscaler_1_1[53], odr_tnr_scale_fp_yuv4n_1_4[54], ifd_segmap_cas_1_4[55], smurf_cas_1_0[56], odr_ofs_mp_1_4[58], b2i_ds_output_1_1[59], odr_ofs_dp_1_4[60] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x13C77B1CE3FF83C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {ifd_tnr_fp_blend_yuvnm1_1_4}[13], {ifd_segmap_bnlm_1_4}[14], {smurf_bnlm_1_0}[15], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[16], {ifd_segmap_xnr_1_4}[17], {smurf_xnr_1_0}[18], {xnr_5_4, vcr_3_1, glim_2_0}[19], {ifd_segmap_acm_1_4}[20], {smurf_acm_1_0}[21], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[24], {tnr7_ims_1_2}[25], {ifd_segmap_tnr_bc_1_4}[26], {smurf_tnr_bc_1_0}[27], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[28], {ifd_segmap_tnr_blend_1_4}[29], {smurf_tnr_blend_1_0}[30], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[31], {odr_tnr_scale_fp_yuv4n_1_4}[32], {ifd_segmap_cas_1_4}[33], {smurf_cas_1_0}[34], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFFFF9CE3FFF3F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_tnr_sp_bc_yuv4nm1_1_4}[16], {ifd_tnr_sp_bc_rs4nm1_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {ifd_segmap_bnlm_1_4}[19], {smurf_bnlm_1_0}[20], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[21], {ifd_segmap_xnr_1_4}[22], {smurf_xnr_1_0}[23], {xnr_5_4, vcr_3_1, glim_2_0}[24], {ifd_segmap_acm_1_4}[25], {smurf_acm_1_0}[26], {acm_1_2, gammatm_v4, csc_1_1}[27], {b2i_ds_1_1}[28], {lbff_crop_espa_1_4}[29], {tnr7_spatial_1_1}[30], {tnr_scaler_lb_1_1}[31], {tnr7_ims_1_2}[32], {ifd_segmap_tnr_bc_1_4}[33], {smurf_tnr_bc_1_0}[34], {tnr7_bc_1_2}[35], {odr_tnr_sp_bc_rs4n_1_4}[36], {ifd_segmap_tnr_blend_1_4}[37], {smurf_tnr_blend_1_0}[38], {tnr7_blend_1_1}[39], {odr_tnr_fp_yuvn_1_4}[40], {tnr_scaler_fp_1_1}[41], {image_upscaler_1_1}[42], {odr_tnr_scale_fp_yuv4n_1_4}[43], {ifd_segmap_cas_1_4}[44], {smurf_cas_1_0}[45], {cas_1_1}[46], {odr_ofs_mp_1_4}[47], {b2i_ds_output_1_1}[48], {odr_ofs_dp_1_4}[49] }
    uint8_t systemApisSizes[61] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[61] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 25 /*bnlm_3_4*/, 26 /*bxt_demosaic*/, 27 /*vcsc_2_0_b*/, 28 /*gltm_2_0*/, 31 /*xnr_5_4*/, 32 /*vcr_3_1*/, 33 /*glim_2_0*/, 36 /*acm_1_2*/, 37 /*gammatm_v4*/, 38 /*csc_1_1*/, 39 /*b2i_ds_1_1*/, 40 /*lbff_crop_espa_1_4*/, 41 /*tnr7_spatial_1_1*/, 42 /*tnr_scaler_lb_1_1*/, 12 /*rgbs_grid_1_1*/, 15 /*odr_awb_std_1_4*/, 16 /*odr_awb_sat_1_4*/, 13 /*ccm_3a_2_0*/, 17 /*aestatistics_2_1*/, 18 /*odr_ae_1_4*/, 14 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 21 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 43 /*tnr7_ims_1_2*/, 46 /*tnr7_bc_1_2*/, 47 /*odr_tnr_sp_bc_rs4n_1_4*/, 22 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 50 /*tnr7_blend_1_1*/, 53 /*image_upscaler_1_1*/, 57 /*cas_1_1*/, 58 /*odr_ofs_mp_1_4*/, 59 /*b2i_ds_output_1_1*/, 60 /*odr_ofs_dp_1_4*/, 51 /*odr_tnr_fp_yuvn_1_4*/, 52 /*tnr_scaler_fp_1_1*/, 54 /*odr_tnr_scale_fp_yuv4n_1_4*/, 23 /*ifd_segmap_bnlm_1_4*/, 29 /*ifd_segmap_xnr_1_4*/, 34 /*ifd_segmap_acm_1_4*/, 44 /*ifd_segmap_tnr_bc_1_4*/, 48 /*ifd_segmap_tnr_blend_1_4*/, 55 /*ifd_segmap_cas_1_4*/, 24 /*smurf_bnlm_1_0*/, 30 /*smurf_xnr_1_0*/, 35 /*smurf_acm_1_0*/, 45 /*smurf_tnr_bc_1_0*/, 49 /*smurf_tnr_blend_1_0*/, 56 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[25].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode::Init(LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 63, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[63] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77EED63187FFFC71, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[10], ccm_3a_2_0[11], fr_grid_1_0[12], odr_awb_std_1_4[13], odr_awb_sat_1_4[14], aestatistics_2_1[15], odr_ae_1_4[16], odr_af_std_1_4[17], ifd_pdaf_1_4[18], pext_1_0[19], pafstatistics_1_2[20], odr_pdaf_1_4[21], ifd_tnr_sp_bc_yuv4nm1_1_4[22], ifd_tnr_sp_bc_rs4nm1_1_4[23], ifd_tnr_fp_blend_yuvnm1_1_4[24], ifd_segmap_bnlm_1_4[25], smurf_bnlm_1_0[26], ifd_segmap_xnr_1_4[31], smurf_xnr_1_0[32], ifd_segmap_acm_1_4[36], smurf_acm_1_0[37], b2i_ds_1_1[41], lbff_crop_espa_1_4[42], tnr_scaler_lb_1_1[44], ifd_segmap_tnr_bc_1_4[46], smurf_tnr_bc_1_0[47], odr_tnr_sp_bc_rs4n_1_4[49], ifd_segmap_tnr_blend_1_4[50], smurf_tnr_blend_1_0[51], odr_tnr_fp_yuvn_1_4[53], tnr_scaler_fp_1_1[54], image_upscaler_1_1[55], odr_tnr_scale_fp_yuv4n_1_4[56], ifd_segmap_cas_1_4[57], smurf_cas_1_0[58], odr_ofs_mp_1_4[60], b2i_ds_output_1_1[61], odr_ofs_dp_1_4[62] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4F1DEC738FFFE0C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {ifd_tnr_fp_blend_yuvnm1_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[24], {lbff_crop_espa_1_4}[25], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[26], {tnr7_ims_1_2}[27], {ifd_segmap_tnr_bc_1_4}[28], {smurf_tnr_bc_1_0}[29], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[30], {ifd_segmap_tnr_blend_1_4}[31], {smurf_tnr_blend_1_0}[32], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[33], {odr_tnr_scale_fp_yuv4n_1_4}[34], {ifd_segmap_cas_1_4}[35], {smurf_cas_1_0}[36], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[37], {odr_ofs_dp_1_4}[38] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FFFFE738FFFFCF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {odr_awb_std_1_4}[9], {odr_awb_sat_1_4}[10], {aestatistics_2_1}[11], {odr_ae_1_4}[12], {odr_af_std_1_4}[13], {ifd_pdaf_1_4}[14], {pext_1_0}[15], {pafstatistics_1_2}[16], {odr_pdaf_1_4}[17], {ifd_tnr_sp_bc_yuv4nm1_1_4}[18], {ifd_tnr_sp_bc_rs4nm1_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {ifd_segmap_bnlm_1_4}[21], {smurf_bnlm_1_0}[22], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[23], {ifd_segmap_xnr_1_4}[24], {smurf_xnr_1_0}[25], {xnr_5_4, vcr_3_1, glim_2_0}[26], {ifd_segmap_acm_1_4}[27], {smurf_acm_1_0}[28], {acm_1_2, gammatm_v4, csc_1_1}[29], {b2i_ds_1_1}[30], {lbff_crop_espa_1_4}[31], {tnr7_spatial_1_1}[32], {tnr_scaler_lb_1_1}[33], {tnr7_ims_1_2}[34], {ifd_segmap_tnr_bc_1_4}[35], {smurf_tnr_bc_1_0}[36], {tnr7_bc_1_2}[37], {odr_tnr_sp_bc_rs4n_1_4}[38], {ifd_segmap_tnr_blend_1_4}[39], {smurf_tnr_blend_1_0}[40], {tnr7_blend_1_1}[41], {odr_tnr_fp_yuvn_1_4}[42], {tnr_scaler_fp_1_1}[43], {image_upscaler_1_1}[44], {odr_tnr_scale_fp_yuv4n_1_4}[45], {ifd_segmap_cas_1_4}[46], {smurf_cas_1_0}[47], {cas_1_1}[48], {odr_ofs_mp_1_4}[49], {b2i_ds_output_1_1}[50], {odr_ofs_dp_1_4}[51] }
    uint8_t systemApisSizes[63] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[63] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 27 /*bnlm_3_4*/, 28 /*bxt_demosaic*/, 29 /*vcsc_2_0_b*/, 30 /*gltm_2_0*/, 33 /*xnr_5_4*/, 34 /*vcr_3_1*/, 35 /*glim_2_0*/, 38 /*acm_1_2*/, 39 /*gammatm_v4*/, 40 /*csc_1_1*/, 41 /*b2i_ds_1_1*/, 42 /*lbff_crop_espa_1_4*/, 43 /*tnr7_spatial_1_1*/, 44 /*tnr_scaler_lb_1_1*/, 10 /*rgbs_grid_1_1*/, 13 /*odr_awb_std_1_4*/, 14 /*odr_awb_sat_1_4*/, 11 /*ccm_3a_2_0*/, 15 /*aestatistics_2_1*/, 16 /*odr_ae_1_4*/, 12 /*fr_grid_1_0*/, 17 /*odr_af_std_1_4*/, 18 /*ifd_pdaf_1_4*/, 19 /*pext_1_0*/, 20 /*pafstatistics_1_2*/, 21 /*odr_pdaf_1_4*/, 22 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 23 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 45 /*tnr7_ims_1_2*/, 48 /*tnr7_bc_1_2*/, 49 /*odr_tnr_sp_bc_rs4n_1_4*/, 24 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 52 /*tnr7_blend_1_1*/, 55 /*image_upscaler_1_1*/, 59 /*cas_1_1*/, 60 /*odr_ofs_mp_1_4*/, 61 /*b2i_ds_output_1_1*/, 62 /*odr_ofs_dp_1_4*/, 53 /*odr_tnr_fp_yuvn_1_4*/, 54 /*tnr_scaler_fp_1_1*/, 56 /*odr_tnr_scale_fp_yuv4n_1_4*/, 25 /*ifd_segmap_bnlm_1_4*/, 31 /*ifd_segmap_xnr_1_4*/, 36 /*ifd_segmap_acm_1_4*/, 46 /*ifd_segmap_tnr_bc_1_4*/, 50 /*ifd_segmap_tnr_blend_1_4*/, 57 /*ifd_segmap_cas_1_4*/, 26 /*smurf_bnlm_1_0*/, 32 /*smurf_xnr_1_0*/, 37 /*smurf_acm_1_0*/, 47 /*smurf_tnr_bc_1_0*/, 51 /*smurf_tnr_blend_1_0*/, 58 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[27].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void IsysPdaf2OuterNode::Init(IsysPdaf2OuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 2, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[2] = {11470 /*is_odr_a*/, 55449 /*is_odr_b*/};
    uint64_t kernelsRcbBitmap[] = {0x3, 0x0}; // { is_odr_a[0], is_odr_b[1] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x2, 0x0}; // {{is_odr_a}[0], {is_odr_b}[1] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3, 0x0}; // {{is_odr_a}[0], {is_odr_b}[1] }
    uint8_t systemApisSizes[2] = {0 /*is_odr_a*/, 0 /*is_odr_b*/};
    uint16_t runKernelConfigOrder[2] = {0 /*is_odr_a*/, 1 /*is_odr_b*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, nullptr, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2NoGmvNoTnrNoSapOuterNode::Init(LbffBayerPdaf2NoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 38, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[38] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3FFDF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], image_upscaler_1_1[24], odr_ofs_mp_1_4[26], b2i_ds_output_1_1[27], odr_ofs_dp_1_4[28], odr_awb_std_1_4[29], odr_awb_sat_1_4[30], aestatistics_2_1[31], odr_ae_1_4[32], odr_af_std_1_4[33], ifd_pdaf_1_4[34], pext_1_0[35], pafstatistics_1_2[36], odr_pdaf_1_4[37] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3FF3800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {image_upscaler_1_1}[10], {cas_1_1}[11], {odr_ofs_mp_1_4}[12], {b2i_ds_output_1_1}[13], {odr_ofs_dp_1_4}[14], {odr_awb_std_1_4}[15], {odr_awb_sat_1_4}[16], {aestatistics_2_1}[17], {odr_ae_1_4}[18], {odr_af_std_1_4}[19], {ifd_pdaf_1_4}[20], {pext_1_0}[21], {pafstatistics_1_2}[22], {odr_pdaf_1_4}[23] }
    uint8_t systemApisSizes[38] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/};
    uint16_t runKernelConfigOrder[38] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*image_upscaler_1_1*/, 25 /*cas_1_1*/, 26 /*odr_ofs_mp_1_4*/, 27 /*b2i_ds_output_1_1*/, 28 /*odr_ofs_dp_1_4*/, 19 /*rgbs_grid_1_1*/, 29 /*odr_awb_std_1_4*/, 30 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 31 /*aestatistics_2_1*/, 32 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_pdaf_1_4*/, 35 /*pext_1_0*/, 36 /*pafstatistics_1_2*/, 37 /*odr_pdaf_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2WithGmvNoTnrNoSapOuterNode::Init(LbffBayerPdaf2WithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 42, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[42] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3FFFDF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], image_upscaler_1_1[24], odr_ofs_mp_1_4[26], b2i_ds_output_1_1[27], odr_ofs_dp_1_4[28], odr_awb_std_1_4[29], odr_awb_sat_1_4[30], aestatistics_2_1[31], odr_ae_1_4[32], odr_af_std_1_4[33], ifd_pdaf_1_4[34], pext_1_0[35], pafstatistics_1_2[36], odr_pdaf_1_4[37], ifd_gmv_1_4[38], gmv_statistics_1_1[39], odr_gmv_feature_1_4[40], odr_gmv_match_1_4[41] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3FFF3800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_gmv_1_4}[17], {gmv_statistics_1_1}[18], {odr_gmv_feature_1_4}[19], {odr_gmv_match_1_4}[20] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {image_upscaler_1_1}[10], {cas_1_1}[11], {odr_ofs_mp_1_4}[12], {b2i_ds_output_1_1}[13], {odr_ofs_dp_1_4}[14], {odr_awb_std_1_4}[15], {odr_awb_sat_1_4}[16], {aestatistics_2_1}[17], {odr_ae_1_4}[18], {odr_af_std_1_4}[19], {ifd_pdaf_1_4}[20], {pext_1_0}[21], {pafstatistics_1_2}[22], {odr_pdaf_1_4}[23], {ifd_gmv_1_4}[24], {gmv_statistics_1_1}[25], {odr_gmv_feature_1_4}[26], {odr_gmv_match_1_4}[27] }
    uint8_t systemApisSizes[42] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[42] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*image_upscaler_1_1*/, 25 /*cas_1_1*/, 26 /*odr_ofs_mp_1_4*/, 27 /*b2i_ds_output_1_1*/, 28 /*odr_ofs_dp_1_4*/, 19 /*rgbs_grid_1_1*/, 29 /*odr_awb_std_1_4*/, 30 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 31 /*aestatistics_2_1*/, 32 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_pdaf_1_4*/, 35 /*pext_1_0*/, 36 /*pafstatistics_1_2*/, 37 /*odr_pdaf_1_4*/, 38 /*ifd_gmv_1_4*/, 39 /*gmv_statistics_1_1*/, 40 /*odr_gmv_feature_1_4*/, 41 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2NoGmvWithTnrNoSapOuterNode::Init(LbffBayerPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 50, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[50] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DD9FFEF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], tnr_scaler_lb_1_1[25], odr_awb_std_1_4[26], odr_awb_sat_1_4[27], aestatistics_2_1[28], odr_ae_1_4[29], odr_af_std_1_4[30], ifd_pdaf_1_4[31], pext_1_0[32], pafstatistics_1_2[33], odr_pdaf_1_4[34], ifd_tnr_sp_bc_yuv4nm1_1_4[35], ifd_tnr_sp_bc_rs4nm1_1_4[36], odr_tnr_sp_bc_rs4n_1_4[39], ifd_tnr_fp_blend_yuvnm1_1_4[40], odr_tnr_fp_yuvn_1_4[42], tnr_scaler_fp_1_1[43], image_upscaler_1_1[44], odr_ofs_mp_1_4[46], b2i_ds_output_1_1[47], odr_ofs_dp_1_4[48], odr_tnr_scale_fp_yuv4n_1_4[49] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3233FFD800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_pdaf_1_4}[11], {pext_1_0}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_4}[14], {ifd_tnr_sp_bc_yuv4nm1_1_4}[15], {ifd_tnr_sp_bc_rs4nm1_1_4}[16], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[19], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[20], {odr_ofs_dp_1_4}[21], {odr_tnr_scale_fp_yuv4n_1_4}[22] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFBFFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {tnr7_spatial_1_1}[10], {tnr_scaler_lb_1_1}[11], {odr_awb_std_1_4}[12], {odr_awb_sat_1_4}[13], {aestatistics_2_1}[14], {odr_ae_1_4}[15], {odr_af_std_1_4}[16], {ifd_pdaf_1_4}[17], {pext_1_0}[18], {pafstatistics_1_2}[19], {odr_pdaf_1_4}[20], {ifd_tnr_sp_bc_yuv4nm1_1_4}[21], {ifd_tnr_sp_bc_rs4nm1_1_4}[22], {tnr7_ims_1_2, tnr7_bc_1_2}[23], {odr_tnr_sp_bc_rs4n_1_4}[24], {ifd_tnr_fp_blend_yuvnm1_1_4}[25], {tnr7_blend_1_1}[26], {odr_tnr_fp_yuvn_1_4}[27], {tnr_scaler_fp_1_1}[28], {image_upscaler_1_1}[29], {cas_1_1}[30], {odr_ofs_mp_1_4}[31], {b2i_ds_output_1_1}[32], {odr_ofs_dp_1_4}[33], {odr_tnr_scale_fp_yuv4n_1_4}[34] }
    uint8_t systemApisSizes[50] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[50] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*tnr7_spatial_1_1*/, 25 /*tnr_scaler_lb_1_1*/, 19 /*rgbs_grid_1_1*/, 26 /*odr_awb_std_1_4*/, 27 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 28 /*aestatistics_2_1*/, 29 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 30 /*odr_af_std_1_4*/, 31 /*ifd_pdaf_1_4*/, 32 /*pext_1_0*/, 33 /*pafstatistics_1_2*/, 34 /*odr_pdaf_1_4*/, 35 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 36 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 37 /*tnr7_ims_1_2*/, 38 /*tnr7_bc_1_2*/, 39 /*odr_tnr_sp_bc_rs4n_1_4*/, 40 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 41 /*tnr7_blend_1_1*/, 44 /*image_upscaler_1_1*/, 45 /*cas_1_1*/, 46 /*odr_ofs_mp_1_4*/, 47 /*b2i_ds_output_1_1*/, 48 /*odr_ofs_dp_1_4*/, 42 /*odr_tnr_fp_yuvn_1_4*/, 43 /*tnr_scaler_fp_1_1*/, 49 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2WithGmvWithTnrNoSapOuterNode::Init(LbffBayerPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 54, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[54] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DD9FFFEF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], tnr_scaler_lb_1_1[25], odr_awb_std_1_4[26], odr_awb_sat_1_4[27], aestatistics_2_1[28], odr_ae_1_4[29], odr_af_std_1_4[30], ifd_pdaf_1_4[31], pext_1_0[32], pafstatistics_1_2[33], odr_pdaf_1_4[34], ifd_gmv_1_4[35], gmv_statistics_1_1[36], odr_gmv_feature_1_4[37], odr_gmv_match_1_4[38], ifd_tnr_sp_bc_yuv4nm1_1_4[39], ifd_tnr_sp_bc_rs4nm1_1_4[40], odr_tnr_sp_bc_rs4n_1_4[43], ifd_tnr_fp_blend_yuvnm1_1_4[44], odr_tnr_fp_yuvn_1_4[46], tnr_scaler_fp_1_1[47], image_upscaler_1_1[48], odr_ofs_mp_1_4[50], b2i_ds_output_1_1[51], odr_ofs_dp_1_4[52], odr_tnr_scale_fp_yuv4n_1_4[53] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3233FFFD800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_pdaf_1_4}[11], {pext_1_0}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_4}[14], {ifd_gmv_1_4}[15], {gmv_statistics_1_1}[16], {odr_gmv_feature_1_4}[17], {odr_gmv_match_1_4}[18], {ifd_tnr_sp_bc_yuv4nm1_1_4}[19], {ifd_tnr_sp_bc_rs4nm1_1_4}[20], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[21], {ifd_tnr_fp_blend_yuvnm1_1_4}[22], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[23], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[24], {odr_ofs_dp_1_4}[25], {odr_tnr_scale_fp_yuv4n_1_4}[26] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFBFFFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {tnr7_spatial_1_1}[10], {tnr_scaler_lb_1_1}[11], {odr_awb_std_1_4}[12], {odr_awb_sat_1_4}[13], {aestatistics_2_1}[14], {odr_ae_1_4}[15], {odr_af_std_1_4}[16], {ifd_pdaf_1_4}[17], {pext_1_0}[18], {pafstatistics_1_2}[19], {odr_pdaf_1_4}[20], {ifd_gmv_1_4}[21], {gmv_statistics_1_1}[22], {odr_gmv_feature_1_4}[23], {odr_gmv_match_1_4}[24], {ifd_tnr_sp_bc_yuv4nm1_1_4}[25], {ifd_tnr_sp_bc_rs4nm1_1_4}[26], {tnr7_ims_1_2, tnr7_bc_1_2}[27], {odr_tnr_sp_bc_rs4n_1_4}[28], {ifd_tnr_fp_blend_yuvnm1_1_4}[29], {tnr7_blend_1_1}[30], {odr_tnr_fp_yuvn_1_4}[31], {tnr_scaler_fp_1_1}[32], {image_upscaler_1_1}[33], {cas_1_1}[34], {odr_ofs_mp_1_4}[35], {b2i_ds_output_1_1}[36], {odr_ofs_dp_1_4}[37], {odr_tnr_scale_fp_yuv4n_1_4}[38] }
    uint8_t systemApisSizes[54] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[54] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*tnr7_spatial_1_1*/, 25 /*tnr_scaler_lb_1_1*/, 19 /*rgbs_grid_1_1*/, 26 /*odr_awb_std_1_4*/, 27 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 28 /*aestatistics_2_1*/, 29 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 30 /*odr_af_std_1_4*/, 31 /*ifd_pdaf_1_4*/, 32 /*pext_1_0*/, 33 /*pafstatistics_1_2*/, 34 /*odr_pdaf_1_4*/, 35 /*ifd_gmv_1_4*/, 36 /*gmv_statistics_1_1*/, 37 /*odr_gmv_feature_1_4*/, 38 /*odr_gmv_match_1_4*/, 39 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 40 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 41 /*tnr7_ims_1_2*/, 42 /*tnr7_bc_1_2*/, 43 /*odr_tnr_sp_bc_rs4n_1_4*/, 44 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 45 /*tnr7_blend_1_1*/, 48 /*image_upscaler_1_1*/, 49 /*cas_1_1*/, 50 /*odr_ofs_mp_1_4*/, 51 /*b2i_ds_output_1_1*/, 52 /*odr_ofs_dp_1_4*/, 46 /*odr_tnr_fp_yuvn_1_4*/, 47 /*tnr_scaler_fp_1_1*/, 53 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2WithGmvWithTnrWithSapOuterNode::Init(LbffBayerPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 66, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[66] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xBF77D63187FFFE31, 0x3}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_pdaf_1_4[17], pext_1_0[18], pafstatistics_1_2[19], odr_pdaf_1_4[20], ifd_gmv_1_4[21], ifd_tnr_sp_bc_yuv4nm1_1_4[22], ifd_tnr_sp_bc_rs4nm1_1_4[23], ifd_tnr_fp_blend_yuvnm1_1_4[24], ifd_segmap_bnlm_1_4[25], smurf_bnlm_1_0[26], ifd_segmap_xnr_1_4[31], smurf_xnr_1_0[32], ifd_segmap_acm_1_4[36], smurf_acm_1_0[37], b2i_ds_1_1[41], lbff_crop_espa_1_4[42], tnr_scaler_lb_1_1[44], gmv_statistics_1_1[46], odr_gmv_feature_1_4[47], odr_gmv_match_1_4[48], ifd_segmap_tnr_bc_1_4[49], smurf_tnr_bc_1_0[50], odr_tnr_sp_bc_rs4n_1_4[52], ifd_segmap_tnr_blend_1_4[53], smurf_tnr_blend_1_0[54], odr_tnr_fp_yuvn_1_4[56], tnr_scaler_fp_1_1[57], image_upscaler_1_1[58], odr_tnr_scale_fp_yuv4n_1_4[59], ifd_segmap_cas_1_4[60], smurf_cas_1_0[61], odr_ofs_mp_1_4[63], b2i_ds_output_1_1[64], odr_ofs_dp_1_4[65] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x78EFEC738FFFF062, 0x2}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_gmv_1_4}[13], {ifd_tnr_sp_bc_yuv4nm1_1_4}[14], {ifd_tnr_sp_bc_rs4nm1_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[27], {tnr7_ims_1_2}[28], {gmv_statistics_1_1}[29], {odr_gmv_feature_1_4}[30], {odr_gmv_match_1_4}[31], {ifd_segmap_tnr_bc_1_4}[32], {smurf_tnr_bc_1_0}[33], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[34], {ifd_segmap_tnr_blend_1_4}[35], {smurf_tnr_blend_1_0}[36], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[37], {odr_tnr_scale_fp_yuv4n_1_4}[38], {ifd_segmap_cas_1_4}[39], {smurf_cas_1_0}[40], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[41], {odr_ofs_dp_1_4}[42] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFE738FFFFE73, 0x3}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_gmv_1_4}[17], {ifd_tnr_sp_bc_yuv4nm1_1_4}[18], {ifd_tnr_sp_bc_rs4nm1_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {ifd_segmap_bnlm_1_4}[21], {smurf_bnlm_1_0}[22], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[23], {ifd_segmap_xnr_1_4}[24], {smurf_xnr_1_0}[25], {xnr_5_4, vcr_3_1, glim_2_0}[26], {ifd_segmap_acm_1_4}[27], {smurf_acm_1_0}[28], {acm_1_2, gammatm_v4, csc_1_1}[29], {b2i_ds_1_1}[30], {lbff_crop_espa_1_4}[31], {tnr7_spatial_1_1}[32], {tnr_scaler_lb_1_1}[33], {tnr7_ims_1_2}[34], {gmv_statistics_1_1}[35], {odr_gmv_feature_1_4}[36], {odr_gmv_match_1_4}[37], {ifd_segmap_tnr_bc_1_4}[38], {smurf_tnr_bc_1_0}[39], {tnr7_bc_1_2}[40], {odr_tnr_sp_bc_rs4n_1_4}[41], {ifd_segmap_tnr_blend_1_4}[42], {smurf_tnr_blend_1_0}[43], {tnr7_blend_1_1}[44], {odr_tnr_fp_yuvn_1_4}[45], {tnr_scaler_fp_1_1}[46], {image_upscaler_1_1}[47], {odr_tnr_scale_fp_yuv4n_1_4}[48], {ifd_segmap_cas_1_4}[49], {smurf_cas_1_0}[50], {cas_1_1}[51], {odr_ofs_mp_1_4}[52], {b2i_ds_output_1_1}[53], {odr_ofs_dp_1_4}[54] }
    uint8_t systemApisSizes[66] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[66] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 27 /*bnlm_3_4*/, 28 /*bxt_demosaic*/, 29 /*vcsc_2_0_b*/, 30 /*gltm_2_0*/, 33 /*xnr_5_4*/, 34 /*vcr_3_1*/, 35 /*glim_2_0*/, 38 /*acm_1_2*/, 39 /*gammatm_v4*/, 40 /*csc_1_1*/, 41 /*b2i_ds_1_1*/, 42 /*lbff_crop_espa_1_4*/, 43 /*tnr7_spatial_1_1*/, 44 /*tnr_scaler_lb_1_1*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_pdaf_1_4*/, 18 /*pext_1_0*/, 19 /*pafstatistics_1_2*/, 20 /*odr_pdaf_1_4*/, 21 /*ifd_gmv_1_4*/, 46 /*gmv_statistics_1_1*/, 47 /*odr_gmv_feature_1_4*/, 48 /*odr_gmv_match_1_4*/, 22 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 23 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 45 /*tnr7_ims_1_2*/, 51 /*tnr7_bc_1_2*/, 52 /*odr_tnr_sp_bc_rs4n_1_4*/, 24 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 55 /*tnr7_blend_1_1*/, 58 /*image_upscaler_1_1*/, 62 /*cas_1_1*/, 63 /*odr_ofs_mp_1_4*/, 64 /*b2i_ds_output_1_1*/, 65 /*odr_ofs_dp_1_4*/, 56 /*odr_tnr_fp_yuvn_1_4*/, 57 /*tnr_scaler_fp_1_1*/, 59 /*odr_tnr_scale_fp_yuv4n_1_4*/, 25 /*ifd_segmap_bnlm_1_4*/, 31 /*ifd_segmap_xnr_1_4*/, 36 /*ifd_segmap_acm_1_4*/, 49 /*ifd_segmap_tnr_bc_1_4*/, 53 /*ifd_segmap_tnr_blend_1_4*/, 60 /*ifd_segmap_cas_1_4*/, 26 /*smurf_bnlm_1_0*/, 32 /*smurf_xnr_1_0*/, 37 /*smurf_acm_1_0*/, 50 /*smurf_tnr_bc_1_0*/, 54 /*smurf_tnr_blend_1_0*/, 61 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[27].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3NoGmvNoTnrNoSapOuterNode::Init(LbffBayerPdaf3NoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 37, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[37] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1FEFC001F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[22], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_1[25], lbff_crop_espa_1_4[26], image_upscaler_1_1[27], odr_ofs_mp_1_4[29], b2i_ds_output_1_1[30], odr_ofs_dp_1_4[31], odr_awb_std_1_4[32], odr_awb_sat_1_4[33], aestatistics_2_1[34], odr_ae_1_4[35], odr_af_std_1_4[36] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1F9C0003C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[5], {lbff_crop_espa_1_4}[6], {image_upscaler_1_1}[7], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[8], {odr_ofs_dp_1_4}[9], {odr_awb_std_1_4}[10], {odr_awb_sat_1_4}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFFC003F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {b2i_ds_1_1}[11], {lbff_crop_espa_1_4}[12], {image_upscaler_1_1}[13], {cas_1_1}[14], {odr_ofs_mp_1_4}[15], {b2i_ds_output_1_1}[16], {odr_ofs_dp_1_4}[17], {odr_awb_std_1_4}[18], {odr_awb_sat_1_4}[19], {aestatistics_2_1}[20], {odr_ae_1_4}[21], {odr_af_std_1_4}[22] }
    uint8_t systemApisSizes[37] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[37] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 12 /*bnlm_3_4*/, 13 /*bxt_demosaic*/, 14 /*vcsc_2_0_b*/, 15 /*gltm_2_0*/, 16 /*xnr_5_4*/, 17 /*vcr_3_1*/, 18 /*glim_2_0*/, 19 /*acm_1_2*/, 20 /*gammatm_v4*/, 21 /*csc_1_1*/, 25 /*b2i_ds_1_1*/, 26 /*lbff_crop_espa_1_4*/, 27 /*image_upscaler_1_1*/, 28 /*cas_1_1*/, 29 /*odr_ofs_mp_1_4*/, 30 /*b2i_ds_output_1_1*/, 31 /*odr_ofs_dp_1_4*/, 22 /*rgbs_grid_1_1*/, 32 /*odr_awb_std_1_4*/, 33 /*odr_awb_sat_1_4*/, 23 /*ccm_3a_2_0*/, 34 /*aestatistics_2_1*/, 35 /*odr_ae_1_4*/, 24 /*fr_grid_1_0*/, 36 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[12].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3WithGmvNoTnrNoSapOuterNode::Init(LbffBayerPdaf3WithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 41, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[41] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1FFEFC001F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[22], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_1[25], lbff_crop_espa_1_4[26], image_upscaler_1_1[27], odr_ofs_mp_1_4[29], b2i_ds_output_1_1[30], odr_ofs_dp_1_4[31], odr_awb_std_1_4[32], odr_awb_sat_1_4[33], aestatistics_2_1[34], odr_ae_1_4[35], odr_af_std_1_4[36], ifd_gmv_1_4[37], gmv_statistics_1_1[38], odr_gmv_feature_1_4[39], odr_gmv_match_1_4[40] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1FF9C0003C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[5], {lbff_crop_espa_1_4}[6], {image_upscaler_1_1}[7], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[8], {odr_ofs_dp_1_4}[9], {odr_awb_std_1_4}[10], {odr_awb_sat_1_4}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {gmv_statistics_1_1}[16], {odr_gmv_feature_1_4}[17], {odr_gmv_match_1_4}[18] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFFFC003F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {b2i_ds_1_1}[11], {lbff_crop_espa_1_4}[12], {image_upscaler_1_1}[13], {cas_1_1}[14], {odr_ofs_mp_1_4}[15], {b2i_ds_output_1_1}[16], {odr_ofs_dp_1_4}[17], {odr_awb_std_1_4}[18], {odr_awb_sat_1_4}[19], {aestatistics_2_1}[20], {odr_ae_1_4}[21], {odr_af_std_1_4}[22], {ifd_gmv_1_4}[23], {gmv_statistics_1_1}[24], {odr_gmv_feature_1_4}[25], {odr_gmv_match_1_4}[26] }
    uint8_t systemApisSizes[41] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[41] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 12 /*bnlm_3_4*/, 13 /*bxt_demosaic*/, 14 /*vcsc_2_0_b*/, 15 /*gltm_2_0*/, 16 /*xnr_5_4*/, 17 /*vcr_3_1*/, 18 /*glim_2_0*/, 19 /*acm_1_2*/, 20 /*gammatm_v4*/, 21 /*csc_1_1*/, 25 /*b2i_ds_1_1*/, 26 /*lbff_crop_espa_1_4*/, 27 /*image_upscaler_1_1*/, 28 /*cas_1_1*/, 29 /*odr_ofs_mp_1_4*/, 30 /*b2i_ds_output_1_1*/, 31 /*odr_ofs_dp_1_4*/, 22 /*rgbs_grid_1_1*/, 32 /*odr_awb_std_1_4*/, 33 /*odr_awb_sat_1_4*/, 23 /*ccm_3a_2_0*/, 34 /*aestatistics_2_1*/, 35 /*odr_ae_1_4*/, 24 /*fr_grid_1_0*/, 36 /*odr_af_std_1_4*/, 37 /*ifd_gmv_1_4*/, 38 /*gmv_statistics_1_1*/, 39 /*odr_gmv_feature_1_4*/, 40 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[12].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3NoGmvWithTnrNoSapOuterNode::Init(LbffBayerPdaf3NoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 49, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[49] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EECFF7C001F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[22], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_1[25], lbff_crop_espa_1_4[26], tnr_scaler_lb_1_1[28], odr_awb_std_1_4[29], odr_awb_sat_1_4[30], aestatistics_2_1[31], odr_ae_1_4[32], odr_af_std_1_4[33], ifd_tnr_sp_bc_yuv4nm1_1_4[34], ifd_tnr_sp_bc_rs4nm1_1_4[35], odr_tnr_sp_bc_rs4n_1_4[38], ifd_tnr_fp_blend_yuvnm1_1_4[39], odr_tnr_fp_yuvn_1_4[41], tnr_scaler_fp_1_1[42], image_upscaler_1_1[43], odr_ofs_mp_1_4[45], b2i_ds_output_1_1[46], odr_ofs_dp_1_4[47], odr_tnr_scale_fp_yuv4n_1_4[48] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1919FEC0003C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[5], {lbff_crop_espa_1_4}[6], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[17], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[18], {odr_ofs_dp_1_4}[19], {odr_tnr_scale_fp_yuv4n_1_4}[20] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFDFFFC003F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {b2i_ds_1_1}[11], {lbff_crop_espa_1_4}[12], {tnr7_spatial_1_1}[13], {tnr_scaler_lb_1_1}[14], {odr_awb_std_1_4}[15], {odr_awb_sat_1_4}[16], {aestatistics_2_1}[17], {odr_ae_1_4}[18], {odr_af_std_1_4}[19], {ifd_tnr_sp_bc_yuv4nm1_1_4}[20], {ifd_tnr_sp_bc_rs4nm1_1_4}[21], {tnr7_ims_1_2, tnr7_bc_1_2}[22], {odr_tnr_sp_bc_rs4n_1_4}[23], {ifd_tnr_fp_blend_yuvnm1_1_4}[24], {tnr7_blend_1_1}[25], {odr_tnr_fp_yuvn_1_4}[26], {tnr_scaler_fp_1_1}[27], {image_upscaler_1_1}[28], {cas_1_1}[29], {odr_ofs_mp_1_4}[30], {b2i_ds_output_1_1}[31], {odr_ofs_dp_1_4}[32], {odr_tnr_scale_fp_yuv4n_1_4}[33] }
    uint8_t systemApisSizes[49] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[49] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 12 /*bnlm_3_4*/, 13 /*bxt_demosaic*/, 14 /*vcsc_2_0_b*/, 15 /*gltm_2_0*/, 16 /*xnr_5_4*/, 17 /*vcr_3_1*/, 18 /*glim_2_0*/, 19 /*acm_1_2*/, 20 /*gammatm_v4*/, 21 /*csc_1_1*/, 25 /*b2i_ds_1_1*/, 26 /*lbff_crop_espa_1_4*/, 27 /*tnr7_spatial_1_1*/, 28 /*tnr_scaler_lb_1_1*/, 22 /*rgbs_grid_1_1*/, 29 /*odr_awb_std_1_4*/, 30 /*odr_awb_sat_1_4*/, 23 /*ccm_3a_2_0*/, 31 /*aestatistics_2_1*/, 32 /*odr_ae_1_4*/, 24 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 35 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 36 /*tnr7_ims_1_2*/, 37 /*tnr7_bc_1_2*/, 38 /*odr_tnr_sp_bc_rs4n_1_4*/, 39 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 40 /*tnr7_blend_1_1*/, 43 /*image_upscaler_1_1*/, 44 /*cas_1_1*/, 45 /*odr_ofs_mp_1_4*/, 46 /*b2i_ds_output_1_1*/, 47 /*odr_ofs_dp_1_4*/, 41 /*odr_tnr_fp_yuvn_1_4*/, 42 /*tnr_scaler_fp_1_1*/, 48 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[12].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3WithGmvWithTnrNoSapOuterNode::Init(LbffBayerPdaf3WithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 53, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[53] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EECFFF7C001F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[22], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_1[25], lbff_crop_espa_1_4[26], tnr_scaler_lb_1_1[28], odr_awb_std_1_4[29], odr_awb_sat_1_4[30], aestatistics_2_1[31], odr_ae_1_4[32], odr_af_std_1_4[33], ifd_gmv_1_4[34], gmv_statistics_1_1[35], odr_gmv_feature_1_4[36], odr_gmv_match_1_4[37], ifd_tnr_sp_bc_yuv4nm1_1_4[38], ifd_tnr_sp_bc_rs4nm1_1_4[39], odr_tnr_sp_bc_rs4n_1_4[42], ifd_tnr_fp_blend_yuvnm1_1_4[43], odr_tnr_fp_yuvn_1_4[45], tnr_scaler_fp_1_1[46], image_upscaler_1_1[47], odr_ofs_mp_1_4[49], b2i_ds_output_1_1[50], odr_ofs_dp_1_4[51], odr_tnr_scale_fp_yuv4n_1_4[52] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1919FFEC0003C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[5], {lbff_crop_espa_1_4}[6], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {gmv_statistics_1_1}[14], {odr_gmv_feature_1_4}[15], {odr_gmv_match_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[21], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[22], {odr_ofs_dp_1_4}[23], {odr_tnr_scale_fp_yuv4n_1_4}[24] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFDFFFFC003F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {b2i_ds_1_1}[11], {lbff_crop_espa_1_4}[12], {tnr7_spatial_1_1}[13], {tnr_scaler_lb_1_1}[14], {odr_awb_std_1_4}[15], {odr_awb_sat_1_4}[16], {aestatistics_2_1}[17], {odr_ae_1_4}[18], {odr_af_std_1_4}[19], {ifd_gmv_1_4}[20], {gmv_statistics_1_1}[21], {odr_gmv_feature_1_4}[22], {odr_gmv_match_1_4}[23], {ifd_tnr_sp_bc_yuv4nm1_1_4}[24], {ifd_tnr_sp_bc_rs4nm1_1_4}[25], {tnr7_ims_1_2, tnr7_bc_1_2}[26], {odr_tnr_sp_bc_rs4n_1_4}[27], {ifd_tnr_fp_blend_yuvnm1_1_4}[28], {tnr7_blend_1_1}[29], {odr_tnr_fp_yuvn_1_4}[30], {tnr_scaler_fp_1_1}[31], {image_upscaler_1_1}[32], {cas_1_1}[33], {odr_ofs_mp_1_4}[34], {b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36], {odr_tnr_scale_fp_yuv4n_1_4}[37] }
    uint8_t systemApisSizes[53] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[53] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 12 /*bnlm_3_4*/, 13 /*bxt_demosaic*/, 14 /*vcsc_2_0_b*/, 15 /*gltm_2_0*/, 16 /*xnr_5_4*/, 17 /*vcr_3_1*/, 18 /*glim_2_0*/, 19 /*acm_1_2*/, 20 /*gammatm_v4*/, 21 /*csc_1_1*/, 25 /*b2i_ds_1_1*/, 26 /*lbff_crop_espa_1_4*/, 27 /*tnr7_spatial_1_1*/, 28 /*tnr_scaler_lb_1_1*/, 22 /*rgbs_grid_1_1*/, 29 /*odr_awb_std_1_4*/, 30 /*odr_awb_sat_1_4*/, 23 /*ccm_3a_2_0*/, 31 /*aestatistics_2_1*/, 32 /*odr_ae_1_4*/, 24 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_gmv_1_4*/, 35 /*gmv_statistics_1_1*/, 36 /*odr_gmv_feature_1_4*/, 37 /*odr_gmv_match_1_4*/, 38 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 39 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 40 /*tnr7_ims_1_2*/, 41 /*tnr7_bc_1_2*/, 42 /*odr_tnr_sp_bc_rs4n_1_4*/, 43 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 44 /*tnr7_blend_1_1*/, 47 /*image_upscaler_1_1*/, 48 /*cas_1_1*/, 49 /*odr_ofs_mp_1_4*/, 50 /*b2i_ds_output_1_1*/, 51 /*odr_ofs_dp_1_4*/, 45 /*odr_tnr_fp_yuvn_1_4*/, 46 /*tnr_scaler_fp_1_1*/, 52 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[12].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3WithGmvWithTnrWithSapOuterNode::Init(LbffBayerPdaf3WithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 65, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[65] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xDFBBEB18C3FFF1F1, 0x1}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[12], ccm_3a_2_0[13], fr_grid_1_0[14], odr_awb_std_1_4[15], odr_awb_sat_1_4[16], aestatistics_2_1[17], odr_ae_1_4[18], odr_af_std_1_4[19], ifd_gmv_1_4[20], ifd_tnr_sp_bc_yuv4nm1_1_4[21], ifd_tnr_sp_bc_rs4nm1_1_4[22], ifd_tnr_fp_blend_yuvnm1_1_4[23], ifd_segmap_bnlm_1_4[24], smurf_bnlm_1_0[25], ifd_segmap_xnr_1_4[30], smurf_xnr_1_0[31], ifd_segmap_acm_1_4[35], smurf_acm_1_0[36], b2i_ds_1_1[40], lbff_crop_espa_1_4[41], tnr_scaler_lb_1_1[43], gmv_statistics_1_1[45], odr_gmv_feature_1_4[46], odr_gmv_match_1_4[47], ifd_segmap_tnr_bc_1_4[48], smurf_tnr_bc_1_0[49], odr_tnr_sp_bc_rs4n_1_4[51], ifd_segmap_tnr_blend_1_4[52], smurf_tnr_blend_1_0[53], odr_tnr_fp_yuvn_1_4[55], tnr_scaler_fp_1_1[56], image_upscaler_1_1[57], odr_tnr_scale_fp_yuv4n_1_4[58], ifd_segmap_cas_1_4[59], smurf_cas_1_0[60], odr_ofs_mp_1_4[62], b2i_ds_output_1_1[63], odr_ofs_dp_1_4[64] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3C77F639C7FF83C2, 0x1}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {ifd_tnr_sp_bc_yuv4nm1_1_4}[12], {ifd_tnr_sp_bc_rs4nm1_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0}[20], {ifd_segmap_acm_1_4}[21], {smurf_acm_1_0}[22], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[23], {lbff_crop_espa_1_4}[24], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[25], {tnr7_ims_1_2}[26], {gmv_statistics_1_1}[27], {odr_gmv_feature_1_4}[28], {odr_gmv_match_1_4}[29], {ifd_segmap_tnr_bc_1_4}[30], {smurf_tnr_bc_1_0}[31], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[32], {ifd_segmap_tnr_blend_1_4}[33], {smurf_tnr_blend_1_0}[34], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[35], {odr_tnr_scale_fp_yuv4n_1_4}[36], {ifd_segmap_cas_1_4}[37], {smurf_cas_1_0}[38], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[39], {odr_ofs_dp_1_4}[40] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFF39C7FFF3F3, 0x1}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_gmv_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {ifd_tnr_fp_blend_yuvnm1_1_4}[19], {ifd_segmap_bnlm_1_4}[20], {smurf_bnlm_1_0}[21], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[22], {ifd_segmap_xnr_1_4}[23], {smurf_xnr_1_0}[24], {xnr_5_4, vcr_3_1, glim_2_0}[25], {ifd_segmap_acm_1_4}[26], {smurf_acm_1_0}[27], {acm_1_2, gammatm_v4, csc_1_1}[28], {b2i_ds_1_1}[29], {lbff_crop_espa_1_4}[30], {tnr7_spatial_1_1}[31], {tnr_scaler_lb_1_1}[32], {tnr7_ims_1_2}[33], {gmv_statistics_1_1}[34], {odr_gmv_feature_1_4}[35], {odr_gmv_match_1_4}[36], {ifd_segmap_tnr_bc_1_4}[37], {smurf_tnr_bc_1_0}[38], {tnr7_bc_1_2}[39], {odr_tnr_sp_bc_rs4n_1_4}[40], {ifd_segmap_tnr_blend_1_4}[41], {smurf_tnr_blend_1_0}[42], {tnr7_blend_1_1}[43], {odr_tnr_fp_yuvn_1_4}[44], {tnr_scaler_fp_1_1}[45], {image_upscaler_1_1}[46], {odr_tnr_scale_fp_yuv4n_1_4}[47], {ifd_segmap_cas_1_4}[48], {smurf_cas_1_0}[49], {cas_1_1}[50], {odr_ofs_mp_1_4}[51], {b2i_ds_output_1_1}[52], {odr_ofs_dp_1_4}[53] }
    uint8_t systemApisSizes[65] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[65] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 26 /*bnlm_3_4*/, 27 /*bxt_demosaic*/, 28 /*vcsc_2_0_b*/, 29 /*gltm_2_0*/, 32 /*xnr_5_4*/, 33 /*vcr_3_1*/, 34 /*glim_2_0*/, 37 /*acm_1_2*/, 38 /*gammatm_v4*/, 39 /*csc_1_1*/, 40 /*b2i_ds_1_1*/, 41 /*lbff_crop_espa_1_4*/, 42 /*tnr7_spatial_1_1*/, 43 /*tnr_scaler_lb_1_1*/, 12 /*rgbs_grid_1_1*/, 15 /*odr_awb_std_1_4*/, 16 /*odr_awb_sat_1_4*/, 13 /*ccm_3a_2_0*/, 17 /*aestatistics_2_1*/, 18 /*odr_ae_1_4*/, 14 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_gmv_1_4*/, 45 /*gmv_statistics_1_1*/, 46 /*odr_gmv_feature_1_4*/, 47 /*odr_gmv_match_1_4*/, 21 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 22 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 44 /*tnr7_ims_1_2*/, 50 /*tnr7_bc_1_2*/, 51 /*odr_tnr_sp_bc_rs4n_1_4*/, 23 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 54 /*tnr7_blend_1_1*/, 57 /*image_upscaler_1_1*/, 61 /*cas_1_1*/, 62 /*odr_ofs_mp_1_4*/, 63 /*b2i_ds_output_1_1*/, 64 /*odr_ofs_dp_1_4*/, 55 /*odr_tnr_fp_yuvn_1_4*/, 56 /*tnr_scaler_fp_1_1*/, 58 /*odr_tnr_scale_fp_yuv4n_1_4*/, 24 /*ifd_segmap_bnlm_1_4*/, 30 /*ifd_segmap_xnr_1_4*/, 35 /*ifd_segmap_acm_1_4*/, 48 /*ifd_segmap_tnr_bc_1_4*/, 52 /*ifd_segmap_tnr_blend_1_4*/, 59 /*ifd_segmap_cas_1_4*/, 25 /*smurf_bnlm_1_0*/, 31 /*smurf_xnr_1_0*/, 36 /*smurf_acm_1_0*/, 49 /*smurf_tnr_bc_1_0*/, 53 /*smurf_tnr_blend_1_0*/, 60 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[26].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void IsysDolOuterNode::Init(IsysDolOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 2, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[2] = {11470 /*is_odr_a*/, 50407 /*is_odr_c*/};
    uint64_t kernelsRcbBitmap[] = {0x3, 0x0}; // { is_odr_a[0], is_odr_c[1] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x2, 0x0}; // {{is_odr_a}[0], {is_odr_c}[1] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3, 0x0}; // {{is_odr_a}[0], {is_odr_c}[1] }
    uint8_t systemApisSizes[2] = {0 /*is_odr_a*/, 0 /*is_odr_c*/};
    uint16_t runKernelConfigOrder[2] = {0 /*is_odr_a*/, 1 /*is_odr_c*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, nullptr, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsNoGmvNoTnrNoSapOuterNode::Init(LbffDol2InputsNoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 37, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[37] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EF0007FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[28], b2i_ds_1_1[29], lbff_crop_espa_1_4[30], image_upscaler_1_1[31], odr_ofs_mp_1_4[33], b2i_ds_output_1_1[34], odr_ofs_dp_1_4[35], odr_af_std_1_4[36] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x19C000FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {image_upscaler_1_1}[11], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[12], {odr_ofs_dp_1_4}[13], {odr_af_std_1_4}[14] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FF000FFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[12], {fr_grid_1_0}[13], {b2i_ds_1_1}[14], {lbff_crop_espa_1_4}[15], {image_upscaler_1_1}[16], {cas_1_1}[17], {odr_ofs_mp_1_4}[18], {b2i_ds_output_1_1}[19], {odr_ofs_dp_1_4}[20], {odr_af_std_1_4}[21] }
    uint8_t systemApisSizes[37] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[37] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 18 /*bnlm_3_4*/, 19 /*bxt_demosaic*/, 20 /*vcsc_2_0_b*/, 21 /*gltm_2_0*/, 22 /*xnr_5_4*/, 23 /*vcr_3_1*/, 24 /*glim_2_0*/, 25 /*acm_1_2*/, 26 /*gammatm_v4*/, 27 /*csc_1_1*/, 29 /*b2i_ds_1_1*/, 30 /*lbff_crop_espa_1_4*/, 31 /*image_upscaler_1_1*/, 32 /*cas_1_1*/, 33 /*odr_ofs_mp_1_4*/, 34 /*b2i_ds_output_1_1*/, 35 /*odr_ofs_dp_1_4*/, 28 /*fr_grid_1_0*/, 36 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[18].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsWithGmvNoTnrNoSapOuterNode::Init(LbffDol2InputsWithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 41, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[41] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1FEF0007FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[28], b2i_ds_1_1[29], lbff_crop_espa_1_4[30], image_upscaler_1_1[31], odr_ofs_mp_1_4[33], b2i_ds_output_1_1[34], odr_ofs_dp_1_4[35], odr_af_std_1_4[36], ifd_gmv_1_4[37], gmv_statistics_1_1[38], odr_gmv_feature_1_4[39], odr_gmv_match_1_4[40] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1F9C000FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {image_upscaler_1_1}[11], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[12], {odr_ofs_dp_1_4}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {gmv_statistics_1_1}[16], {odr_gmv_feature_1_4}[17], {odr_gmv_match_1_4}[18] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFF000FFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[12], {fr_grid_1_0}[13], {b2i_ds_1_1}[14], {lbff_crop_espa_1_4}[15], {image_upscaler_1_1}[16], {cas_1_1}[17], {odr_ofs_mp_1_4}[18], {b2i_ds_output_1_1}[19], {odr_ofs_dp_1_4}[20], {odr_af_std_1_4}[21], {ifd_gmv_1_4}[22], {gmv_statistics_1_1}[23], {odr_gmv_feature_1_4}[24], {odr_gmv_match_1_4}[25] }
    uint8_t systemApisSizes[41] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[41] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 18 /*bnlm_3_4*/, 19 /*bxt_demosaic*/, 20 /*vcsc_2_0_b*/, 21 /*gltm_2_0*/, 22 /*xnr_5_4*/, 23 /*vcr_3_1*/, 24 /*glim_2_0*/, 25 /*acm_1_2*/, 26 /*gammatm_v4*/, 27 /*csc_1_1*/, 29 /*b2i_ds_1_1*/, 30 /*lbff_crop_espa_1_4*/, 31 /*image_upscaler_1_1*/, 32 /*cas_1_1*/, 33 /*odr_ofs_mp_1_4*/, 34 /*b2i_ds_output_1_1*/, 35 /*odr_ofs_dp_1_4*/, 28 /*fr_grid_1_0*/, 36 /*odr_af_std_1_4*/, 37 /*ifd_gmv_1_4*/, 38 /*gmv_statistics_1_1*/, 39 /*odr_gmv_feature_1_4*/, 40 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[18].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsNoGmvWithTnrNoSapOuterNode::Init(LbffDol2InputsNoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 49, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[49] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EECF70007FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[28], b2i_ds_1_1[29], lbff_crop_espa_1_4[30], tnr_scaler_lb_1_1[32], odr_af_std_1_4[33], ifd_tnr_sp_bc_yuv4nm1_1_4[34], ifd_tnr_sp_bc_rs4nm1_1_4[35], odr_tnr_sp_bc_rs4n_1_4[38], ifd_tnr_fp_blend_yuvnm1_1_4[39], odr_tnr_fp_yuvn_1_4[41], tnr_scaler_fp_1_1[42], image_upscaler_1_1[43], odr_ofs_mp_1_4[45], b2i_ds_output_1_1[46], odr_ofs_dp_1_4[47], odr_tnr_scale_fp_yuv4n_1_4[48] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1919EC000FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[11], {odr_af_std_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[17], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[18], {odr_ofs_dp_1_4}[19], {odr_tnr_scale_fp_yuv4n_1_4}[20] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFDFF000FFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[12], {fr_grid_1_0}[13], {b2i_ds_1_1}[14], {lbff_crop_espa_1_4}[15], {tnr7_spatial_1_1}[16], {tnr_scaler_lb_1_1}[17], {odr_af_std_1_4}[18], {ifd_tnr_sp_bc_yuv4nm1_1_4}[19], {ifd_tnr_sp_bc_rs4nm1_1_4}[20], {tnr7_ims_1_2, tnr7_bc_1_2}[21], {odr_tnr_sp_bc_rs4n_1_4}[22], {ifd_tnr_fp_blend_yuvnm1_1_4}[23], {tnr7_blend_1_1}[24], {odr_tnr_fp_yuvn_1_4}[25], {tnr_scaler_fp_1_1}[26], {image_upscaler_1_1}[27], {cas_1_1}[28], {odr_ofs_mp_1_4}[29], {b2i_ds_output_1_1}[30], {odr_ofs_dp_1_4}[31], {odr_tnr_scale_fp_yuv4n_1_4}[32] }
    uint8_t systemApisSizes[49] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[49] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 18 /*bnlm_3_4*/, 19 /*bxt_demosaic*/, 20 /*vcsc_2_0_b*/, 21 /*gltm_2_0*/, 22 /*xnr_5_4*/, 23 /*vcr_3_1*/, 24 /*glim_2_0*/, 25 /*acm_1_2*/, 26 /*gammatm_v4*/, 27 /*csc_1_1*/, 29 /*b2i_ds_1_1*/, 30 /*lbff_crop_espa_1_4*/, 31 /*tnr7_spatial_1_1*/, 32 /*tnr_scaler_lb_1_1*/, 28 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 35 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 36 /*tnr7_ims_1_2*/, 37 /*tnr7_bc_1_2*/, 38 /*odr_tnr_sp_bc_rs4n_1_4*/, 39 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 40 /*tnr7_blend_1_1*/, 43 /*image_upscaler_1_1*/, 44 /*cas_1_1*/, 45 /*odr_ofs_mp_1_4*/, 46 /*b2i_ds_output_1_1*/, 47 /*odr_ofs_dp_1_4*/, 41 /*odr_tnr_fp_yuvn_1_4*/, 42 /*tnr_scaler_fp_1_1*/, 48 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[18].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsWithGmvWithTnrNoSapOuterNode::Init(LbffDol2InputsWithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 53, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[53] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EECFF70007FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[28], b2i_ds_1_1[29], lbff_crop_espa_1_4[30], tnr_scaler_lb_1_1[32], odr_af_std_1_4[33], ifd_gmv_1_4[34], gmv_statistics_1_1[35], odr_gmv_feature_1_4[36], odr_gmv_match_1_4[37], ifd_tnr_sp_bc_yuv4nm1_1_4[38], ifd_tnr_sp_bc_rs4nm1_1_4[39], odr_tnr_sp_bc_rs4n_1_4[42], ifd_tnr_fp_blend_yuvnm1_1_4[43], odr_tnr_fp_yuvn_1_4[45], tnr_scaler_fp_1_1[46], image_upscaler_1_1[47], odr_ofs_mp_1_4[49], b2i_ds_output_1_1[50], odr_ofs_dp_1_4[51], odr_tnr_scale_fp_yuv4n_1_4[52] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1919FEC000FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {gmv_statistics_1_1}[14], {odr_gmv_feature_1_4}[15], {odr_gmv_match_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[21], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[22], {odr_ofs_dp_1_4}[23], {odr_tnr_scale_fp_yuv4n_1_4}[24] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFDFFF000FFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[12], {fr_grid_1_0}[13], {b2i_ds_1_1}[14], {lbff_crop_espa_1_4}[15], {tnr7_spatial_1_1}[16], {tnr_scaler_lb_1_1}[17], {odr_af_std_1_4}[18], {ifd_gmv_1_4}[19], {gmv_statistics_1_1}[20], {odr_gmv_feature_1_4}[21], {odr_gmv_match_1_4}[22], {ifd_tnr_sp_bc_yuv4nm1_1_4}[23], {ifd_tnr_sp_bc_rs4nm1_1_4}[24], {tnr7_ims_1_2, tnr7_bc_1_2}[25], {odr_tnr_sp_bc_rs4n_1_4}[26], {ifd_tnr_fp_blend_yuvnm1_1_4}[27], {tnr7_blend_1_1}[28], {odr_tnr_fp_yuvn_1_4}[29], {tnr_scaler_fp_1_1}[30], {image_upscaler_1_1}[31], {cas_1_1}[32], {odr_ofs_mp_1_4}[33], {b2i_ds_output_1_1}[34], {odr_ofs_dp_1_4}[35], {odr_tnr_scale_fp_yuv4n_1_4}[36] }
    uint8_t systemApisSizes[53] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[53] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 18 /*bnlm_3_4*/, 19 /*bxt_demosaic*/, 20 /*vcsc_2_0_b*/, 21 /*gltm_2_0*/, 22 /*xnr_5_4*/, 23 /*vcr_3_1*/, 24 /*glim_2_0*/, 25 /*acm_1_2*/, 26 /*gammatm_v4*/, 27 /*csc_1_1*/, 29 /*b2i_ds_1_1*/, 30 /*lbff_crop_espa_1_4*/, 31 /*tnr7_spatial_1_1*/, 32 /*tnr_scaler_lb_1_1*/, 28 /*fr_grid_1_0*/, 33 /*odr_af_std_1_4*/, 34 /*ifd_gmv_1_4*/, 35 /*gmv_statistics_1_1*/, 36 /*odr_gmv_feature_1_4*/, 37 /*odr_gmv_match_1_4*/, 38 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 39 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 40 /*tnr7_ims_1_2*/, 41 /*tnr7_bc_1_2*/, 42 /*odr_tnr_sp_bc_rs4n_1_4*/, 43 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 44 /*tnr7_blend_1_1*/, 47 /*image_upscaler_1_1*/, 48 /*cas_1_1*/, 49 /*odr_ofs_mp_1_4*/, 50 /*b2i_ds_output_1_1*/, 51 /*odr_ofs_dp_1_4*/, 45 /*odr_tnr_fp_yuvn_1_4*/, 46 /*tnr_scaler_fp_1_1*/, 52 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[18].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDolSmoothOuterNode::Init(LbffDolSmoothOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 8, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[8] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 53535 /*odr_bnlm_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x81, 0x0}; // { ifd_pipe_1_4[0], odr_bnlm_1_4[7] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, odr_bnlm_1_4}[1] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x83, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4}[1], {odr_bnlm_1_4}[2] }
    uint8_t systemApisSizes[8] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 220 /*odr_bnlm_1_4*/};
    uint16_t runKernelConfigOrder[8] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*gd_2_2*/, 5 /*wb_1_1*/, 6 /*bnlm_3_4*/, 7 /*odr_bnlm_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[6].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsNoGmvNoTnrNoSapOuterNode::Init(LbffDol3InputsNoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 38, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[38] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DE000FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[29], b2i_ds_1_1[30], lbff_crop_espa_1_4[31], image_upscaler_1_1[32], odr_ofs_mp_1_4[34], b2i_ds_output_1_1[35], odr_ofs_dp_1_4[36], odr_af_std_1_4[37] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x338001FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[10], {lbff_crop_espa_1_4}[11], {image_upscaler_1_1}[12], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[13], {odr_ofs_dp_1_4}[14], {odr_af_std_1_4}[15] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FE001FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[13], {fr_grid_1_0}[14], {b2i_ds_1_1}[15], {lbff_crop_espa_1_4}[16], {image_upscaler_1_1}[17], {cas_1_1}[18], {odr_ofs_mp_1_4}[19], {b2i_ds_output_1_1}[20], {odr_ofs_dp_1_4}[21], {odr_af_std_1_4}[22] }
    uint8_t systemApisSizes[38] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[38] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 19 /*bnlm_3_4*/, 20 /*bxt_demosaic*/, 21 /*vcsc_2_0_b*/, 22 /*gltm_2_0*/, 23 /*xnr_5_4*/, 24 /*vcr_3_1*/, 25 /*glim_2_0*/, 26 /*acm_1_2*/, 27 /*gammatm_v4*/, 28 /*csc_1_1*/, 30 /*b2i_ds_1_1*/, 31 /*lbff_crop_espa_1_4*/, 32 /*image_upscaler_1_1*/, 33 /*cas_1_1*/, 34 /*odr_ofs_mp_1_4*/, 35 /*b2i_ds_output_1_1*/, 36 /*odr_ofs_dp_1_4*/, 29 /*fr_grid_1_0*/, 37 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[19].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsWithGmvNoTnrNoSapOuterNode::Init(LbffDol3InputsWithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 42, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[42] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3FDE000FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[29], b2i_ds_1_1[30], lbff_crop_espa_1_4[31], image_upscaler_1_1[32], odr_ofs_mp_1_4[34], b2i_ds_output_1_1[35], odr_ofs_dp_1_4[36], odr_af_std_1_4[37], ifd_gmv_1_4[38], gmv_statistics_1_1[39], odr_gmv_feature_1_4[40], odr_gmv_match_1_4[41] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3F38001FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[10], {lbff_crop_espa_1_4}[11], {image_upscaler_1_1}[12], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[13], {odr_ofs_dp_1_4}[14], {odr_af_std_1_4}[15], {ifd_gmv_1_4}[16], {gmv_statistics_1_1}[17], {odr_gmv_feature_1_4}[18], {odr_gmv_match_1_4}[19] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFE001FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[13], {fr_grid_1_0}[14], {b2i_ds_1_1}[15], {lbff_crop_espa_1_4}[16], {image_upscaler_1_1}[17], {cas_1_1}[18], {odr_ofs_mp_1_4}[19], {b2i_ds_output_1_1}[20], {odr_ofs_dp_1_4}[21], {odr_af_std_1_4}[22], {ifd_gmv_1_4}[23], {gmv_statistics_1_1}[24], {odr_gmv_feature_1_4}[25], {odr_gmv_match_1_4}[26] }
    uint8_t systemApisSizes[42] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[42] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 19 /*bnlm_3_4*/, 20 /*bxt_demosaic*/, 21 /*vcsc_2_0_b*/, 22 /*gltm_2_0*/, 23 /*xnr_5_4*/, 24 /*vcr_3_1*/, 25 /*glim_2_0*/, 26 /*acm_1_2*/, 27 /*gammatm_v4*/, 28 /*csc_1_1*/, 30 /*b2i_ds_1_1*/, 31 /*lbff_crop_espa_1_4*/, 32 /*image_upscaler_1_1*/, 33 /*cas_1_1*/, 34 /*odr_ofs_mp_1_4*/, 35 /*b2i_ds_output_1_1*/, 36 /*odr_ofs_dp_1_4*/, 29 /*fr_grid_1_0*/, 37 /*odr_af_std_1_4*/, 38 /*ifd_gmv_1_4*/, 39 /*gmv_statistics_1_1*/, 40 /*odr_gmv_feature_1_4*/, 41 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[19].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsNoGmvWithTnrNoSapOuterNode::Init(LbffDol3InputsNoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 50, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[50] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DD9EE000FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[29], b2i_ds_1_1[30], lbff_crop_espa_1_4[31], tnr_scaler_lb_1_1[33], odr_af_std_1_4[34], ifd_tnr_sp_bc_yuv4nm1_1_4[35], ifd_tnr_sp_bc_rs4nm1_1_4[36], odr_tnr_sp_bc_rs4n_1_4[39], ifd_tnr_fp_blend_yuvnm1_1_4[40], odr_tnr_fp_yuvn_1_4[42], tnr_scaler_fp_1_1[43], image_upscaler_1_1[44], odr_ofs_mp_1_4[46], b2i_ds_output_1_1[47], odr_ofs_dp_1_4[48], odr_tnr_scale_fp_yuv4n_1_4[49] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3233D8001FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[10], {lbff_crop_espa_1_4}[11], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[12], {odr_af_std_1_4}[13], {ifd_tnr_sp_bc_yuv4nm1_1_4}[14], {ifd_tnr_sp_bc_rs4nm1_1_4}[15], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[16], {ifd_tnr_fp_blend_yuvnm1_1_4}[17], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[18], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[19], {odr_ofs_dp_1_4}[20], {odr_tnr_scale_fp_yuv4n_1_4}[21] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFBFE001FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[13], {fr_grid_1_0}[14], {b2i_ds_1_1}[15], {lbff_crop_espa_1_4}[16], {tnr7_spatial_1_1}[17], {tnr_scaler_lb_1_1}[18], {odr_af_std_1_4}[19], {ifd_tnr_sp_bc_yuv4nm1_1_4}[20], {ifd_tnr_sp_bc_rs4nm1_1_4}[21], {tnr7_ims_1_2, tnr7_bc_1_2}[22], {odr_tnr_sp_bc_rs4n_1_4}[23], {ifd_tnr_fp_blend_yuvnm1_1_4}[24], {tnr7_blend_1_1}[25], {odr_tnr_fp_yuvn_1_4}[26], {tnr_scaler_fp_1_1}[27], {image_upscaler_1_1}[28], {cas_1_1}[29], {odr_ofs_mp_1_4}[30], {b2i_ds_output_1_1}[31], {odr_ofs_dp_1_4}[32], {odr_tnr_scale_fp_yuv4n_1_4}[33] }
    uint8_t systemApisSizes[50] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[50] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 19 /*bnlm_3_4*/, 20 /*bxt_demosaic*/, 21 /*vcsc_2_0_b*/, 22 /*gltm_2_0*/, 23 /*xnr_5_4*/, 24 /*vcr_3_1*/, 25 /*glim_2_0*/, 26 /*acm_1_2*/, 27 /*gammatm_v4*/, 28 /*csc_1_1*/, 30 /*b2i_ds_1_1*/, 31 /*lbff_crop_espa_1_4*/, 32 /*tnr7_spatial_1_1*/, 33 /*tnr_scaler_lb_1_1*/, 29 /*fr_grid_1_0*/, 34 /*odr_af_std_1_4*/, 35 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 36 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 37 /*tnr7_ims_1_2*/, 38 /*tnr7_bc_1_2*/, 39 /*odr_tnr_sp_bc_rs4n_1_4*/, 40 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 41 /*tnr7_blend_1_1*/, 44 /*image_upscaler_1_1*/, 45 /*cas_1_1*/, 46 /*odr_ofs_mp_1_4*/, 47 /*b2i_ds_output_1_1*/, 48 /*odr_ofs_dp_1_4*/, 42 /*odr_tnr_fp_yuvn_1_4*/, 43 /*tnr_scaler_fp_1_1*/, 49 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[19].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsWithGmvWithTnrNoSapOuterNode::Init(LbffDol3InputsWithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 54, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[54] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DD9FEE000FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[29], b2i_ds_1_1[30], lbff_crop_espa_1_4[31], tnr_scaler_lb_1_1[33], odr_af_std_1_4[34], ifd_gmv_1_4[35], gmv_statistics_1_1[36], odr_gmv_feature_1_4[37], odr_gmv_match_1_4[38], ifd_tnr_sp_bc_yuv4nm1_1_4[39], ifd_tnr_sp_bc_rs4nm1_1_4[40], odr_tnr_sp_bc_rs4n_1_4[43], ifd_tnr_fp_blend_yuvnm1_1_4[44], odr_tnr_fp_yuvn_1_4[46], tnr_scaler_fp_1_1[47], image_upscaler_1_1[48], odr_ofs_mp_1_4[50], b2i_ds_output_1_1[51], odr_ofs_dp_1_4[52], odr_tnr_scale_fp_yuv4n_1_4[53] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3233FD8001FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[10], {lbff_crop_espa_1_4}[11], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[12], {odr_af_std_1_4}[13], {ifd_gmv_1_4}[14], {gmv_statistics_1_1}[15], {odr_gmv_feature_1_4}[16], {odr_gmv_match_1_4}[17], {ifd_tnr_sp_bc_yuv4nm1_1_4}[18], {ifd_tnr_sp_bc_rs4nm1_1_4}[19], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[20], {ifd_tnr_fp_blend_yuvnm1_1_4}[21], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[22], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[23], {odr_ofs_dp_1_4}[24], {odr_tnr_scale_fp_yuv4n_1_4}[25] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFBFFE001FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[13], {fr_grid_1_0}[14], {b2i_ds_1_1}[15], {lbff_crop_espa_1_4}[16], {tnr7_spatial_1_1}[17], {tnr_scaler_lb_1_1}[18], {odr_af_std_1_4}[19], {ifd_gmv_1_4}[20], {gmv_statistics_1_1}[21], {odr_gmv_feature_1_4}[22], {odr_gmv_match_1_4}[23], {ifd_tnr_sp_bc_yuv4nm1_1_4}[24], {ifd_tnr_sp_bc_rs4nm1_1_4}[25], {tnr7_ims_1_2, tnr7_bc_1_2}[26], {odr_tnr_sp_bc_rs4n_1_4}[27], {ifd_tnr_fp_blend_yuvnm1_1_4}[28], {tnr7_blend_1_1}[29], {odr_tnr_fp_yuvn_1_4}[30], {tnr_scaler_fp_1_1}[31], {image_upscaler_1_1}[32], {cas_1_1}[33], {odr_ofs_mp_1_4}[34], {b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36], {odr_tnr_scale_fp_yuv4n_1_4}[37] }
    uint8_t systemApisSizes[54] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[54] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 19 /*bnlm_3_4*/, 20 /*bxt_demosaic*/, 21 /*vcsc_2_0_b*/, 22 /*gltm_2_0*/, 23 /*xnr_5_4*/, 24 /*vcr_3_1*/, 25 /*glim_2_0*/, 26 /*acm_1_2*/, 27 /*gammatm_v4*/, 28 /*csc_1_1*/, 30 /*b2i_ds_1_1*/, 31 /*lbff_crop_espa_1_4*/, 32 /*tnr7_spatial_1_1*/, 33 /*tnr_scaler_lb_1_1*/, 29 /*fr_grid_1_0*/, 34 /*odr_af_std_1_4*/, 35 /*ifd_gmv_1_4*/, 36 /*gmv_statistics_1_1*/, 37 /*odr_gmv_feature_1_4*/, 38 /*odr_gmv_match_1_4*/, 39 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 40 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 41 /*tnr7_ims_1_2*/, 42 /*tnr7_bc_1_2*/, 43 /*odr_tnr_sp_bc_rs4n_1_4*/, 44 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 45 /*tnr7_blend_1_1*/, 48 /*image_upscaler_1_1*/, 49 /*cas_1_1*/, 50 /*odr_ofs_mp_1_4*/, 51 /*b2i_ds_output_1_1*/, 52 /*odr_ofs_dp_1_4*/, 46 /*odr_tnr_fp_yuvn_1_4*/, 47 /*tnr_scaler_fp_1_1*/, 53 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[19].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrNoGmvNoTnrNoSapOuterNode::Init(LbffRgbIrNoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 36, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[36] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xFDF0007F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[24], fr_grid_1_0[25], b2i_ds_1_1[26], lbff_crop_espa_1_4[27], image_upscaler_1_1[28], odr_ofs_mp_1_4[30], b2i_ds_output_1_1[31], odr_ofs_dp_1_4[32], aestatistics_2_1[33], odr_ae_1_4[34], odr_af_std_1_4[35] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xF38000FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {image_upscaler_1_1}[9], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[10], {odr_ofs_dp_1_4}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFF000FF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {b2i_ds_1_1}[12], {lbff_crop_espa_1_4}[13], {image_upscaler_1_1}[14], {cas_1_1}[15], {odr_ofs_mp_1_4}[16], {b2i_ds_output_1_1}[17], {odr_ofs_dp_1_4}[18], {aestatistics_2_1}[19], {odr_ae_1_4}[20], {odr_af_std_1_4}[21] }
    uint8_t systemApisSizes[36] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[36] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 14 /*bnlm_3_4*/, 15 /*bxt_demosaic*/, 16 /*vcsc_2_0_b*/, 17 /*gltm_2_0*/, 18 /*xnr_5_4*/, 19 /*vcr_3_1*/, 20 /*glim_2_0*/, 21 /*acm_1_2*/, 22 /*gammatm_v4*/, 23 /*csc_1_1*/, 26 /*b2i_ds_1_1*/, 27 /*lbff_crop_espa_1_4*/, 28 /*image_upscaler_1_1*/, 29 /*cas_1_1*/, 30 /*odr_ofs_mp_1_4*/, 31 /*b2i_ds_output_1_1*/, 32 /*odr_ofs_dp_1_4*/, 24 /*ccm_3a_2_0*/, 33 /*aestatistics_2_1*/, 34 /*odr_ae_1_4*/, 25 /*fr_grid_1_0*/, 35 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[14].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrIrNoGmvNoTnrNoSapOuterNode::Init(LbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 32, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[32] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xFF7E0009, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], lbff_crop_espa_1_4[21], image_upscaler_1_1[22], odr_ofs_mp_1_4[24], b2i_ds_output_1_1[25], odr_ofs_dp_1_4[26], odr_awb_std_1_4[27], odr_awb_sat_1_4[28], aestatistics_2_1[29], odr_ae_1_4[30], odr_af_std_1_4[31] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xFCE0001A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFE001B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {image_upscaler_1_1}[9], {cas_1_1}[10], {odr_ofs_mp_1_4}[11], {b2i_ds_output_1_1}[12], {odr_ofs_dp_1_4}[13], {odr_awb_std_1_4}[14], {odr_awb_sat_1_4}[15], {aestatistics_2_1}[16], {odr_ae_1_4}[17], {odr_af_std_1_4}[18] }
    uint8_t systemApisSizes[32] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[32] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*gd_2_2*/, 6 /*wb_1_1*/, 7 /*bnlm_3_4*/, 8 /*bxt_demosaic*/, 9 /*vcsc_2_0_b*/, 10 /*gltm_2_0*/, 11 /*xnr_5_4*/, 12 /*vcr_3_1*/, 13 /*glim_2_0*/, 14 /*acm_1_2*/, 15 /*gammatm_v4*/, 16 /*csc_1_1*/, 20 /*b2i_ds_1_1*/, 21 /*lbff_crop_espa_1_4*/, 22 /*image_upscaler_1_1*/, 23 /*cas_1_1*/, 24 /*odr_ofs_mp_1_4*/, 25 /*b2i_ds_output_1_1*/, 26 /*odr_ofs_dp_1_4*/, 17 /*rgbs_grid_1_1*/, 27 /*odr_awb_std_1_4*/, 28 /*odr_awb_sat_1_4*/, 18 /*ccm_3a_2_0*/, 29 /*aestatistics_2_1*/, 30 /*odr_ae_1_4*/, 19 /*fr_grid_1_0*/, 31 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[7].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrWithGmvNoTnrNoSapOuterNode::Init(LbffRgbIrWithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 40, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[40] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xFFDF0007F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[24], fr_grid_1_0[25], b2i_ds_1_1[26], lbff_crop_espa_1_4[27], image_upscaler_1_1[28], odr_ofs_mp_1_4[30], b2i_ds_output_1_1[31], odr_ofs_dp_1_4[32], aestatistics_2_1[33], odr_ae_1_4[34], odr_af_std_1_4[35], ifd_gmv_1_4[36], gmv_statistics_1_1[37], odr_gmv_feature_1_4[38], odr_gmv_match_1_4[39] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xFF38000FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {image_upscaler_1_1}[9], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[10], {odr_ofs_dp_1_4}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {gmv_statistics_1_1}[16], {odr_gmv_feature_1_4}[17], {odr_gmv_match_1_4}[18] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFF000FF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {b2i_ds_1_1}[12], {lbff_crop_espa_1_4}[13], {image_upscaler_1_1}[14], {cas_1_1}[15], {odr_ofs_mp_1_4}[16], {b2i_ds_output_1_1}[17], {odr_ofs_dp_1_4}[18], {aestatistics_2_1}[19], {odr_ae_1_4}[20], {odr_af_std_1_4}[21], {ifd_gmv_1_4}[22], {gmv_statistics_1_1}[23], {odr_gmv_feature_1_4}[24], {odr_gmv_match_1_4}[25] }
    uint8_t systemApisSizes[40] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[40] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 14 /*bnlm_3_4*/, 15 /*bxt_demosaic*/, 16 /*vcsc_2_0_b*/, 17 /*gltm_2_0*/, 18 /*xnr_5_4*/, 19 /*vcr_3_1*/, 20 /*glim_2_0*/, 21 /*acm_1_2*/, 22 /*gammatm_v4*/, 23 /*csc_1_1*/, 26 /*b2i_ds_1_1*/, 27 /*lbff_crop_espa_1_4*/, 28 /*image_upscaler_1_1*/, 29 /*cas_1_1*/, 30 /*odr_ofs_mp_1_4*/, 31 /*b2i_ds_output_1_1*/, 32 /*odr_ofs_dp_1_4*/, 24 /*ccm_3a_2_0*/, 33 /*aestatistics_2_1*/, 34 /*odr_ae_1_4*/, 25 /*fr_grid_1_0*/, 35 /*odr_af_std_1_4*/, 36 /*ifd_gmv_1_4*/, 37 /*gmv_statistics_1_1*/, 38 /*odr_gmv_feature_1_4*/, 39 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[14].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrNoGmvWithTnrNoSapOuterNode::Init(LbffRgbIrNoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 48, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[48] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xF767EF0007F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[24], fr_grid_1_0[25], b2i_ds_1_1[26], lbff_crop_espa_1_4[27], tnr_scaler_lb_1_1[29], aestatistics_2_1[30], odr_ae_1_4[31], odr_af_std_1_4[32], ifd_tnr_sp_bc_yuv4nm1_1_4[33], ifd_tnr_sp_bc_rs4nm1_1_4[34], odr_tnr_sp_bc_rs4n_1_4[37], ifd_tnr_fp_blend_yuvnm1_1_4[38], odr_tnr_fp_yuvn_1_4[40], tnr_scaler_fp_1_1[41], image_upscaler_1_1[42], odr_ofs_mp_1_4[44], b2i_ds_output_1_1[45], odr_ofs_dp_1_4[46], odr_tnr_scale_fp_yuv4n_1_4[47] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xC8CFD8000FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[17], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[18], {odr_ofs_dp_1_4}[19], {odr_tnr_scale_fp_yuv4n_1_4}[20] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFEFFF000FF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {b2i_ds_1_1}[12], {lbff_crop_espa_1_4}[13], {tnr7_spatial_1_1}[14], {tnr_scaler_lb_1_1}[15], {aestatistics_2_1}[16], {odr_ae_1_4}[17], {odr_af_std_1_4}[18], {ifd_tnr_sp_bc_yuv4nm1_1_4}[19], {ifd_tnr_sp_bc_rs4nm1_1_4}[20], {tnr7_ims_1_2, tnr7_bc_1_2}[21], {odr_tnr_sp_bc_rs4n_1_4}[22], {ifd_tnr_fp_blend_yuvnm1_1_4}[23], {tnr7_blend_1_1}[24], {odr_tnr_fp_yuvn_1_4}[25], {tnr_scaler_fp_1_1}[26], {image_upscaler_1_1}[27], {cas_1_1}[28], {odr_ofs_mp_1_4}[29], {b2i_ds_output_1_1}[30], {odr_ofs_dp_1_4}[31], {odr_tnr_scale_fp_yuv4n_1_4}[32] }
    uint8_t systemApisSizes[48] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[48] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 14 /*bnlm_3_4*/, 15 /*bxt_demosaic*/, 16 /*vcsc_2_0_b*/, 17 /*gltm_2_0*/, 18 /*xnr_5_4*/, 19 /*vcr_3_1*/, 20 /*glim_2_0*/, 21 /*acm_1_2*/, 22 /*gammatm_v4*/, 23 /*csc_1_1*/, 26 /*b2i_ds_1_1*/, 27 /*lbff_crop_espa_1_4*/, 28 /*tnr7_spatial_1_1*/, 29 /*tnr_scaler_lb_1_1*/, 24 /*ccm_3a_2_0*/, 30 /*aestatistics_2_1*/, 31 /*odr_ae_1_4*/, 25 /*fr_grid_1_0*/, 32 /*odr_af_std_1_4*/, 33 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 34 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 35 /*tnr7_ims_1_2*/, 36 /*tnr7_bc_1_2*/, 37 /*odr_tnr_sp_bc_rs4n_1_4*/, 38 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 39 /*tnr7_blend_1_1*/, 42 /*image_upscaler_1_1*/, 43 /*cas_1_1*/, 44 /*odr_ofs_mp_1_4*/, 45 /*b2i_ds_output_1_1*/, 46 /*odr_ofs_dp_1_4*/, 40 /*odr_tnr_fp_yuvn_1_4*/, 41 /*tnr_scaler_fp_1_1*/, 47 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[14].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrIrNoGmvWithTnrNoSapOuterNode::Init(LbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 44, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[44] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xF767FBE0009, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], lbff_crop_espa_1_4[21], tnr_scaler_lb_1_1[23], odr_awb_std_1_4[24], odr_awb_sat_1_4[25], aestatistics_2_1[26], odr_ae_1_4[27], odr_af_std_1_4[28], ifd_tnr_sp_bc_yuv4nm1_1_4[29], ifd_tnr_sp_bc_rs4nm1_1_4[30], odr_tnr_sp_bc_rs4n_1_4[33], ifd_tnr_fp_blend_yuvnm1_1_4[34], odr_tnr_fp_yuvn_1_4[36], tnr_scaler_fp_1_1[37], image_upscaler_1_1[38], odr_ofs_mp_1_4[40], b2i_ds_output_1_1[41], odr_ofs_dp_1_4[42], odr_tnr_scale_fp_yuv4n_1_4[43] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xC8CFF60001A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[15], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[16], {odr_ofs_dp_1_4}[17], {odr_tnr_scale_fp_yuv4n_1_4}[18] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFEFFFE001B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {tnr7_spatial_1_1}[9], {tnr_scaler_lb_1_1}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_tnr_sp_bc_yuv4nm1_1_4}[16], {ifd_tnr_sp_bc_rs4nm1_1_4}[17], {tnr7_ims_1_2, tnr7_bc_1_2}[18], {odr_tnr_sp_bc_rs4n_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {tnr7_blend_1_1}[21], {odr_tnr_fp_yuvn_1_4}[22], {tnr_scaler_fp_1_1}[23], {image_upscaler_1_1}[24], {cas_1_1}[25], {odr_ofs_mp_1_4}[26], {b2i_ds_output_1_1}[27], {odr_ofs_dp_1_4}[28], {odr_tnr_scale_fp_yuv4n_1_4}[29] }
    uint8_t systemApisSizes[44] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[44] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*gd_2_2*/, 6 /*wb_1_1*/, 7 /*bnlm_3_4*/, 8 /*bxt_demosaic*/, 9 /*vcsc_2_0_b*/, 10 /*gltm_2_0*/, 11 /*xnr_5_4*/, 12 /*vcr_3_1*/, 13 /*glim_2_0*/, 14 /*acm_1_2*/, 15 /*gammatm_v4*/, 16 /*csc_1_1*/, 20 /*b2i_ds_1_1*/, 21 /*lbff_crop_espa_1_4*/, 22 /*tnr7_spatial_1_1*/, 23 /*tnr_scaler_lb_1_1*/, 17 /*rgbs_grid_1_1*/, 24 /*odr_awb_std_1_4*/, 25 /*odr_awb_sat_1_4*/, 18 /*ccm_3a_2_0*/, 26 /*aestatistics_2_1*/, 27 /*odr_ae_1_4*/, 19 /*fr_grid_1_0*/, 28 /*odr_af_std_1_4*/, 29 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 30 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 31 /*tnr7_ims_1_2*/, 32 /*tnr7_bc_1_2*/, 33 /*odr_tnr_sp_bc_rs4n_1_4*/, 34 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35 /*tnr7_blend_1_1*/, 38 /*image_upscaler_1_1*/, 39 /*cas_1_1*/, 40 /*odr_ofs_mp_1_4*/, 41 /*b2i_ds_output_1_1*/, 42 /*odr_ofs_dp_1_4*/, 36 /*odr_tnr_fp_yuvn_1_4*/, 37 /*tnr_scaler_fp_1_1*/, 43 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[7].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrWithGmvWithTnrNoSapOuterNode::Init(LbffRgbIrWithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 52, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[52] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xF767FEF0007F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[24], fr_grid_1_0[25], b2i_ds_1_1[26], lbff_crop_espa_1_4[27], tnr_scaler_lb_1_1[29], aestatistics_2_1[30], odr_ae_1_4[31], odr_af_std_1_4[32], ifd_gmv_1_4[33], gmv_statistics_1_1[34], odr_gmv_feature_1_4[35], odr_gmv_match_1_4[36], ifd_tnr_sp_bc_yuv4nm1_1_4[37], ifd_tnr_sp_bc_rs4nm1_1_4[38], odr_tnr_sp_bc_rs4n_1_4[41], ifd_tnr_fp_blend_yuvnm1_1_4[42], odr_tnr_fp_yuvn_1_4[44], tnr_scaler_fp_1_1[45], image_upscaler_1_1[46], odr_ofs_mp_1_4[48], b2i_ds_output_1_1[49], odr_ofs_dp_1_4[50], odr_tnr_scale_fp_yuv4n_1_4[51] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xC8CFFD8000FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {gmv_statistics_1_1}[14], {odr_gmv_feature_1_4}[15], {odr_gmv_match_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[21], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[22], {odr_ofs_dp_1_4}[23], {odr_tnr_scale_fp_yuv4n_1_4}[24] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFEFFFF000FF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {b2i_ds_1_1}[12], {lbff_crop_espa_1_4}[13], {tnr7_spatial_1_1}[14], {tnr_scaler_lb_1_1}[15], {aestatistics_2_1}[16], {odr_ae_1_4}[17], {odr_af_std_1_4}[18], {ifd_gmv_1_4}[19], {gmv_statistics_1_1}[20], {odr_gmv_feature_1_4}[21], {odr_gmv_match_1_4}[22], {ifd_tnr_sp_bc_yuv4nm1_1_4}[23], {ifd_tnr_sp_bc_rs4nm1_1_4}[24], {tnr7_ims_1_2, tnr7_bc_1_2}[25], {odr_tnr_sp_bc_rs4n_1_4}[26], {ifd_tnr_fp_blend_yuvnm1_1_4}[27], {tnr7_blend_1_1}[28], {odr_tnr_fp_yuvn_1_4}[29], {tnr_scaler_fp_1_1}[30], {image_upscaler_1_1}[31], {cas_1_1}[32], {odr_ofs_mp_1_4}[33], {b2i_ds_output_1_1}[34], {odr_ofs_dp_1_4}[35], {odr_tnr_scale_fp_yuv4n_1_4}[36] }
    uint8_t systemApisSizes[52] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[52] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 14 /*bnlm_3_4*/, 15 /*bxt_demosaic*/, 16 /*vcsc_2_0_b*/, 17 /*gltm_2_0*/, 18 /*xnr_5_4*/, 19 /*vcr_3_1*/, 20 /*glim_2_0*/, 21 /*acm_1_2*/, 22 /*gammatm_v4*/, 23 /*csc_1_1*/, 26 /*b2i_ds_1_1*/, 27 /*lbff_crop_espa_1_4*/, 28 /*tnr7_spatial_1_1*/, 29 /*tnr_scaler_lb_1_1*/, 24 /*ccm_3a_2_0*/, 30 /*aestatistics_2_1*/, 31 /*odr_ae_1_4*/, 25 /*fr_grid_1_0*/, 32 /*odr_af_std_1_4*/, 33 /*ifd_gmv_1_4*/, 34 /*gmv_statistics_1_1*/, 35 /*odr_gmv_feature_1_4*/, 36 /*odr_gmv_match_1_4*/, 37 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 38 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 39 /*tnr7_ims_1_2*/, 40 /*tnr7_bc_1_2*/, 41 /*odr_tnr_sp_bc_rs4n_1_4*/, 42 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 43 /*tnr7_blend_1_1*/, 46 /*image_upscaler_1_1*/, 47 /*cas_1_1*/, 48 /*odr_ofs_mp_1_4*/, 49 /*b2i_ds_output_1_1*/, 50 /*odr_ofs_dp_1_4*/, 44 /*odr_tnr_fp_yuvn_1_4*/, 45 /*tnr_scaler_fp_1_1*/, 51 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[14].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrNoGmvNoTnrNoSapOuterNode::Init(LbffIrNoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 33, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[33] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1FEFC0009, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_1[21], lbff_crop_espa_1_4[22], image_upscaler_1_1[23], odr_ofs_mp_1_4[25], b2i_ds_output_1_1[26], odr_ofs_dp_1_4[27], odr_awb_std_1_4[28], odr_awb_sat_1_4[29], aestatistics_2_1[30], odr_ae_1_4[31], odr_af_std_1_4[32] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1F9C0001A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFFC001B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {image_upscaler_1_1}[9], {cas_1_1}[10], {odr_ofs_mp_1_4}[11], {b2i_ds_output_1_1}[12], {odr_ofs_dp_1_4}[13], {odr_awb_std_1_4}[14], {odr_awb_sat_1_4}[15], {aestatistics_2_1}[16], {odr_ae_1_4}[17], {odr_af_std_1_4}[18] }
    uint8_t systemApisSizes[33] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/};
    uint16_t runKernelConfigOrder[33] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 8 /*bnlm_3_4*/, 9 /*bxt_demosaic*/, 10 /*vcsc_2_0_b*/, 11 /*gltm_2_0*/, 12 /*xnr_5_4*/, 13 /*vcr_3_1*/, 14 /*glim_2_0*/, 15 /*acm_1_2*/, 16 /*gammatm_v4*/, 17 /*csc_1_1*/, 21 /*b2i_ds_1_1*/, 22 /*lbff_crop_espa_1_4*/, 23 /*image_upscaler_1_1*/, 24 /*cas_1_1*/, 25 /*odr_ofs_mp_1_4*/, 26 /*b2i_ds_output_1_1*/, 27 /*odr_ofs_dp_1_4*/, 18 /*rgbs_grid_1_1*/, 28 /*odr_awb_std_1_4*/, 29 /*odr_awb_sat_1_4*/, 19 /*ccm_3a_2_0*/, 30 /*aestatistics_2_1*/, 31 /*odr_ae_1_4*/, 20 /*fr_grid_1_0*/, 32 /*odr_af_std_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[8].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrWithGmvNoTnrNoSapOuterNode::Init(LbffIrWithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 37, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[37] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1FFEFC0009, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_1[21], lbff_crop_espa_1_4[22], image_upscaler_1_1[23], odr_ofs_mp_1_4[25], b2i_ds_output_1_1[26], odr_ofs_dp_1_4[27], odr_awb_std_1_4[28], odr_awb_sat_1_4[29], aestatistics_2_1[30], odr_ae_1_4[31], odr_af_std_1_4[32], ifd_gmv_1_4[33], gmv_statistics_1_1[34], odr_gmv_feature_1_4[35], odr_gmv_match_1_4[36] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1FF9C0001A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {gmv_statistics_1_1}[14], {odr_gmv_feature_1_4}[15], {odr_gmv_match_1_4}[16] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFFFC001B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {image_upscaler_1_1}[9], {cas_1_1}[10], {odr_ofs_mp_1_4}[11], {b2i_ds_output_1_1}[12], {odr_ofs_dp_1_4}[13], {odr_awb_std_1_4}[14], {odr_awb_sat_1_4}[15], {aestatistics_2_1}[16], {odr_ae_1_4}[17], {odr_af_std_1_4}[18], {ifd_gmv_1_4}[19], {gmv_statistics_1_1}[20], {odr_gmv_feature_1_4}[21], {odr_gmv_match_1_4}[22] }
    uint8_t systemApisSizes[37] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[37] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 8 /*bnlm_3_4*/, 9 /*bxt_demosaic*/, 10 /*vcsc_2_0_b*/, 11 /*gltm_2_0*/, 12 /*xnr_5_4*/, 13 /*vcr_3_1*/, 14 /*glim_2_0*/, 15 /*acm_1_2*/, 16 /*gammatm_v4*/, 17 /*csc_1_1*/, 21 /*b2i_ds_1_1*/, 22 /*lbff_crop_espa_1_4*/, 23 /*image_upscaler_1_1*/, 24 /*cas_1_1*/, 25 /*odr_ofs_mp_1_4*/, 26 /*b2i_ds_output_1_1*/, 27 /*odr_ofs_dp_1_4*/, 18 /*rgbs_grid_1_1*/, 28 /*odr_awb_std_1_4*/, 29 /*odr_awb_sat_1_4*/, 19 /*ccm_3a_2_0*/, 30 /*aestatistics_2_1*/, 31 /*odr_ae_1_4*/, 20 /*fr_grid_1_0*/, 32 /*odr_af_std_1_4*/, 33 /*ifd_gmv_1_4*/, 34 /*gmv_statistics_1_1*/, 35 /*odr_gmv_feature_1_4*/, 36 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[8].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrNoGmvWithTnrNoSapOuterNode::Init(LbffIrNoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 45, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[45] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EECFF7C0009, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_1[21], lbff_crop_espa_1_4[22], tnr_scaler_lb_1_1[24], odr_awb_std_1_4[25], odr_awb_sat_1_4[26], aestatistics_2_1[27], odr_ae_1_4[28], odr_af_std_1_4[29], ifd_tnr_sp_bc_yuv4nm1_1_4[30], ifd_tnr_sp_bc_rs4nm1_1_4[31], odr_tnr_sp_bc_rs4n_1_4[34], ifd_tnr_fp_blend_yuvnm1_1_4[35], odr_tnr_fp_yuvn_1_4[37], tnr_scaler_fp_1_1[38], image_upscaler_1_1[39], odr_ofs_mp_1_4[41], b2i_ds_output_1_1[42], odr_ofs_dp_1_4[43], odr_tnr_scale_fp_yuv4n_1_4[44] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1919FEC0001A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[15], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[16], {odr_ofs_dp_1_4}[17], {odr_tnr_scale_fp_yuv4n_1_4}[18] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFDFFFC001B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {tnr7_spatial_1_1}[9], {tnr_scaler_lb_1_1}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_tnr_sp_bc_yuv4nm1_1_4}[16], {ifd_tnr_sp_bc_rs4nm1_1_4}[17], {tnr7_ims_1_2, tnr7_bc_1_2}[18], {odr_tnr_sp_bc_rs4n_1_4}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {tnr7_blend_1_1}[21], {odr_tnr_fp_yuvn_1_4}[22], {tnr_scaler_fp_1_1}[23], {image_upscaler_1_1}[24], {cas_1_1}[25], {odr_ofs_mp_1_4}[26], {b2i_ds_output_1_1}[27], {odr_ofs_dp_1_4}[28], {odr_tnr_scale_fp_yuv4n_1_4}[29] }
    uint8_t systemApisSizes[45] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[45] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 8 /*bnlm_3_4*/, 9 /*bxt_demosaic*/, 10 /*vcsc_2_0_b*/, 11 /*gltm_2_0*/, 12 /*xnr_5_4*/, 13 /*vcr_3_1*/, 14 /*glim_2_0*/, 15 /*acm_1_2*/, 16 /*gammatm_v4*/, 17 /*csc_1_1*/, 21 /*b2i_ds_1_1*/, 22 /*lbff_crop_espa_1_4*/, 23 /*tnr7_spatial_1_1*/, 24 /*tnr_scaler_lb_1_1*/, 18 /*rgbs_grid_1_1*/, 25 /*odr_awb_std_1_4*/, 26 /*odr_awb_sat_1_4*/, 19 /*ccm_3a_2_0*/, 27 /*aestatistics_2_1*/, 28 /*odr_ae_1_4*/, 20 /*fr_grid_1_0*/, 29 /*odr_af_std_1_4*/, 30 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 31 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 32 /*tnr7_ims_1_2*/, 33 /*tnr7_bc_1_2*/, 34 /*odr_tnr_sp_bc_rs4n_1_4*/, 35 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 36 /*tnr7_blend_1_1*/, 39 /*image_upscaler_1_1*/, 40 /*cas_1_1*/, 41 /*odr_ofs_mp_1_4*/, 42 /*b2i_ds_output_1_1*/, 43 /*odr_ofs_dp_1_4*/, 37 /*odr_tnr_fp_yuvn_1_4*/, 38 /*tnr_scaler_fp_1_1*/, 44 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[8].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrWithGmvWithTnrNoSapOuterNode::Init(LbffIrWithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 49, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[49] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1EECFFF7C0009, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_1[21], lbff_crop_espa_1_4[22], tnr_scaler_lb_1_1[24], odr_awb_std_1_4[25], odr_awb_sat_1_4[26], aestatistics_2_1[27], odr_ae_1_4[28], odr_af_std_1_4[29], ifd_gmv_1_4[30], gmv_statistics_1_1[31], odr_gmv_feature_1_4[32], odr_gmv_match_1_4[33], ifd_tnr_sp_bc_yuv4nm1_1_4[34], ifd_tnr_sp_bc_rs4nm1_1_4[35], odr_tnr_sp_bc_rs4n_1_4[38], ifd_tnr_fp_blend_yuvnm1_1_4[39], odr_tnr_fp_yuvn_1_4[41], tnr_scaler_fp_1_1[42], image_upscaler_1_1[43], odr_ofs_mp_1_4[45], b2i_ds_output_1_1[46], odr_ofs_dp_1_4[47], odr_tnr_scale_fp_yuv4n_1_4[48] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1919FFEC0001A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {gmv_statistics_1_1}[12], {odr_gmv_feature_1_4}[13], {odr_gmv_match_1_4}[14], {ifd_tnr_sp_bc_yuv4nm1_1_4}[15], {ifd_tnr_sp_bc_rs4nm1_1_4}[16], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[19], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[20], {odr_ofs_dp_1_4}[21], {odr_tnr_scale_fp_yuv4n_1_4}[22] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFDFFFFC001B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {b2i_ds_1_1}[7], {lbff_crop_espa_1_4}[8], {tnr7_spatial_1_1}[9], {tnr_scaler_lb_1_1}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_gmv_1_4}[16], {gmv_statistics_1_1}[17], {odr_gmv_feature_1_4}[18], {odr_gmv_match_1_4}[19], {ifd_tnr_sp_bc_yuv4nm1_1_4}[20], {ifd_tnr_sp_bc_rs4nm1_1_4}[21], {tnr7_ims_1_2, tnr7_bc_1_2}[22], {odr_tnr_sp_bc_rs4n_1_4}[23], {ifd_tnr_fp_blend_yuvnm1_1_4}[24], {tnr7_blend_1_1}[25], {odr_tnr_fp_yuvn_1_4}[26], {tnr_scaler_fp_1_1}[27], {image_upscaler_1_1}[28], {cas_1_1}[29], {odr_ofs_mp_1_4}[30], {b2i_ds_output_1_1}[31], {odr_ofs_dp_1_4}[32], {odr_tnr_scale_fp_yuv4n_1_4}[33] }
    uint8_t systemApisSizes[49] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[49] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 8 /*bnlm_3_4*/, 9 /*bxt_demosaic*/, 10 /*vcsc_2_0_b*/, 11 /*gltm_2_0*/, 12 /*xnr_5_4*/, 13 /*vcr_3_1*/, 14 /*glim_2_0*/, 15 /*acm_1_2*/, 16 /*gammatm_v4*/, 17 /*csc_1_1*/, 21 /*b2i_ds_1_1*/, 22 /*lbff_crop_espa_1_4*/, 23 /*tnr7_spatial_1_1*/, 24 /*tnr_scaler_lb_1_1*/, 18 /*rgbs_grid_1_1*/, 25 /*odr_awb_std_1_4*/, 26 /*odr_awb_sat_1_4*/, 19 /*ccm_3a_2_0*/, 27 /*aestatistics_2_1*/, 28 /*odr_ae_1_4*/, 20 /*fr_grid_1_0*/, 29 /*odr_af_std_1_4*/, 30 /*ifd_gmv_1_4*/, 31 /*gmv_statistics_1_1*/, 32 /*odr_gmv_feature_1_4*/, 33 /*odr_gmv_match_1_4*/, 34 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 35 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 36 /*tnr7_ims_1_2*/, 37 /*tnr7_bc_1_2*/, 38 /*odr_tnr_sp_bc_rs4n_1_4*/, 39 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 40 /*tnr7_blend_1_1*/, 43 /*image_upscaler_1_1*/, 44 /*cas_1_1*/, 45 /*odr_ofs_mp_1_4*/, 46 /*b2i_ds_output_1_1*/, 47 /*odr_ofs_dp_1_4*/, 41 /*odr_tnr_fp_yuvn_1_4*/, 42 /*tnr_scaler_fp_1_1*/, 48 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[8].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode::Init(LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 39, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[39] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x7FFBF00071, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[20], ccm_3a_2_0[21], fr_grid_1_0[22], b2i_ds_1_1[23], lbff_crop_espa_1_4[24], image_upscaler_1_1[25], odr_ofs_mp_1_4[27], b2i_ds_output_1_1[28], odr_ofs_dp_1_4[29], odr_awb_std_1_4[30], odr_awb_sat_1_4[31], aestatistics_2_1[32], odr_ae_1_4[33], odr_af_std_1_4[34], ifd_pdaf_1_4[35], pext_1_0[36], pafstatistics_1_2[37], odr_pdaf_1_4[38] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x7FE70000C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FFFF000F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {image_upscaler_1_1}[11], {cas_1_1}[12], {odr_ofs_mp_1_4}[13], {b2i_ds_output_1_1}[14], {odr_ofs_dp_1_4}[15], {odr_awb_std_1_4}[16], {odr_awb_sat_1_4}[17], {aestatistics_2_1}[18], {odr_ae_1_4}[19], {odr_af_std_1_4}[20], {ifd_pdaf_1_4}[21], {pext_1_0}[22], {pafstatistics_1_2}[23], {odr_pdaf_1_4}[24] }
    uint8_t systemApisSizes[39] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/};
    uint16_t runKernelConfigOrder[39] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 10 /*bnlm_3_4*/, 11 /*bxt_demosaic*/, 12 /*vcsc_2_0_b*/, 13 /*gltm_2_0*/, 14 /*xnr_5_4*/, 15 /*vcr_3_1*/, 16 /*glim_2_0*/, 17 /*acm_1_2*/, 18 /*gammatm_v4*/, 19 /*csc_1_1*/, 23 /*b2i_ds_1_1*/, 24 /*lbff_crop_espa_1_4*/, 25 /*image_upscaler_1_1*/, 26 /*cas_1_1*/, 27 /*odr_ofs_mp_1_4*/, 28 /*b2i_ds_output_1_1*/, 29 /*odr_ofs_dp_1_4*/, 20 /*rgbs_grid_1_1*/, 30 /*odr_awb_std_1_4*/, 31 /*odr_awb_sat_1_4*/, 21 /*ccm_3a_2_0*/, 32 /*aestatistics_2_1*/, 33 /*odr_ae_1_4*/, 22 /*fr_grid_1_0*/, 34 /*odr_af_std_1_4*/, 35 /*ifd_pdaf_1_4*/, 36 /*pext_1_0*/, 37 /*pafstatistics_1_2*/, 38 /*odr_pdaf_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[10].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode::Init(LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 43, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[43] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x7FFFBF00071, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[20], ccm_3a_2_0[21], fr_grid_1_0[22], b2i_ds_1_1[23], lbff_crop_espa_1_4[24], image_upscaler_1_1[25], odr_ofs_mp_1_4[27], b2i_ds_output_1_1[28], odr_ofs_dp_1_4[29], odr_awb_std_1_4[30], odr_awb_sat_1_4[31], aestatistics_2_1[32], odr_ae_1_4[33], odr_af_std_1_4[34], ifd_pdaf_1_4[35], pext_1_0[36], pafstatistics_1_2[37], odr_pdaf_1_4[38], ifd_gmv_1_4[39], gmv_statistics_1_1[40], odr_gmv_feature_1_4[41], odr_gmv_match_1_4[42] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x7FFE70000C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {image_upscaler_1_1}[5], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[6], {odr_ofs_dp_1_4}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_gmv_1_4}[17], {gmv_statistics_1_1}[18], {odr_gmv_feature_1_4}[19], {odr_gmv_match_1_4}[20] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FFFFF000F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {image_upscaler_1_1}[11], {cas_1_1}[12], {odr_ofs_mp_1_4}[13], {b2i_ds_output_1_1}[14], {odr_ofs_dp_1_4}[15], {odr_awb_std_1_4}[16], {odr_awb_sat_1_4}[17], {aestatistics_2_1}[18], {odr_ae_1_4}[19], {odr_af_std_1_4}[20], {ifd_pdaf_1_4}[21], {pext_1_0}[22], {pafstatistics_1_2}[23], {odr_pdaf_1_4}[24], {ifd_gmv_1_4}[25], {gmv_statistics_1_1}[26], {odr_gmv_feature_1_4}[27], {odr_gmv_match_1_4}[28] }
    uint8_t systemApisSizes[43] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/};
    uint16_t runKernelConfigOrder[43] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 10 /*bnlm_3_4*/, 11 /*bxt_demosaic*/, 12 /*vcsc_2_0_b*/, 13 /*gltm_2_0*/, 14 /*xnr_5_4*/, 15 /*vcr_3_1*/, 16 /*glim_2_0*/, 17 /*acm_1_2*/, 18 /*gammatm_v4*/, 19 /*csc_1_1*/, 23 /*b2i_ds_1_1*/, 24 /*lbff_crop_espa_1_4*/, 25 /*image_upscaler_1_1*/, 26 /*cas_1_1*/, 27 /*odr_ofs_mp_1_4*/, 28 /*b2i_ds_output_1_1*/, 29 /*odr_ofs_dp_1_4*/, 20 /*rgbs_grid_1_1*/, 30 /*odr_awb_std_1_4*/, 31 /*odr_awb_sat_1_4*/, 21 /*ccm_3a_2_0*/, 32 /*aestatistics_2_1*/, 33 /*odr_ae_1_4*/, 22 /*fr_grid_1_0*/, 34 /*odr_af_std_1_4*/, 35 /*ifd_pdaf_1_4*/, 36 /*pext_1_0*/, 37 /*pafstatistics_1_2*/, 38 /*odr_pdaf_1_4*/, 39 /*ifd_gmv_1_4*/, 40 /*gmv_statistics_1_1*/, 41 /*odr_gmv_feature_1_4*/, 42 /*odr_gmv_match_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[10].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode::Init(LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 51, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[51] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x7BB3FFDF00071, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[20], ccm_3a_2_0[21], fr_grid_1_0[22], b2i_ds_1_1[23], lbff_crop_espa_1_4[24], tnr_scaler_lb_1_1[26], odr_awb_std_1_4[27], odr_awb_sat_1_4[28], aestatistics_2_1[29], odr_ae_1_4[30], odr_af_std_1_4[31], ifd_pdaf_1_4[32], pext_1_0[33], pafstatistics_1_2[34], odr_pdaf_1_4[35], ifd_tnr_sp_bc_yuv4nm1_1_4[36], ifd_tnr_sp_bc_rs4nm1_1_4[37], odr_tnr_sp_bc_rs4n_1_4[40], ifd_tnr_fp_blend_yuvnm1_1_4[41], odr_tnr_fp_yuvn_1_4[43], tnr_scaler_fp_1_1[44], image_upscaler_1_1[45], odr_ofs_mp_1_4[47], b2i_ds_output_1_1[48], odr_ofs_dp_1_4[49], odr_tnr_scale_fp_yuv4n_1_4[50] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x6467FFB0000C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_pdaf_1_4}[11], {pext_1_0}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_4}[14], {ifd_tnr_sp_bc_yuv4nm1_1_4}[15], {ifd_tnr_sp_bc_rs4nm1_1_4}[16], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[19], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[20], {odr_ofs_dp_1_4}[21], {odr_tnr_scale_fp_yuv4n_1_4}[22] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FF7FFFF000F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {tnr7_spatial_1_1}[11], {tnr_scaler_lb_1_1}[12], {odr_awb_std_1_4}[13], {odr_awb_sat_1_4}[14], {aestatistics_2_1}[15], {odr_ae_1_4}[16], {odr_af_std_1_4}[17], {ifd_pdaf_1_4}[18], {pext_1_0}[19], {pafstatistics_1_2}[20], {odr_pdaf_1_4}[21], {ifd_tnr_sp_bc_yuv4nm1_1_4}[22], {ifd_tnr_sp_bc_rs4nm1_1_4}[23], {tnr7_ims_1_2, tnr7_bc_1_2}[24], {odr_tnr_sp_bc_rs4n_1_4}[25], {ifd_tnr_fp_blend_yuvnm1_1_4}[26], {tnr7_blend_1_1}[27], {odr_tnr_fp_yuvn_1_4}[28], {tnr_scaler_fp_1_1}[29], {image_upscaler_1_1}[30], {cas_1_1}[31], {odr_ofs_mp_1_4}[32], {b2i_ds_output_1_1}[33], {odr_ofs_dp_1_4}[34], {odr_tnr_scale_fp_yuv4n_1_4}[35] }
    uint8_t systemApisSizes[51] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[51] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 10 /*bnlm_3_4*/, 11 /*bxt_demosaic*/, 12 /*vcsc_2_0_b*/, 13 /*gltm_2_0*/, 14 /*xnr_5_4*/, 15 /*vcr_3_1*/, 16 /*glim_2_0*/, 17 /*acm_1_2*/, 18 /*gammatm_v4*/, 19 /*csc_1_1*/, 23 /*b2i_ds_1_1*/, 24 /*lbff_crop_espa_1_4*/, 25 /*tnr7_spatial_1_1*/, 26 /*tnr_scaler_lb_1_1*/, 20 /*rgbs_grid_1_1*/, 27 /*odr_awb_std_1_4*/, 28 /*odr_awb_sat_1_4*/, 21 /*ccm_3a_2_0*/, 29 /*aestatistics_2_1*/, 30 /*odr_ae_1_4*/, 22 /*fr_grid_1_0*/, 31 /*odr_af_std_1_4*/, 32 /*ifd_pdaf_1_4*/, 33 /*pext_1_0*/, 34 /*pafstatistics_1_2*/, 35 /*odr_pdaf_1_4*/, 36 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 37 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 38 /*tnr7_ims_1_2*/, 39 /*tnr7_bc_1_2*/, 40 /*odr_tnr_sp_bc_rs4n_1_4*/, 41 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 42 /*tnr7_blend_1_1*/, 45 /*image_upscaler_1_1*/, 46 /*cas_1_1*/, 47 /*odr_ofs_mp_1_4*/, 48 /*b2i_ds_output_1_1*/, 49 /*odr_ofs_dp_1_4*/, 43 /*odr_tnr_fp_yuvn_1_4*/, 44 /*tnr_scaler_fp_1_1*/, 50 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[10].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode::Init(LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 55, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[55] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x7BB3FFFDF00071, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[20], ccm_3a_2_0[21], fr_grid_1_0[22], b2i_ds_1_1[23], lbff_crop_espa_1_4[24], tnr_scaler_lb_1_1[26], odr_awb_std_1_4[27], odr_awb_sat_1_4[28], aestatistics_2_1[29], odr_ae_1_4[30], odr_af_std_1_4[31], ifd_pdaf_1_4[32], pext_1_0[33], pafstatistics_1_2[34], odr_pdaf_1_4[35], ifd_gmv_1_4[36], gmv_statistics_1_1[37], odr_gmv_feature_1_4[38], odr_gmv_match_1_4[39], ifd_tnr_sp_bc_yuv4nm1_1_4[40], ifd_tnr_sp_bc_rs4nm1_1_4[41], odr_tnr_sp_bc_rs4n_1_4[44], ifd_tnr_fp_blend_yuvnm1_1_4[45], odr_tnr_fp_yuvn_1_4[47], tnr_scaler_fp_1_1[48], image_upscaler_1_1[49], odr_ofs_mp_1_4[51], b2i_ds_output_1_1[52], odr_ofs_dp_1_4[53], odr_tnr_scale_fp_yuv4n_1_4[54] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x6467FFFB0000C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_pdaf_1_4}[11], {pext_1_0}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_4}[14], {ifd_gmv_1_4}[15], {gmv_statistics_1_1}[16], {odr_gmv_feature_1_4}[17], {odr_gmv_match_1_4}[18], {ifd_tnr_sp_bc_yuv4nm1_1_4}[19], {ifd_tnr_sp_bc_rs4nm1_1_4}[20], {tnr7_ims_1_2, tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[21], {ifd_tnr_fp_blend_yuvnm1_1_4}[22], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[23], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[24], {odr_ofs_dp_1_4}[25], {odr_tnr_scale_fp_yuv4n_1_4}[26] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FF7FFFFF000F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {b2i_ds_1_1}[9], {lbff_crop_espa_1_4}[10], {tnr7_spatial_1_1}[11], {tnr_scaler_lb_1_1}[12], {odr_awb_std_1_4}[13], {odr_awb_sat_1_4}[14], {aestatistics_2_1}[15], {odr_ae_1_4}[16], {odr_af_std_1_4}[17], {ifd_pdaf_1_4}[18], {pext_1_0}[19], {pafstatistics_1_2}[20], {odr_pdaf_1_4}[21], {ifd_gmv_1_4}[22], {gmv_statistics_1_1}[23], {odr_gmv_feature_1_4}[24], {odr_gmv_match_1_4}[25], {ifd_tnr_sp_bc_yuv4nm1_1_4}[26], {ifd_tnr_sp_bc_rs4nm1_1_4}[27], {tnr7_ims_1_2, tnr7_bc_1_2}[28], {odr_tnr_sp_bc_rs4n_1_4}[29], {ifd_tnr_fp_blend_yuvnm1_1_4}[30], {tnr7_blend_1_1}[31], {odr_tnr_fp_yuvn_1_4}[32], {tnr_scaler_fp_1_1}[33], {image_upscaler_1_1}[34], {cas_1_1}[35], {odr_ofs_mp_1_4}[36], {b2i_ds_output_1_1}[37], {odr_ofs_dp_1_4}[38], {odr_tnr_scale_fp_yuv4n_1_4}[39] }
    uint8_t systemApisSizes[55] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[55] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 10 /*bnlm_3_4*/, 11 /*bxt_demosaic*/, 12 /*vcsc_2_0_b*/, 13 /*gltm_2_0*/, 14 /*xnr_5_4*/, 15 /*vcr_3_1*/, 16 /*glim_2_0*/, 17 /*acm_1_2*/, 18 /*gammatm_v4*/, 19 /*csc_1_1*/, 23 /*b2i_ds_1_1*/, 24 /*lbff_crop_espa_1_4*/, 25 /*tnr7_spatial_1_1*/, 26 /*tnr_scaler_lb_1_1*/, 20 /*rgbs_grid_1_1*/, 27 /*odr_awb_std_1_4*/, 28 /*odr_awb_sat_1_4*/, 21 /*ccm_3a_2_0*/, 29 /*aestatistics_2_1*/, 30 /*odr_ae_1_4*/, 22 /*fr_grid_1_0*/, 31 /*odr_af_std_1_4*/, 32 /*ifd_pdaf_1_4*/, 33 /*pext_1_0*/, 34 /*pafstatistics_1_2*/, 35 /*odr_pdaf_1_4*/, 36 /*ifd_gmv_1_4*/, 37 /*gmv_statistics_1_1*/, 38 /*odr_gmv_feature_1_4*/, 39 /*odr_gmv_match_1_4*/, 40 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 41 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 42 /*tnr7_ims_1_2*/, 43 /*tnr7_bc_1_2*/, 44 /*odr_tnr_sp_bc_rs4n_1_4*/, 45 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 46 /*tnr7_blend_1_1*/, 49 /*image_upscaler_1_1*/, 50 /*cas_1_1*/, 51 /*odr_ofs_mp_1_4*/, 52 /*b2i_ds_output_1_1*/, 53 /*odr_ofs_dp_1_4*/, 47 /*odr_tnr_fp_yuvn_1_4*/, 48 /*tnr_scaler_fp_1_1*/, 54 /*odr_tnr_scale_fp_yuv4n_1_4*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[10].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode::Init(LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 67, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[67] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x7EEFAC630FFFFC71, 0x7}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[10], ccm_3a_2_0[11], fr_grid_1_0[12], odr_awb_std_1_4[13], odr_awb_sat_1_4[14], aestatistics_2_1[15], odr_ae_1_4[16], odr_af_std_1_4[17], ifd_pdaf_1_4[18], pext_1_0[19], pafstatistics_1_2[20], odr_pdaf_1_4[21], ifd_gmv_1_4[22], ifd_tnr_sp_bc_yuv4nm1_1_4[23], ifd_tnr_sp_bc_rs4nm1_1_4[24], ifd_tnr_fp_blend_yuvnm1_1_4[25], ifd_segmap_bnlm_1_4[26], smurf_bnlm_1_0[27], ifd_segmap_xnr_1_4[32], smurf_xnr_1_0[33], ifd_segmap_acm_1_4[37], smurf_acm_1_0[38], b2i_ds_1_1[42], lbff_crop_espa_1_4[43], tnr_scaler_lb_1_1[45], gmv_statistics_1_1[47], odr_gmv_feature_1_4[48], odr_gmv_match_1_4[49], ifd_segmap_tnr_bc_1_4[50], smurf_tnr_bc_1_0[51], odr_tnr_sp_bc_rs4n_1_4[53], ifd_segmap_tnr_blend_1_4[54], smurf_tnr_blend_1_0[55], odr_tnr_fp_yuvn_1_4[57], tnr_scaler_fp_1_1[58], image_upscaler_1_1[59], odr_tnr_scale_fp_yuv4n_1_4[60], ifd_segmap_cas_1_4[61], smurf_cas_1_0[62], odr_ofs_mp_1_4[64], b2i_ds_output_1_1[65], odr_ofs_dp_1_4[66] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0xF1DFD8E71FFFE0C2, 0x4}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_gmv_1_4}[13], {ifd_tnr_sp_bc_yuv4nm1_1_4}[14], {ifd_tnr_sp_bc_rs4nm1_1_4}[15], {ifd_tnr_fp_blend_yuvnm1_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[27], {tnr7_ims_1_2}[28], {gmv_statistics_1_1}[29], {odr_gmv_feature_1_4}[30], {odr_gmv_match_1_4}[31], {ifd_segmap_tnr_bc_1_4}[32], {smurf_tnr_bc_1_0}[33], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[34], {ifd_segmap_tnr_blend_1_4}[35], {smurf_tnr_blend_1_0}[36], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[37], {odr_tnr_scale_fp_yuv4n_1_4}[38], {ifd_segmap_cas_1_4}[39], {smurf_cas_1_0}[40], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[41], {odr_ofs_dp_1_4}[42] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFCE71FFFFCF3, 0x7}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {odr_awb_std_1_4}[9], {odr_awb_sat_1_4}[10], {aestatistics_2_1}[11], {odr_ae_1_4}[12], {odr_af_std_1_4}[13], {ifd_pdaf_1_4}[14], {pext_1_0}[15], {pafstatistics_1_2}[16], {odr_pdaf_1_4}[17], {ifd_gmv_1_4}[18], {ifd_tnr_sp_bc_yuv4nm1_1_4}[19], {ifd_tnr_sp_bc_rs4nm1_1_4}[20], {ifd_tnr_fp_blend_yuvnm1_1_4}[21], {ifd_segmap_bnlm_1_4}[22], {smurf_bnlm_1_0}[23], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[24], {ifd_segmap_xnr_1_4}[25], {smurf_xnr_1_0}[26], {xnr_5_4, vcr_3_1, glim_2_0}[27], {ifd_segmap_acm_1_4}[28], {smurf_acm_1_0}[29], {acm_1_2, gammatm_v4, csc_1_1}[30], {b2i_ds_1_1}[31], {lbff_crop_espa_1_4}[32], {tnr7_spatial_1_1}[33], {tnr_scaler_lb_1_1}[34], {tnr7_ims_1_2}[35], {gmv_statistics_1_1}[36], {odr_gmv_feature_1_4}[37], {odr_gmv_match_1_4}[38], {ifd_segmap_tnr_bc_1_4}[39], {smurf_tnr_bc_1_0}[40], {tnr7_bc_1_2}[41], {odr_tnr_sp_bc_rs4n_1_4}[42], {ifd_segmap_tnr_blend_1_4}[43], {smurf_tnr_blend_1_0}[44], {tnr7_blend_1_1}[45], {odr_tnr_fp_yuvn_1_4}[46], {tnr_scaler_fp_1_1}[47], {image_upscaler_1_1}[48], {odr_tnr_scale_fp_yuv4n_1_4}[49], {ifd_segmap_cas_1_4}[50], {smurf_cas_1_0}[51], {cas_1_1}[52], {odr_ofs_mp_1_4}[53], {b2i_ds_output_1_1}[54], {odr_ofs_dp_1_4}[55] }
    uint8_t systemApisSizes[67] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[67] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 28 /*bnlm_3_4*/, 29 /*bxt_demosaic*/, 30 /*vcsc_2_0_b*/, 31 /*gltm_2_0*/, 34 /*xnr_5_4*/, 35 /*vcr_3_1*/, 36 /*glim_2_0*/, 39 /*acm_1_2*/, 40 /*gammatm_v4*/, 41 /*csc_1_1*/, 42 /*b2i_ds_1_1*/, 43 /*lbff_crop_espa_1_4*/, 44 /*tnr7_spatial_1_1*/, 45 /*tnr_scaler_lb_1_1*/, 10 /*rgbs_grid_1_1*/, 13 /*odr_awb_std_1_4*/, 14 /*odr_awb_sat_1_4*/, 11 /*ccm_3a_2_0*/, 15 /*aestatistics_2_1*/, 16 /*odr_ae_1_4*/, 12 /*fr_grid_1_0*/, 17 /*odr_af_std_1_4*/, 18 /*ifd_pdaf_1_4*/, 19 /*pext_1_0*/, 20 /*pafstatistics_1_2*/, 21 /*odr_pdaf_1_4*/, 22 /*ifd_gmv_1_4*/, 47 /*gmv_statistics_1_1*/, 48 /*odr_gmv_feature_1_4*/, 49 /*odr_gmv_match_1_4*/, 23 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 24 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 46 /*tnr7_ims_1_2*/, 52 /*tnr7_bc_1_2*/, 53 /*odr_tnr_sp_bc_rs4n_1_4*/, 25 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 56 /*tnr7_blend_1_1*/, 59 /*image_upscaler_1_1*/, 63 /*cas_1_1*/, 64 /*odr_ofs_mp_1_4*/, 65 /*b2i_ds_output_1_1*/, 66 /*odr_ofs_dp_1_4*/, 57 /*odr_tnr_fp_yuvn_1_4*/, 58 /*tnr_scaler_fp_1_1*/, 60 /*odr_tnr_scale_fp_yuv4n_1_4*/, 26 /*ifd_segmap_bnlm_1_4*/, 32 /*ifd_segmap_xnr_1_4*/, 37 /*ifd_segmap_acm_1_4*/, 50 /*ifd_segmap_tnr_bc_1_4*/, 54 /*ifd_segmap_tnr_blend_1_4*/, 61 /*ifd_segmap_cas_1_4*/, 27 /*smurf_bnlm_1_0*/, 33 /*smurf_xnr_1_0*/, 38 /*smurf_acm_1_0*/, 51 /*smurf_tnr_bc_1_0*/, 55 /*smurf_tnr_blend_1_0*/, 62 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[28].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerNoGmvNoTnrWithSapOuterNode::Init(LbffBayerNoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 42, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[42] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BE3187FE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_segmap_bnlm_1_4[17], smurf_bnlm_1_0[18], ifd_segmap_xnr_1_4[23], smurf_xnr_1_0[24], ifd_segmap_acm_1_4[28], smurf_acm_1_0[29], b2i_ds_1_1[33], lbff_crop_espa_1_4[34], image_upscaler_1_1[35], ifd_segmap_cas_1_4[36], smurf_cas_1_0[37], odr_ofs_mp_1_4[39], b2i_ds_output_1_1[40], odr_ofs_dp_1_4[41] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x27C738FF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_segmap_bnlm_1_4}[9], {smurf_bnlm_1_0}[10], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[11], {ifd_segmap_xnr_1_4}[12], {smurf_xnr_1_0}[13], {xnr_5_4, vcr_3_1, glim_2_0}[14], {ifd_segmap_acm_1_4}[15], {smurf_acm_1_0}[16], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[17], {lbff_crop_espa_1_4}[18], {image_upscaler_1_1}[19], {ifd_segmap_cas_1_4}[20], {smurf_cas_1_0}[21], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[22], {odr_ofs_dp_1_4}[23] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FE738FFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0}[18], {ifd_segmap_acm_1_4}[19], {smurf_acm_1_0}[20], {acm_1_2, gammatm_v4, csc_1_1}[21], {b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {image_upscaler_1_1}[24], {ifd_segmap_cas_1_4}[25], {smurf_cas_1_0}[26], {cas_1_1}[27], {odr_ofs_mp_1_4}[28], {b2i_ds_output_1_1}[29], {odr_ofs_dp_1_4}[30] }
    uint8_t systemApisSizes[42] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[42] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 19 /*bnlm_3_4*/, 20 /*bxt_demosaic*/, 21 /*vcsc_2_0_b*/, 22 /*gltm_2_0*/, 25 /*xnr_5_4*/, 26 /*vcr_3_1*/, 27 /*glim_2_0*/, 30 /*acm_1_2*/, 31 /*gammatm_v4*/, 32 /*csc_1_1*/, 33 /*b2i_ds_1_1*/, 34 /*lbff_crop_espa_1_4*/, 35 /*image_upscaler_1_1*/, 38 /*cas_1_1*/, 39 /*odr_ofs_mp_1_4*/, 40 /*b2i_ds_output_1_1*/, 41 /*odr_ofs_dp_1_4*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_segmap_bnlm_1_4*/, 23 /*ifd_segmap_xnr_1_4*/, 28 /*ifd_segmap_acm_1_4*/, 36 /*ifd_segmap_cas_1_4*/, 18 /*smurf_bnlm_1_0*/, 24 /*smurf_xnr_1_0*/, 29 /*smurf_acm_1_0*/, 37 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[19].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerWithGmvNoTnrWithSapOuterNode::Init(LbffBayerWithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 46, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[46] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BFC630FFE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_gmv_1_4[17], ifd_segmap_bnlm_1_4[18], smurf_bnlm_1_0[19], ifd_segmap_xnr_1_4[24], smurf_xnr_1_0[25], ifd_segmap_acm_1_4[29], smurf_acm_1_0[30], b2i_ds_1_1[34], lbff_crop_espa_1_4[35], image_upscaler_1_1[36], gmv_statistics_1_1[37], odr_gmv_feature_1_4[38], odr_gmv_match_1_4[39], ifd_segmap_cas_1_4[40], smurf_cas_1_0[41], odr_ofs_mp_1_4[43], b2i_ds_output_1_1[44], odr_ofs_dp_1_4[45] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x27F8E71FF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_gmv_1_4}[9], {ifd_segmap_bnlm_1_4}[10], {smurf_bnlm_1_0}[11], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[12], {ifd_segmap_xnr_1_4}[13], {smurf_xnr_1_0}[14], {xnr_5_4, vcr_3_1, glim_2_0}[15], {ifd_segmap_acm_1_4}[16], {smurf_acm_1_0}[17], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[18], {lbff_crop_espa_1_4}[19], {image_upscaler_1_1}[20], {gmv_statistics_1_1}[21], {odr_gmv_feature_1_4}[22], {odr_gmv_match_1_4}[23], {ifd_segmap_cas_1_4}[24], {smurf_cas_1_0}[25], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[26], {odr_ofs_dp_1_4}[27] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFCE71FFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_gmv_1_4}[13], {ifd_segmap_bnlm_1_4}[14], {smurf_bnlm_1_0}[15], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[16], {ifd_segmap_xnr_1_4}[17], {smurf_xnr_1_0}[18], {xnr_5_4, vcr_3_1, glim_2_0}[19], {ifd_segmap_acm_1_4}[20], {smurf_acm_1_0}[21], {acm_1_2, gammatm_v4, csc_1_1}[22], {b2i_ds_1_1}[23], {lbff_crop_espa_1_4}[24], {image_upscaler_1_1}[25], {gmv_statistics_1_1}[26], {odr_gmv_feature_1_4}[27], {odr_gmv_match_1_4}[28], {ifd_segmap_cas_1_4}[29], {smurf_cas_1_0}[30], {cas_1_1}[31], {odr_ofs_mp_1_4}[32], {b2i_ds_output_1_1}[33], {odr_ofs_dp_1_4}[34] }
    uint8_t systemApisSizes[46] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[46] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 20 /*bnlm_3_4*/, 21 /*bxt_demosaic*/, 22 /*vcsc_2_0_b*/, 23 /*gltm_2_0*/, 26 /*xnr_5_4*/, 27 /*vcr_3_1*/, 28 /*glim_2_0*/, 31 /*acm_1_2*/, 32 /*gammatm_v4*/, 33 /*csc_1_1*/, 34 /*b2i_ds_1_1*/, 35 /*lbff_crop_espa_1_4*/, 36 /*image_upscaler_1_1*/, 42 /*cas_1_1*/, 43 /*odr_ofs_mp_1_4*/, 44 /*b2i_ds_output_1_1*/, 45 /*odr_ofs_dp_1_4*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_gmv_1_4*/, 37 /*gmv_statistics_1_1*/, 38 /*odr_gmv_feature_1_4*/, 39 /*odr_gmv_match_1_4*/, 18 /*ifd_segmap_bnlm_1_4*/, 24 /*ifd_segmap_xnr_1_4*/, 29 /*ifd_segmap_acm_1_4*/, 40 /*ifd_segmap_cas_1_4*/, 19 /*smurf_bnlm_1_0*/, 25 /*smurf_xnr_1_0*/, 30 /*smurf_acm_1_0*/, 41 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[20].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerNoGmvWithTnrWithOpacityOuterNode::Init(LbffBayerNoGmvWithTnrWithOpacityOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 50, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[50] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 23639 /*tnr7_ims_1_2*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3DDDDFEF80031, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], lbff_crop_espa_1_4[23], tnr_scaler_lb_1_1[25], odr_awb_std_1_4[26], odr_awb_sat_1_4[27], aestatistics_2_1[28], odr_ae_1_4[29], odr_af_std_1_4[30], ifd_tnr_sp_bc_yuv4nm1_1_4[31], ifd_tnr_sp_bc_rs4nm1_1_4[32], ifd_tnr_fp_blend_yuvnm1_1_4[34], ifd_segmap_tnr_bc_1_4[35], smurf_tnr_bc_1_0[36], odr_tnr_sp_bc_rs4n_1_4[38], ifd_segmap_tnr_blend_1_4[39], smurf_tnr_blend_1_0[40], odr_tnr_fp_yuvn_1_4[42], tnr_scaler_fp_1_1[43], image_upscaler_1_1[44], odr_ofs_mp_1_4[46], b2i_ds_output_1_1[47], odr_ofs_dp_1_4[48], odr_tnr_scale_fp_yuv4n_1_4[49] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x323BFFD800062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {lbff_crop_espa_1_4}[4], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {tnr7_ims_1_2}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {ifd_segmap_tnr_bc_1_4}[15], {smurf_tnr_bc_1_0}[16], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[17], {ifd_segmap_tnr_blend_1_4}[18], {smurf_tnr_blend_1_0}[19], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[20], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[21], {odr_ofs_dp_1_4}[22], {odr_tnr_scale_fp_yuv4n_1_4}[23] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFFFFF80073, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1, bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {b2i_ds_1_1}[8], {lbff_crop_espa_1_4}[9], {tnr7_spatial_1_1}[10], {tnr_scaler_lb_1_1}[11], {odr_awb_std_1_4}[12], {odr_awb_sat_1_4}[13], {aestatistics_2_1}[14], {odr_ae_1_4}[15], {odr_af_std_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {tnr7_ims_1_2}[19], {ifd_tnr_fp_blend_yuvnm1_1_4}[20], {ifd_segmap_tnr_bc_1_4}[21], {smurf_tnr_bc_1_0}[22], {tnr7_bc_1_2}[23], {odr_tnr_sp_bc_rs4n_1_4}[24], {ifd_segmap_tnr_blend_1_4}[25], {smurf_tnr_blend_1_0}[26], {tnr7_blend_1_1}[27], {odr_tnr_fp_yuvn_1_4}[28], {tnr_scaler_fp_1_1}[29], {image_upscaler_1_1}[30], {cas_1_1}[31], {odr_ofs_mp_1_4}[32], {b2i_ds_output_1_1}[33], {odr_ofs_dp_1_4}[34], {odr_tnr_scale_fp_yuv4n_1_4}[35] }
    uint8_t systemApisSizes[50] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/};
    uint16_t runKernelConfigOrder[50] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 9 /*bnlm_3_4*/, 10 /*bxt_demosaic*/, 11 /*vcsc_2_0_b*/, 12 /*gltm_2_0*/, 13 /*xnr_5_4*/, 14 /*vcr_3_1*/, 15 /*glim_2_0*/, 16 /*acm_1_2*/, 17 /*gammatm_v4*/, 18 /*csc_1_1*/, 22 /*b2i_ds_1_1*/, 23 /*lbff_crop_espa_1_4*/, 24 /*tnr7_spatial_1_1*/, 25 /*tnr_scaler_lb_1_1*/, 19 /*rgbs_grid_1_1*/, 26 /*odr_awb_std_1_4*/, 27 /*odr_awb_sat_1_4*/, 20 /*ccm_3a_2_0*/, 28 /*aestatistics_2_1*/, 29 /*odr_ae_1_4*/, 21 /*fr_grid_1_0*/, 30 /*odr_af_std_1_4*/, 31 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 32 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 33 /*tnr7_ims_1_2*/, 37 /*tnr7_bc_1_2*/, 38 /*odr_tnr_sp_bc_rs4n_1_4*/, 34 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 41 /*tnr7_blend_1_1*/, 44 /*image_upscaler_1_1*/, 45 /*cas_1_1*/, 46 /*odr_ofs_mp_1_4*/, 47 /*b2i_ds_output_1_1*/, 48 /*odr_ofs_dp_1_4*/, 42 /*odr_tnr_fp_yuvn_1_4*/, 43 /*tnr_scaler_fp_1_1*/, 49 /*odr_tnr_scale_fp_yuv4n_1_4*/, 35 /*ifd_segmap_tnr_bc_1_4*/, 39 /*ifd_segmap_tnr_blend_1_4*/, 36 /*smurf_tnr_bc_1_0*/, 40 /*smurf_tnr_blend_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[9].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2NoGmvNoTnrWithSapOuterNode::Init(LbffBayerPdaf2NoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 46, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[46] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BE3187FFE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_pdaf_1_4[17], pext_1_0[18], pafstatistics_1_2[19], odr_pdaf_1_4[20], ifd_segmap_bnlm_1_4[21], smurf_bnlm_1_0[22], ifd_segmap_xnr_1_4[27], smurf_xnr_1_0[28], ifd_segmap_acm_1_4[32], smurf_acm_1_0[33], b2i_ds_1_1[37], lbff_crop_espa_1_4[38], image_upscaler_1_1[39], ifd_segmap_cas_1_4[40], smurf_cas_1_0[41], odr_ofs_mp_1_4[43], b2i_ds_output_1_1[44], odr_ofs_dp_1_4[45] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x27C738FFF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0}[18], {ifd_segmap_acm_1_4}[19], {smurf_acm_1_0}[20], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[21], {lbff_crop_espa_1_4}[22], {image_upscaler_1_1}[23], {ifd_segmap_cas_1_4}[24], {smurf_cas_1_0}[25], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[26], {odr_ofs_dp_1_4}[27] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FE738FFFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1}[25], {b2i_ds_1_1}[26], {lbff_crop_espa_1_4}[27], {image_upscaler_1_1}[28], {ifd_segmap_cas_1_4}[29], {smurf_cas_1_0}[30], {cas_1_1}[31], {odr_ofs_mp_1_4}[32], {b2i_ds_output_1_1}[33], {odr_ofs_dp_1_4}[34] }
    uint8_t systemApisSizes[46] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[46] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 23 /*bnlm_3_4*/, 24 /*bxt_demosaic*/, 25 /*vcsc_2_0_b*/, 26 /*gltm_2_0*/, 29 /*xnr_5_4*/, 30 /*vcr_3_1*/, 31 /*glim_2_0*/, 34 /*acm_1_2*/, 35 /*gammatm_v4*/, 36 /*csc_1_1*/, 37 /*b2i_ds_1_1*/, 38 /*lbff_crop_espa_1_4*/, 39 /*image_upscaler_1_1*/, 42 /*cas_1_1*/, 43 /*odr_ofs_mp_1_4*/, 44 /*b2i_ds_output_1_1*/, 45 /*odr_ofs_dp_1_4*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_pdaf_1_4*/, 18 /*pext_1_0*/, 19 /*pafstatistics_1_2*/, 20 /*odr_pdaf_1_4*/, 21 /*ifd_segmap_bnlm_1_4*/, 27 /*ifd_segmap_xnr_1_4*/, 32 /*ifd_segmap_acm_1_4*/, 40 /*ifd_segmap_cas_1_4*/, 22 /*smurf_bnlm_1_0*/, 28 /*smurf_xnr_1_0*/, 33 /*smurf_acm_1_0*/, 41 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[23].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf2WithGmvNoTnrWithSapOuterNode::Init(LbffBayerPdaf2WithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 50, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[50] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BFC630FFFE31, 0x0}; // { ifd_pipe_1_4[0], rgb_ir_2_0[4], ifd_lsc_1_4[5], rgbs_grid_1_1[9], ccm_3a_2_0[10], fr_grid_1_0[11], odr_awb_std_1_4[12], odr_awb_sat_1_4[13], aestatistics_2_1[14], odr_ae_1_4[15], odr_af_std_1_4[16], ifd_pdaf_1_4[17], pext_1_0[18], pafstatistics_1_2[19], odr_pdaf_1_4[20], ifd_gmv_1_4[21], ifd_segmap_bnlm_1_4[22], smurf_bnlm_1_0[23], ifd_segmap_xnr_1_4[28], smurf_xnr_1_0[29], ifd_segmap_acm_1_4[33], smurf_acm_1_0[34], b2i_ds_1_1[38], lbff_crop_espa_1_4[39], image_upscaler_1_1[40], gmv_statistics_1_1[41], odr_gmv_feature_1_4[42], odr_gmv_match_1_4[43], ifd_segmap_cas_1_4[44], smurf_cas_1_0[45], odr_ofs_mp_1_4[47], b2i_ds_output_1_1[48], odr_ofs_dp_1_4[49] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x27F8E71FFF062, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_gmv_1_4}[13], {ifd_segmap_bnlm_1_4}[14], {smurf_bnlm_1_0}[15], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[16], {ifd_segmap_xnr_1_4}[17], {smurf_xnr_1_0}[18], {xnr_5_4, vcr_3_1, glim_2_0}[19], {ifd_segmap_acm_1_4}[20], {smurf_acm_1_0}[21], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {image_upscaler_1_1}[24], {gmv_statistics_1_1}[25], {odr_gmv_feature_1_4}[26], {odr_gmv_match_1_4}[27], {ifd_segmap_cas_1_4}[28], {smurf_cas_1_0}[29], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[30], {odr_ofs_dp_1_4}[31] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFCE71FFFE73, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgb_ir_2_0}[2], {ifd_lsc_1_4}[3], {lsc_1_2, gd_2_2, wb_1_1}[4], {rgbs_grid_1_1}[5], {ccm_3a_2_0}[6], {fr_grid_1_0}[7], {odr_awb_std_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {odr_af_std_1_4}[12], {ifd_pdaf_1_4}[13], {pext_1_0}[14], {pafstatistics_1_2}[15], {odr_pdaf_1_4}[16], {ifd_gmv_1_4}[17], {ifd_segmap_bnlm_1_4}[18], {smurf_bnlm_1_0}[19], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[20], {ifd_segmap_xnr_1_4}[21], {smurf_xnr_1_0}[22], {xnr_5_4, vcr_3_1, glim_2_0}[23], {ifd_segmap_acm_1_4}[24], {smurf_acm_1_0}[25], {acm_1_2, gammatm_v4, csc_1_1}[26], {b2i_ds_1_1}[27], {lbff_crop_espa_1_4}[28], {image_upscaler_1_1}[29], {gmv_statistics_1_1}[30], {odr_gmv_feature_1_4}[31], {odr_gmv_match_1_4}[32], {ifd_segmap_cas_1_4}[33], {smurf_cas_1_0}[34], {cas_1_1}[35], {odr_ofs_mp_1_4}[36], {b2i_ds_output_1_1}[37], {odr_ofs_dp_1_4}[38] }
    uint8_t systemApisSizes[50] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[50] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 4 /*rgb_ir_2_0*/, 5 /*ifd_lsc_1_4*/, 6 /*lsc_1_2*/, 7 /*gd_2_2*/, 8 /*wb_1_1*/, 24 /*bnlm_3_4*/, 25 /*bxt_demosaic*/, 26 /*vcsc_2_0_b*/, 27 /*gltm_2_0*/, 30 /*xnr_5_4*/, 31 /*vcr_3_1*/, 32 /*glim_2_0*/, 35 /*acm_1_2*/, 36 /*gammatm_v4*/, 37 /*csc_1_1*/, 38 /*b2i_ds_1_1*/, 39 /*lbff_crop_espa_1_4*/, 40 /*image_upscaler_1_1*/, 46 /*cas_1_1*/, 47 /*odr_ofs_mp_1_4*/, 48 /*b2i_ds_output_1_1*/, 49 /*odr_ofs_dp_1_4*/, 9 /*rgbs_grid_1_1*/, 12 /*odr_awb_std_1_4*/, 13 /*odr_awb_sat_1_4*/, 10 /*ccm_3a_2_0*/, 14 /*aestatistics_2_1*/, 15 /*odr_ae_1_4*/, 11 /*fr_grid_1_0*/, 16 /*odr_af_std_1_4*/, 17 /*ifd_pdaf_1_4*/, 18 /*pext_1_0*/, 19 /*pafstatistics_1_2*/, 20 /*odr_pdaf_1_4*/, 21 /*ifd_gmv_1_4*/, 41 /*gmv_statistics_1_1*/, 42 /*odr_gmv_feature_1_4*/, 43 /*odr_gmv_match_1_4*/, 22 /*ifd_segmap_bnlm_1_4*/, 28 /*ifd_segmap_xnr_1_4*/, 33 /*ifd_segmap_acm_1_4*/, 44 /*ifd_segmap_cas_1_4*/, 23 /*smurf_bnlm_1_0*/, 29 /*smurf_xnr_1_0*/, 34 /*smurf_acm_1_0*/, 45 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[24].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3NoGmvNoTnrWithSapOuterNode::Init(LbffBayerPdaf3NoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 45, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[45] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1DF18C3FF1F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[12], ccm_3a_2_0[13], fr_grid_1_0[14], odr_awb_std_1_4[15], odr_awb_sat_1_4[16], aestatistics_2_1[17], odr_ae_1_4[18], odr_af_std_1_4[19], ifd_segmap_bnlm_1_4[20], smurf_bnlm_1_0[21], ifd_segmap_xnr_1_4[26], smurf_xnr_1_0[27], ifd_segmap_acm_1_4[31], smurf_acm_1_0[32], b2i_ds_1_1[36], lbff_crop_espa_1_4[37], image_upscaler_1_1[38], ifd_segmap_cas_1_4[39], smurf_cas_1_0[40], odr_ofs_mp_1_4[42], b2i_ds_output_1_1[43], odr_ofs_dp_1_4[44] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x13E39C7F83C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_segmap_bnlm_1_4}[11], {smurf_bnlm_1_0}[12], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[13], {ifd_segmap_xnr_1_4}[14], {smurf_xnr_1_0}[15], {xnr_5_4, vcr_3_1, glim_2_0}[16], {ifd_segmap_acm_1_4}[17], {smurf_acm_1_0}[18], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[19], {lbff_crop_espa_1_4}[20], {image_upscaler_1_1}[21], {ifd_segmap_cas_1_4}[22], {smurf_cas_1_0}[23], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[24], {odr_ofs_dp_1_4}[25] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FF39C7FF3F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1}[24], {b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {image_upscaler_1_1}[27], {ifd_segmap_cas_1_4}[28], {smurf_cas_1_0}[29], {cas_1_1}[30], {odr_ofs_mp_1_4}[31], {b2i_ds_output_1_1}[32], {odr_ofs_dp_1_4}[33] }
    uint8_t systemApisSizes[45] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[45] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 22 /*bnlm_3_4*/, 23 /*bxt_demosaic*/, 24 /*vcsc_2_0_b*/, 25 /*gltm_2_0*/, 28 /*xnr_5_4*/, 29 /*vcr_3_1*/, 30 /*glim_2_0*/, 33 /*acm_1_2*/, 34 /*gammatm_v4*/, 35 /*csc_1_1*/, 36 /*b2i_ds_1_1*/, 37 /*lbff_crop_espa_1_4*/, 38 /*image_upscaler_1_1*/, 41 /*cas_1_1*/, 42 /*odr_ofs_mp_1_4*/, 43 /*b2i_ds_output_1_1*/, 44 /*odr_ofs_dp_1_4*/, 12 /*rgbs_grid_1_1*/, 15 /*odr_awb_std_1_4*/, 16 /*odr_awb_sat_1_4*/, 13 /*ccm_3a_2_0*/, 17 /*aestatistics_2_1*/, 18 /*odr_ae_1_4*/, 14 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_segmap_bnlm_1_4*/, 26 /*ifd_segmap_xnr_1_4*/, 31 /*ifd_segmap_acm_1_4*/, 39 /*ifd_segmap_cas_1_4*/, 21 /*smurf_bnlm_1_0*/, 27 /*smurf_xnr_1_0*/, 32 /*smurf_acm_1_0*/, 40 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[22].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3WithGmvNoTnrWithSapOuterNode::Init(LbffBayerPdaf3WithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 49, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[49] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 43213 /*pext_1_0*/, 14488 /*rgb_ir_2_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1DFE3187FF1F1, 0x0}; // { ifd_pipe_1_4[0], pext_1_0[4], rgb_ir_2_0[5], pafstatistics_1_2[6], odr_pdaf_1_4[7], ifd_lsc_1_4[8], rgbs_grid_1_1[12], ccm_3a_2_0[13], fr_grid_1_0[14], odr_awb_std_1_4[15], odr_awb_sat_1_4[16], aestatistics_2_1[17], odr_ae_1_4[18], odr_af_std_1_4[19], ifd_gmv_1_4[20], ifd_segmap_bnlm_1_4[21], smurf_bnlm_1_0[22], ifd_segmap_xnr_1_4[27], smurf_xnr_1_0[28], ifd_segmap_acm_1_4[32], smurf_acm_1_0[33], b2i_ds_1_1[37], lbff_crop_espa_1_4[38], image_upscaler_1_1[39], gmv_statistics_1_1[40], odr_gmv_feature_1_4[41], odr_gmv_match_1_4[42], ifd_segmap_cas_1_4[43], smurf_cas_1_0[44], odr_ofs_mp_1_4[46], b2i_ds_output_1_1[47], odr_ofs_dp_1_4[48] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x13FC738FF83C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, pext_1_0, rgb_ir_2_0}[1], {pafstatistics_1_2}[2], {odr_pdaf_1_4}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sat_1_4}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0}[17], {ifd_segmap_acm_1_4}[18], {smurf_acm_1_0}[19], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[20], {lbff_crop_espa_1_4}[21], {image_upscaler_1_1}[22], {gmv_statistics_1_1}[23], {odr_gmv_feature_1_4}[24], {odr_gmv_match_1_4}[25], {ifd_segmap_cas_1_4}[26], {smurf_cas_1_0}[27], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[28], {odr_ofs_dp_1_4}[29] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFE738FFF3F3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {pext_1_0}[2], {rgb_ir_2_0}[3], {pafstatistics_1_2}[4], {odr_pdaf_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1}[7], {rgbs_grid_1_1}[8], {ccm_3a_2_0}[9], {fr_grid_1_0}[10], {odr_awb_std_1_4}[11], {odr_awb_sat_1_4}[12], {aestatistics_2_1}[13], {odr_ae_1_4}[14], {odr_af_std_1_4}[15], {ifd_gmv_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1}[25], {b2i_ds_1_1}[26], {lbff_crop_espa_1_4}[27], {image_upscaler_1_1}[28], {gmv_statistics_1_1}[29], {odr_gmv_feature_1_4}[30], {odr_gmv_match_1_4}[31], {ifd_segmap_cas_1_4}[32], {smurf_cas_1_0}[33], {cas_1_1}[34], {odr_ofs_mp_1_4}[35], {b2i_ds_output_1_1}[36], {odr_ofs_dp_1_4}[37] }
    uint8_t systemApisSizes[49] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*pext_1_0*/, 0 /*rgb_ir_2_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[49] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*pext_1_0*/, 6 /*pafstatistics_1_2*/, 7 /*odr_pdaf_1_4*/, 8 /*ifd_lsc_1_4*/, 9 /*lsc_1_2*/, 10 /*gd_2_2*/, 11 /*wb_1_1*/, 23 /*bnlm_3_4*/, 24 /*bxt_demosaic*/, 25 /*vcsc_2_0_b*/, 26 /*gltm_2_0*/, 29 /*xnr_5_4*/, 30 /*vcr_3_1*/, 31 /*glim_2_0*/, 34 /*acm_1_2*/, 35 /*gammatm_v4*/, 36 /*csc_1_1*/, 37 /*b2i_ds_1_1*/, 38 /*lbff_crop_espa_1_4*/, 39 /*image_upscaler_1_1*/, 45 /*cas_1_1*/, 46 /*odr_ofs_mp_1_4*/, 47 /*b2i_ds_output_1_1*/, 48 /*odr_ofs_dp_1_4*/, 12 /*rgbs_grid_1_1*/, 15 /*odr_awb_std_1_4*/, 16 /*odr_awb_sat_1_4*/, 13 /*ccm_3a_2_0*/, 17 /*aestatistics_2_1*/, 18 /*odr_ae_1_4*/, 14 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_gmv_1_4*/, 40 /*gmv_statistics_1_1*/, 41 /*odr_gmv_feature_1_4*/, 42 /*odr_gmv_match_1_4*/, 21 /*ifd_segmap_bnlm_1_4*/, 27 /*ifd_segmap_xnr_1_4*/, 32 /*ifd_segmap_acm_1_4*/, 43 /*ifd_segmap_cas_1_4*/, 22 /*smurf_bnlm_1_0*/, 28 /*smurf_xnr_1_0*/, 33 /*smurf_acm_1_0*/, 44 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[23].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void IsysDolWithCvOuterNode::Init(IsysDolWithCvOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 5, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[5] = {36280 /*crop_bpp_adjust_1_0*/, 5420 /*upipe_1_0*/, 26150 /*isys_drainer_1_0*/, 11470 /*is_odr_a*/, 50407 /*is_odr_c*/};
    uint64_t kernelsRcbBitmap[] = {0x1B, 0x0}; // { crop_bpp_adjust_1_0[0], upipe_1_0[1], is_odr_a[3], is_odr_c[4] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x1E, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3], {is_odr_c}[4] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1F, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3], {is_odr_c}[4] }
    uint8_t systemApisSizes[5] = {0 /*crop_bpp_adjust_1_0*/, 34 /*upipe_1_0*/, 20 /*isys_drainer_1_0*/, 0 /*is_odr_a*/, 0 /*is_odr_c*/};
    uint16_t runKernelConfigOrder[5] = {0 /*crop_bpp_adjust_1_0*/, 1 /*upipe_1_0*/, 2 /*isys_drainer_1_0*/, 3 /*is_odr_a*/, 4 /*is_odr_c*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsNoGmvNoTnrWithSapOuterNode::Init(LbffDol2InputsNoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 45, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[45] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1DF18C3C7FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[18], odr_af_std_1_4[19], ifd_segmap_bnlm_1_4[20], smurf_bnlm_1_0[21], ifd_segmap_xnr_1_4[26], smurf_xnr_1_0[27], ifd_segmap_acm_1_4[31], smurf_acm_1_0[32], b2i_ds_1_1[36], lbff_crop_espa_1_4[37], image_upscaler_1_1[38], ifd_segmap_cas_1_4[39], smurf_cas_1_0[40], odr_ofs_mp_1_4[42], b2i_ds_output_1_1[43], odr_ofs_dp_1_4[44] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x13E39C78FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[9], {odr_af_std_1_4}[10], {ifd_segmap_bnlm_1_4}[11], {smurf_bnlm_1_0}[12], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[13], {ifd_segmap_xnr_1_4}[14], {smurf_xnr_1_0}[15], {xnr_5_4, vcr_3_1, glim_2_0}[16], {ifd_segmap_acm_1_4}[17], {smurf_acm_1_0}[18], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[19], {lbff_crop_espa_1_4}[20], {image_upscaler_1_1}[21], {ifd_segmap_cas_1_4}[22], {smurf_cas_1_0}[23], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[24], {odr_ofs_dp_1_4}[25] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FF39C7CFFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1}[12], {fr_grid_1_0}[13], {odr_af_std_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0}[20], {ifd_segmap_acm_1_4}[21], {smurf_acm_1_0}[22], {acm_1_2, gammatm_v4, csc_1_1}[23], {b2i_ds_1_1}[24], {lbff_crop_espa_1_4}[25], {image_upscaler_1_1}[26], {ifd_segmap_cas_1_4}[27], {smurf_cas_1_0}[28], {cas_1_1}[29], {odr_ofs_mp_1_4}[30], {b2i_ds_output_1_1}[31], {odr_ofs_dp_1_4}[32] }
    uint8_t systemApisSizes[45] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[45] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 22 /*bnlm_3_4*/, 23 /*bxt_demosaic*/, 24 /*vcsc_2_0_b*/, 25 /*gltm_2_0*/, 28 /*xnr_5_4*/, 29 /*vcr_3_1*/, 30 /*glim_2_0*/, 33 /*acm_1_2*/, 34 /*gammatm_v4*/, 35 /*csc_1_1*/, 36 /*b2i_ds_1_1*/, 37 /*lbff_crop_espa_1_4*/, 38 /*image_upscaler_1_1*/, 41 /*cas_1_1*/, 42 /*odr_ofs_mp_1_4*/, 43 /*b2i_ds_output_1_1*/, 44 /*odr_ofs_dp_1_4*/, 18 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_segmap_bnlm_1_4*/, 26 /*ifd_segmap_xnr_1_4*/, 31 /*ifd_segmap_acm_1_4*/, 39 /*ifd_segmap_cas_1_4*/, 21 /*smurf_bnlm_1_0*/, 27 /*smurf_xnr_1_0*/, 32 /*smurf_acm_1_0*/, 40 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[22].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsWithGmvNoTnrWithSapOuterNode::Init(LbffDol2InputsWithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 49, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[49] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1DFE3187C7FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[18], odr_af_std_1_4[19], ifd_gmv_1_4[20], ifd_segmap_bnlm_1_4[21], smurf_bnlm_1_0[22], ifd_segmap_xnr_1_4[27], smurf_xnr_1_0[28], ifd_segmap_acm_1_4[32], smurf_acm_1_0[33], b2i_ds_1_1[37], lbff_crop_espa_1_4[38], image_upscaler_1_1[39], gmv_statistics_1_1[40], odr_gmv_feature_1_4[41], odr_gmv_match_1_4[42], ifd_segmap_cas_1_4[43], smurf_cas_1_0[44], odr_ofs_mp_1_4[46], b2i_ds_output_1_1[47], odr_ofs_dp_1_4[48] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x13FC738F8FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0}[17], {ifd_segmap_acm_1_4}[18], {smurf_acm_1_0}[19], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[20], {lbff_crop_espa_1_4}[21], {image_upscaler_1_1}[22], {gmv_statistics_1_1}[23], {odr_gmv_feature_1_4}[24], {odr_gmv_match_1_4}[25], {ifd_segmap_cas_1_4}[26], {smurf_cas_1_0}[27], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[28], {odr_ofs_dp_1_4}[29] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFE738FCFFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1}[12], {fr_grid_1_0}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1}[24], {b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {image_upscaler_1_1}[27], {gmv_statistics_1_1}[28], {odr_gmv_feature_1_4}[29], {odr_gmv_match_1_4}[30], {ifd_segmap_cas_1_4}[31], {smurf_cas_1_0}[32], {cas_1_1}[33], {odr_ofs_mp_1_4}[34], {b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36] }
    uint8_t systemApisSizes[49] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[49] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 23 /*bnlm_3_4*/, 24 /*bxt_demosaic*/, 25 /*vcsc_2_0_b*/, 26 /*gltm_2_0*/, 29 /*xnr_5_4*/, 30 /*vcr_3_1*/, 31 /*glim_2_0*/, 34 /*acm_1_2*/, 35 /*gammatm_v4*/, 36 /*csc_1_1*/, 37 /*b2i_ds_1_1*/, 38 /*lbff_crop_espa_1_4*/, 39 /*image_upscaler_1_1*/, 45 /*cas_1_1*/, 46 /*odr_ofs_mp_1_4*/, 47 /*b2i_ds_output_1_1*/, 48 /*odr_ofs_dp_1_4*/, 18 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_gmv_1_4*/, 40 /*gmv_statistics_1_1*/, 41 /*odr_gmv_feature_1_4*/, 42 /*odr_gmv_match_1_4*/, 21 /*ifd_segmap_bnlm_1_4*/, 27 /*ifd_segmap_xnr_1_4*/, 32 /*ifd_segmap_acm_1_4*/, 43 /*ifd_segmap_cas_1_4*/, 22 /*smurf_bnlm_1_0*/, 28 /*smurf_xnr_1_0*/, 33 /*smurf_acm_1_0*/, 44 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[23].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsNoGmvWithTnrWithSapOuterNode::Init(LbffDol2InputsNoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 61, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[61] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x1DFBB58C61FC7FC3, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[18], odr_af_std_1_4[19], ifd_tnr_sp_bc_yuv4nm1_1_4[20], ifd_tnr_sp_bc_rs4nm1_1_4[21], ifd_tnr_fp_blend_yuvnm1_1_4[22], ifd_segmap_bnlm_1_4[23], smurf_bnlm_1_0[24], ifd_segmap_xnr_1_4[29], smurf_xnr_1_0[30], ifd_segmap_acm_1_4[34], smurf_acm_1_0[35], b2i_ds_1_1[39], lbff_crop_espa_1_4[40], tnr_scaler_lb_1_1[42], ifd_segmap_tnr_bc_1_4[44], smurf_tnr_bc_1_0[45], odr_tnr_sp_bc_rs4n_1_4[47], ifd_segmap_tnr_blend_1_4[48], smurf_tnr_blend_1_0[49], odr_tnr_fp_yuvn_1_4[51], tnr_scaler_fp_1_1[52], image_upscaler_1_1[53], odr_tnr_scale_fp_yuv4n_1_4[54], ifd_segmap_cas_1_4[55], smurf_cas_1_0[56], odr_ofs_mp_1_4[58], b2i_ds_output_1_1[59], odr_ofs_dp_1_4[60] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x13C77B1CE3F8FE06, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {ifd_tnr_fp_blend_yuvnm1_1_4}[13], {ifd_segmap_bnlm_1_4}[14], {smurf_bnlm_1_0}[15], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[16], {ifd_segmap_xnr_1_4}[17], {smurf_xnr_1_0}[18], {xnr_5_4, vcr_3_1, glim_2_0}[19], {ifd_segmap_acm_1_4}[20], {smurf_acm_1_0}[21], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[24], {tnr7_ims_1_2}[25], {ifd_segmap_tnr_bc_1_4}[26], {smurf_tnr_bc_1_0}[27], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[28], {ifd_segmap_tnr_blend_1_4}[29], {smurf_tnr_blend_1_0}[30], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[31], {odr_tnr_scale_fp_yuv4n_1_4}[32], {ifd_segmap_cas_1_4}[33], {smurf_cas_1_0}[34], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x1FFFFF9CE3FCFFC7, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1}[12], {fr_grid_1_0}[13], {odr_af_std_1_4}[14], {ifd_tnr_sp_bc_yuv4nm1_1_4}[15], {ifd_tnr_sp_bc_rs4nm1_1_4}[16], {ifd_tnr_fp_blend_yuvnm1_1_4}[17], {ifd_segmap_bnlm_1_4}[18], {smurf_bnlm_1_0}[19], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[20], {ifd_segmap_xnr_1_4}[21], {smurf_xnr_1_0}[22], {xnr_5_4, vcr_3_1, glim_2_0}[23], {ifd_segmap_acm_1_4}[24], {smurf_acm_1_0}[25], {acm_1_2, gammatm_v4, csc_1_1}[26], {b2i_ds_1_1}[27], {lbff_crop_espa_1_4}[28], {tnr7_spatial_1_1}[29], {tnr_scaler_lb_1_1}[30], {tnr7_ims_1_2}[31], {ifd_segmap_tnr_bc_1_4}[32], {smurf_tnr_bc_1_0}[33], {tnr7_bc_1_2}[34], {odr_tnr_sp_bc_rs4n_1_4}[35], {ifd_segmap_tnr_blend_1_4}[36], {smurf_tnr_blend_1_0}[37], {tnr7_blend_1_1}[38], {odr_tnr_fp_yuvn_1_4}[39], {tnr_scaler_fp_1_1}[40], {image_upscaler_1_1}[41], {odr_tnr_scale_fp_yuv4n_1_4}[42], {ifd_segmap_cas_1_4}[43], {smurf_cas_1_0}[44], {cas_1_1}[45], {odr_ofs_mp_1_4}[46], {b2i_ds_output_1_1}[47], {odr_ofs_dp_1_4}[48] }
    uint8_t systemApisSizes[61] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[61] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 25 /*bnlm_3_4*/, 26 /*bxt_demosaic*/, 27 /*vcsc_2_0_b*/, 28 /*gltm_2_0*/, 31 /*xnr_5_4*/, 32 /*vcr_3_1*/, 33 /*glim_2_0*/, 36 /*acm_1_2*/, 37 /*gammatm_v4*/, 38 /*csc_1_1*/, 39 /*b2i_ds_1_1*/, 40 /*lbff_crop_espa_1_4*/, 41 /*tnr7_spatial_1_1*/, 42 /*tnr_scaler_lb_1_1*/, 18 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 21 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 43 /*tnr7_ims_1_2*/, 46 /*tnr7_bc_1_2*/, 47 /*odr_tnr_sp_bc_rs4n_1_4*/, 22 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 50 /*tnr7_blend_1_1*/, 53 /*image_upscaler_1_1*/, 57 /*cas_1_1*/, 58 /*odr_ofs_mp_1_4*/, 59 /*b2i_ds_output_1_1*/, 60 /*odr_ofs_dp_1_4*/, 51 /*odr_tnr_fp_yuvn_1_4*/, 52 /*tnr_scaler_fp_1_1*/, 54 /*odr_tnr_scale_fp_yuv4n_1_4*/, 23 /*ifd_segmap_bnlm_1_4*/, 29 /*ifd_segmap_xnr_1_4*/, 34 /*ifd_segmap_acm_1_4*/, 44 /*ifd_segmap_tnr_bc_1_4*/, 48 /*ifd_segmap_tnr_blend_1_4*/, 55 /*ifd_segmap_cas_1_4*/, 24 /*smurf_bnlm_1_0*/, 30 /*smurf_xnr_1_0*/, 35 /*smurf_acm_1_0*/, 45 /*smurf_tnr_bc_1_0*/, 49 /*smurf_tnr_blend_1_0*/, 56 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[25].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol2InputsWithGmvWithTnrWithSapOuterNode::Init(LbffDol2InputsWithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 65, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[65] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xDFBBEB18C3FC7FC3, 0x1}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], rgbs_grid_1_1[6], ccm_3a_2_0[7], rgb_ir_2_0[8], odr_awb_std_1_4[9], odr_awb_sve_1_4[10], odr_awb_sat_1_4[11], aestatistics_2_1[12], odr_ae_1_4[13], ifd_lsc_1_4[14], fr_grid_1_0[18], odr_af_std_1_4[19], ifd_gmv_1_4[20], ifd_tnr_sp_bc_yuv4nm1_1_4[21], ifd_tnr_sp_bc_rs4nm1_1_4[22], ifd_tnr_fp_blend_yuvnm1_1_4[23], ifd_segmap_bnlm_1_4[24], smurf_bnlm_1_0[25], ifd_segmap_xnr_1_4[30], smurf_xnr_1_0[31], ifd_segmap_acm_1_4[35], smurf_acm_1_0[36], b2i_ds_1_1[40], lbff_crop_espa_1_4[41], tnr_scaler_lb_1_1[43], gmv_statistics_1_1[45], odr_gmv_feature_1_4[46], odr_gmv_match_1_4[47], ifd_segmap_tnr_bc_1_4[48], smurf_tnr_bc_1_0[49], odr_tnr_sp_bc_rs4n_1_4[51], ifd_segmap_tnr_blend_1_4[52], smurf_tnr_blend_1_0[53], odr_tnr_fp_yuvn_1_4[55], tnr_scaler_fp_1_1[56], image_upscaler_1_1[57], odr_tnr_scale_fp_yuv4n_1_4[58], ifd_segmap_cas_1_4[59], smurf_cas_1_0[60], odr_ofs_mp_1_4[62], b2i_ds_output_1_1[63], odr_ofs_dp_1_4[64] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3C77F639C7F8FE06, 0x1}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {ifd_tnr_sp_bc_yuv4nm1_1_4}[12], {ifd_tnr_sp_bc_rs4nm1_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0}[20], {ifd_segmap_acm_1_4}[21], {smurf_acm_1_0}[22], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[23], {lbff_crop_espa_1_4}[24], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[25], {tnr7_ims_1_2}[26], {gmv_statistics_1_1}[27], {odr_gmv_feature_1_4}[28], {odr_gmv_match_1_4}[29], {ifd_segmap_tnr_bc_1_4}[30], {smurf_tnr_bc_1_0}[31], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[32], {ifd_segmap_tnr_blend_1_4}[33], {smurf_tnr_blend_1_0}[34], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[35], {odr_tnr_scale_fp_yuv4n_1_4}[36], {ifd_segmap_cas_1_4}[37], {smurf_cas_1_0}[38], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[39], {odr_ofs_dp_1_4}[40] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFF39C7FCFFC7, 0x1}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[2], {rgbs_grid_1_1}[3], {ccm_3a_2_0}[4], {rgb_ir_2_0}[5], {odr_awb_std_1_4}[6], {odr_awb_sve_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {ifd_lsc_1_4}[11], {lsc_1_2, gd_2_2, wb_1_1}[12], {fr_grid_1_0}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {ifd_tnr_sp_bc_yuv4nm1_1_4}[16], {ifd_tnr_sp_bc_rs4nm1_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {ifd_segmap_bnlm_1_4}[19], {smurf_bnlm_1_0}[20], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[21], {ifd_segmap_xnr_1_4}[22], {smurf_xnr_1_0}[23], {xnr_5_4, vcr_3_1, glim_2_0}[24], {ifd_segmap_acm_1_4}[25], {smurf_acm_1_0}[26], {acm_1_2, gammatm_v4, csc_1_1}[27], {b2i_ds_1_1}[28], {lbff_crop_espa_1_4}[29], {tnr7_spatial_1_1}[30], {tnr_scaler_lb_1_1}[31], {tnr7_ims_1_2}[32], {gmv_statistics_1_1}[33], {odr_gmv_feature_1_4}[34], {odr_gmv_match_1_4}[35], {ifd_segmap_tnr_bc_1_4}[36], {smurf_tnr_bc_1_0}[37], {tnr7_bc_1_2}[38], {odr_tnr_sp_bc_rs4n_1_4}[39], {ifd_segmap_tnr_blend_1_4}[40], {smurf_tnr_blend_1_0}[41], {tnr7_blend_1_1}[42], {odr_tnr_fp_yuvn_1_4}[43], {tnr_scaler_fp_1_1}[44], {image_upscaler_1_1}[45], {odr_tnr_scale_fp_yuv4n_1_4}[46], {ifd_segmap_cas_1_4}[47], {smurf_cas_1_0}[48], {cas_1_1}[49], {odr_ofs_mp_1_4}[50], {b2i_ds_output_1_1}[51], {odr_ofs_dp_1_4}[52] }
    uint8_t systemApisSizes[65] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[65] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*dol_lite_1_2*/, 3 /*bxt_blc*/, 4 /*linearization2_0*/, 5 /*dpc_2_2*/, 8 /*rgb_ir_2_0*/, 6 /*rgbs_grid_1_1*/, 9 /*odr_awb_std_1_4*/, 10 /*odr_awb_sve_1_4*/, 11 /*odr_awb_sat_1_4*/, 7 /*ccm_3a_2_0*/, 12 /*aestatistics_2_1*/, 13 /*odr_ae_1_4*/, 14 /*ifd_lsc_1_4*/, 15 /*lsc_1_2*/, 16 /*gd_2_2*/, 17 /*wb_1_1*/, 26 /*bnlm_3_4*/, 27 /*bxt_demosaic*/, 28 /*vcsc_2_0_b*/, 29 /*gltm_2_0*/, 32 /*xnr_5_4*/, 33 /*vcr_3_1*/, 34 /*glim_2_0*/, 37 /*acm_1_2*/, 38 /*gammatm_v4*/, 39 /*csc_1_1*/, 40 /*b2i_ds_1_1*/, 41 /*lbff_crop_espa_1_4*/, 42 /*tnr7_spatial_1_1*/, 43 /*tnr_scaler_lb_1_1*/, 18 /*fr_grid_1_0*/, 19 /*odr_af_std_1_4*/, 20 /*ifd_gmv_1_4*/, 45 /*gmv_statistics_1_1*/, 46 /*odr_gmv_feature_1_4*/, 47 /*odr_gmv_match_1_4*/, 21 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 22 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 44 /*tnr7_ims_1_2*/, 50 /*tnr7_bc_1_2*/, 51 /*odr_tnr_sp_bc_rs4n_1_4*/, 23 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 54 /*tnr7_blend_1_1*/, 57 /*image_upscaler_1_1*/, 61 /*cas_1_1*/, 62 /*odr_ofs_mp_1_4*/, 63 /*b2i_ds_output_1_1*/, 64 /*odr_ofs_dp_1_4*/, 55 /*odr_tnr_fp_yuvn_1_4*/, 56 /*tnr_scaler_fp_1_1*/, 58 /*odr_tnr_scale_fp_yuv4n_1_4*/, 24 /*ifd_segmap_bnlm_1_4*/, 30 /*ifd_segmap_xnr_1_4*/, 35 /*ifd_segmap_acm_1_4*/, 48 /*ifd_segmap_tnr_bc_1_4*/, 52 /*ifd_segmap_tnr_blend_1_4*/, 59 /*ifd_segmap_cas_1_4*/, 25 /*smurf_bnlm_1_0*/, 31 /*smurf_xnr_1_0*/, 36 /*smurf_acm_1_0*/, 49 /*smurf_tnr_bc_1_0*/, 53 /*smurf_tnr_blend_1_0*/, 60 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[26].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsNoGmvNoTnrWithSapOuterNode::Init(LbffDol3InputsNoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 46, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[46] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BE31878FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[19], odr_af_std_1_4[20], ifd_segmap_bnlm_1_4[21], smurf_bnlm_1_0[22], ifd_segmap_xnr_1_4[27], smurf_xnr_1_0[28], ifd_segmap_acm_1_4[32], smurf_acm_1_0[33], b2i_ds_1_1[37], lbff_crop_espa_1_4[38], image_upscaler_1_1[39], ifd_segmap_cas_1_4[40], smurf_cas_1_0[41], odr_ofs_mp_1_4[43], b2i_ds_output_1_1[44], odr_ofs_dp_1_4[45] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x27C738F1FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[10], {odr_af_std_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0}[17], {ifd_segmap_acm_1_4}[18], {smurf_acm_1_0}[19], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[20], {lbff_crop_espa_1_4}[21], {image_upscaler_1_1}[22], {ifd_segmap_cas_1_4}[23], {smurf_cas_1_0}[24], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[25], {odr_ofs_dp_1_4}[26] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FE738F9FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1}[13], {fr_grid_1_0}[14], {odr_af_std_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1}[24], {b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {image_upscaler_1_1}[27], {ifd_segmap_cas_1_4}[28], {smurf_cas_1_0}[29], {cas_1_1}[30], {odr_ofs_mp_1_4}[31], {b2i_ds_output_1_1}[32], {odr_ofs_dp_1_4}[33] }
    uint8_t systemApisSizes[46] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[46] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 23 /*bnlm_3_4*/, 24 /*bxt_demosaic*/, 25 /*vcsc_2_0_b*/, 26 /*gltm_2_0*/, 29 /*xnr_5_4*/, 30 /*vcr_3_1*/, 31 /*glim_2_0*/, 34 /*acm_1_2*/, 35 /*gammatm_v4*/, 36 /*csc_1_1*/, 37 /*b2i_ds_1_1*/, 38 /*lbff_crop_espa_1_4*/, 39 /*image_upscaler_1_1*/, 42 /*cas_1_1*/, 43 /*odr_ofs_mp_1_4*/, 44 /*b2i_ds_output_1_1*/, 45 /*odr_ofs_dp_1_4*/, 19 /*fr_grid_1_0*/, 20 /*odr_af_std_1_4*/, 21 /*ifd_segmap_bnlm_1_4*/, 27 /*ifd_segmap_xnr_1_4*/, 32 /*ifd_segmap_acm_1_4*/, 40 /*ifd_segmap_cas_1_4*/, 22 /*smurf_bnlm_1_0*/, 28 /*smurf_xnr_1_0*/, 33 /*smurf_acm_1_0*/, 41 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[23].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsWithGmvNoTnrWithSapOuterNode::Init(LbffDol3InputsWithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 50, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[50] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BFC630F8FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[19], odr_af_std_1_4[20], ifd_gmv_1_4[21], ifd_segmap_bnlm_1_4[22], smurf_bnlm_1_0[23], ifd_segmap_xnr_1_4[28], smurf_xnr_1_0[29], ifd_segmap_acm_1_4[33], smurf_acm_1_0[34], b2i_ds_1_1[38], lbff_crop_espa_1_4[39], image_upscaler_1_1[40], gmv_statistics_1_1[41], odr_gmv_feature_1_4[42], odr_gmv_match_1_4[43], ifd_segmap_cas_1_4[44], smurf_cas_1_0[45], odr_ofs_mp_1_4[47], b2i_ds_output_1_1[48], odr_ofs_dp_1_4[49] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x27F8E71F1FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[10], {odr_af_std_1_4}[11], {ifd_gmv_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0}[18], {ifd_segmap_acm_1_4}[19], {smurf_acm_1_0}[20], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[21], {lbff_crop_espa_1_4}[22], {image_upscaler_1_1}[23], {gmv_statistics_1_1}[24], {odr_gmv_feature_1_4}[25], {odr_gmv_match_1_4}[26], {ifd_segmap_cas_1_4}[27], {smurf_cas_1_0}[28], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[29], {odr_ofs_dp_1_4}[30] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFCE71F9FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1}[13], {fr_grid_1_0}[14], {odr_af_std_1_4}[15], {ifd_gmv_1_4}[16], {ifd_segmap_bnlm_1_4}[17], {smurf_bnlm_1_0}[18], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[19], {ifd_segmap_xnr_1_4}[20], {smurf_xnr_1_0}[21], {xnr_5_4, vcr_3_1, glim_2_0}[22], {ifd_segmap_acm_1_4}[23], {smurf_acm_1_0}[24], {acm_1_2, gammatm_v4, csc_1_1}[25], {b2i_ds_1_1}[26], {lbff_crop_espa_1_4}[27], {image_upscaler_1_1}[28], {gmv_statistics_1_1}[29], {odr_gmv_feature_1_4}[30], {odr_gmv_match_1_4}[31], {ifd_segmap_cas_1_4}[32], {smurf_cas_1_0}[33], {cas_1_1}[34], {odr_ofs_mp_1_4}[35], {b2i_ds_output_1_1}[36], {odr_ofs_dp_1_4}[37] }
    uint8_t systemApisSizes[50] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[50] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 24 /*bnlm_3_4*/, 25 /*bxt_demosaic*/, 26 /*vcsc_2_0_b*/, 27 /*gltm_2_0*/, 30 /*xnr_5_4*/, 31 /*vcr_3_1*/, 32 /*glim_2_0*/, 35 /*acm_1_2*/, 36 /*gammatm_v4*/, 37 /*csc_1_1*/, 38 /*b2i_ds_1_1*/, 39 /*lbff_crop_espa_1_4*/, 40 /*image_upscaler_1_1*/, 46 /*cas_1_1*/, 47 /*odr_ofs_mp_1_4*/, 48 /*b2i_ds_output_1_1*/, 49 /*odr_ofs_dp_1_4*/, 19 /*fr_grid_1_0*/, 20 /*odr_af_std_1_4*/, 21 /*ifd_gmv_1_4*/, 41 /*gmv_statistics_1_1*/, 42 /*odr_gmv_feature_1_4*/, 43 /*odr_gmv_match_1_4*/, 22 /*ifd_segmap_bnlm_1_4*/, 28 /*ifd_segmap_xnr_1_4*/, 33 /*ifd_segmap_acm_1_4*/, 44 /*ifd_segmap_cas_1_4*/, 23 /*smurf_bnlm_1_0*/, 29 /*smurf_xnr_1_0*/, 34 /*smurf_acm_1_0*/, 45 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[24].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsNoGmvWithTnrWithSapOuterNode::Init(LbffDol3InputsNoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 62, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[62] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x3BF76B18C3F8FF87, 0x0}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[19], odr_af_std_1_4[20], ifd_tnr_sp_bc_yuv4nm1_1_4[21], ifd_tnr_sp_bc_rs4nm1_1_4[22], ifd_tnr_fp_blend_yuvnm1_1_4[23], ifd_segmap_bnlm_1_4[24], smurf_bnlm_1_0[25], ifd_segmap_xnr_1_4[30], smurf_xnr_1_0[31], ifd_segmap_acm_1_4[35], smurf_acm_1_0[36], b2i_ds_1_1[40], lbff_crop_espa_1_4[41], tnr_scaler_lb_1_1[43], ifd_segmap_tnr_bc_1_4[45], smurf_tnr_bc_1_0[46], odr_tnr_sp_bc_rs4n_1_4[48], ifd_segmap_tnr_blend_1_4[49], smurf_tnr_blend_1_0[50], odr_tnr_fp_yuvn_1_4[52], tnr_scaler_fp_1_1[53], image_upscaler_1_1[54], odr_tnr_scale_fp_yuv4n_1_4[55], ifd_segmap_cas_1_4[56], smurf_cas_1_0[57], odr_ofs_mp_1_4[59], b2i_ds_output_1_1[60], odr_ofs_dp_1_4[61] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x278EF639C7F1FC0E, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[10], {odr_af_std_1_4}[11], {ifd_tnr_sp_bc_yuv4nm1_1_4}[12], {ifd_tnr_sp_bc_rs4nm1_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0}[20], {ifd_segmap_acm_1_4}[21], {smurf_acm_1_0}[22], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[23], {lbff_crop_espa_1_4}[24], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[25], {tnr7_ims_1_2}[26], {ifd_segmap_tnr_bc_1_4}[27], {smurf_tnr_bc_1_0}[28], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[29], {ifd_segmap_tnr_blend_1_4}[30], {smurf_tnr_blend_1_0}[31], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[32], {odr_tnr_scale_fp_yuv4n_1_4}[33], {ifd_segmap_cas_1_4}[34], {smurf_cas_1_0}[35], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[36], {odr_ofs_dp_1_4}[37] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3FFFFF39C7F9FF8F, 0x0}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1}[13], {fr_grid_1_0}[14], {odr_af_std_1_4}[15], {ifd_tnr_sp_bc_yuv4nm1_1_4}[16], {ifd_tnr_sp_bc_rs4nm1_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {ifd_segmap_bnlm_1_4}[19], {smurf_bnlm_1_0}[20], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[21], {ifd_segmap_xnr_1_4}[22], {smurf_xnr_1_0}[23], {xnr_5_4, vcr_3_1, glim_2_0}[24], {ifd_segmap_acm_1_4}[25], {smurf_acm_1_0}[26], {acm_1_2, gammatm_v4, csc_1_1}[27], {b2i_ds_1_1}[28], {lbff_crop_espa_1_4}[29], {tnr7_spatial_1_1}[30], {tnr_scaler_lb_1_1}[31], {tnr7_ims_1_2}[32], {ifd_segmap_tnr_bc_1_4}[33], {smurf_tnr_bc_1_0}[34], {tnr7_bc_1_2}[35], {odr_tnr_sp_bc_rs4n_1_4}[36], {ifd_segmap_tnr_blend_1_4}[37], {smurf_tnr_blend_1_0}[38], {tnr7_blend_1_1}[39], {odr_tnr_fp_yuvn_1_4}[40], {tnr_scaler_fp_1_1}[41], {image_upscaler_1_1}[42], {odr_tnr_scale_fp_yuv4n_1_4}[43], {ifd_segmap_cas_1_4}[44], {smurf_cas_1_0}[45], {cas_1_1}[46], {odr_ofs_mp_1_4}[47], {b2i_ds_output_1_1}[48], {odr_ofs_dp_1_4}[49] }
    uint8_t systemApisSizes[62] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[62] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 26 /*bnlm_3_4*/, 27 /*bxt_demosaic*/, 28 /*vcsc_2_0_b*/, 29 /*gltm_2_0*/, 32 /*xnr_5_4*/, 33 /*vcr_3_1*/, 34 /*glim_2_0*/, 37 /*acm_1_2*/, 38 /*gammatm_v4*/, 39 /*csc_1_1*/, 40 /*b2i_ds_1_1*/, 41 /*lbff_crop_espa_1_4*/, 42 /*tnr7_spatial_1_1*/, 43 /*tnr_scaler_lb_1_1*/, 19 /*fr_grid_1_0*/, 20 /*odr_af_std_1_4*/, 21 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 22 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 44 /*tnr7_ims_1_2*/, 47 /*tnr7_bc_1_2*/, 48 /*odr_tnr_sp_bc_rs4n_1_4*/, 23 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 51 /*tnr7_blend_1_1*/, 54 /*image_upscaler_1_1*/, 58 /*cas_1_1*/, 59 /*odr_ofs_mp_1_4*/, 60 /*b2i_ds_output_1_1*/, 61 /*odr_ofs_dp_1_4*/, 52 /*odr_tnr_fp_yuvn_1_4*/, 53 /*tnr_scaler_fp_1_1*/, 55 /*odr_tnr_scale_fp_yuv4n_1_4*/, 24 /*ifd_segmap_bnlm_1_4*/, 30 /*ifd_segmap_xnr_1_4*/, 35 /*ifd_segmap_acm_1_4*/, 45 /*ifd_segmap_tnr_bc_1_4*/, 49 /*ifd_segmap_tnr_blend_1_4*/, 56 /*ifd_segmap_cas_1_4*/, 25 /*smurf_bnlm_1_0*/, 31 /*smurf_xnr_1_0*/, 36 /*smurf_acm_1_0*/, 46 /*smurf_tnr_bc_1_0*/, 50 /*smurf_tnr_blend_1_0*/, 57 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[26].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffDol3InputsWithGmvWithTnrWithSapOuterNode::Init(LbffDol3InputsWithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 66, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[66] = {52446 /*ifd_pipe_1_4*/, 24678 /*ifd_pipe_long_1_4*/, 4386 /*ifd_pipe_short_smth_1_4*/, 54871 /*dol_lite_1_2*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 14488 /*rgb_ir_2_0*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 26958 /*fr_grid_1_0*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xBF77D63187F8FF87, 0x3}; // { ifd_pipe_1_4[0], ifd_pipe_long_1_4[1], ifd_pipe_short_smth_1_4[2], rgbs_grid_1_1[7], ccm_3a_2_0[8], rgb_ir_2_0[9], odr_awb_std_1_4[10], odr_awb_sve_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], ifd_lsc_1_4[15], fr_grid_1_0[19], odr_af_std_1_4[20], ifd_gmv_1_4[21], ifd_tnr_sp_bc_yuv4nm1_1_4[22], ifd_tnr_sp_bc_rs4nm1_1_4[23], ifd_tnr_fp_blend_yuvnm1_1_4[24], ifd_segmap_bnlm_1_4[25], smurf_bnlm_1_0[26], ifd_segmap_xnr_1_4[31], smurf_xnr_1_0[32], ifd_segmap_acm_1_4[36], smurf_acm_1_0[37], b2i_ds_1_1[41], lbff_crop_espa_1_4[42], tnr_scaler_lb_1_1[44], gmv_statistics_1_1[46], odr_gmv_feature_1_4[47], odr_gmv_match_1_4[48], ifd_segmap_tnr_bc_1_4[49], smurf_tnr_bc_1_0[50], odr_tnr_sp_bc_rs4n_1_4[52], ifd_segmap_tnr_blend_1_4[53], smurf_tnr_blend_1_0[54], odr_tnr_fp_yuvn_1_4[56], tnr_scaler_fp_1_1[57], image_upscaler_1_1[58], odr_tnr_scale_fp_yuv4n_1_4[59], ifd_segmap_cas_1_4[60], smurf_cas_1_0[61], odr_ofs_mp_1_4[63], b2i_ds_output_1_1[64], odr_ofs_dp_1_4[65] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x78EFEC738FF1FC0E, 0x2}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, ccm_3a_2_0, rgb_ir_2_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sve_1_4}[5], {odr_awb_sat_1_4}[6], {aestatistics_2_1}[7], {odr_ae_1_4}[8], {ifd_lsc_1_4}[9], {lsc_1_2, gd_2_2, wb_1_1, fr_grid_1_0}[10], {odr_af_std_1_4}[11], {ifd_gmv_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {ifd_tnr_fp_blend_yuvnm1_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[24], {lbff_crop_espa_1_4}[25], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[26], {tnr7_ims_1_2}[27], {gmv_statistics_1_1}[28], {odr_gmv_feature_1_4}[29], {odr_gmv_match_1_4}[30], {ifd_segmap_tnr_bc_1_4}[31], {smurf_tnr_bc_1_0}[32], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[33], {ifd_segmap_tnr_blend_1_4}[34], {smurf_tnr_blend_1_0}[35], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[36], {odr_tnr_scale_fp_yuv4n_1_4}[37], {ifd_segmap_cas_1_4}[38], {smurf_cas_1_0}[39], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[40], {odr_ofs_dp_1_4}[41] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFE738FF9FF8F, 0x3}; // {{ifd_pipe_1_4}[0], {ifd_pipe_long_1_4}[1], {ifd_pipe_short_smth_1_4}[2], {dol_lite_1_2, bxt_blc, linearization2_0, dpc_2_2}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {rgb_ir_2_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sve_1_4}[8], {odr_awb_sat_1_4}[9], {aestatistics_2_1}[10], {odr_ae_1_4}[11], {ifd_lsc_1_4}[12], {lsc_1_2, gd_2_2, wb_1_1}[13], {fr_grid_1_0}[14], {odr_af_std_1_4}[15], {ifd_gmv_1_4}[16], {ifd_tnr_sp_bc_yuv4nm1_1_4}[17], {ifd_tnr_sp_bc_rs4nm1_1_4}[18], {ifd_tnr_fp_blend_yuvnm1_1_4}[19], {ifd_segmap_bnlm_1_4}[20], {smurf_bnlm_1_0}[21], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[22], {ifd_segmap_xnr_1_4}[23], {smurf_xnr_1_0}[24], {xnr_5_4, vcr_3_1, glim_2_0}[25], {ifd_segmap_acm_1_4}[26], {smurf_acm_1_0}[27], {acm_1_2, gammatm_v4, csc_1_1}[28], {b2i_ds_1_1}[29], {lbff_crop_espa_1_4}[30], {tnr7_spatial_1_1}[31], {tnr_scaler_lb_1_1}[32], {tnr7_ims_1_2}[33], {gmv_statistics_1_1}[34], {odr_gmv_feature_1_4}[35], {odr_gmv_match_1_4}[36], {ifd_segmap_tnr_bc_1_4}[37], {smurf_tnr_bc_1_0}[38], {tnr7_bc_1_2}[39], {odr_tnr_sp_bc_rs4n_1_4}[40], {ifd_segmap_tnr_blend_1_4}[41], {smurf_tnr_blend_1_0}[42], {tnr7_blend_1_1}[43], {odr_tnr_fp_yuvn_1_4}[44], {tnr_scaler_fp_1_1}[45], {image_upscaler_1_1}[46], {odr_tnr_scale_fp_yuv4n_1_4}[47], {ifd_segmap_cas_1_4}[48], {smurf_cas_1_0}[49], {cas_1_1}[50], {odr_ofs_mp_1_4}[51], {b2i_ds_output_1_1}[52], {odr_ofs_dp_1_4}[53] }
    uint8_t systemApisSizes[66] = {220 /*ifd_pipe_1_4*/, 220 /*ifd_pipe_long_1_4*/, 220 /*ifd_pipe_short_smth_1_4*/, 5 /*dol_lite_1_2*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 0 /*rgb_ir_2_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 20 /*fr_grid_1_0*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[66] = {0 /*ifd_pipe_1_4*/, 1 /*ifd_pipe_long_1_4*/, 2 /*ifd_pipe_short_smth_1_4*/, 3 /*dol_lite_1_2*/, 4 /*bxt_blc*/, 5 /*linearization2_0*/, 6 /*dpc_2_2*/, 9 /*rgb_ir_2_0*/, 7 /*rgbs_grid_1_1*/, 10 /*odr_awb_std_1_4*/, 11 /*odr_awb_sve_1_4*/, 12 /*odr_awb_sat_1_4*/, 8 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 15 /*ifd_lsc_1_4*/, 16 /*lsc_1_2*/, 17 /*gd_2_2*/, 18 /*wb_1_1*/, 27 /*bnlm_3_4*/, 28 /*bxt_demosaic*/, 29 /*vcsc_2_0_b*/, 30 /*gltm_2_0*/, 33 /*xnr_5_4*/, 34 /*vcr_3_1*/, 35 /*glim_2_0*/, 38 /*acm_1_2*/, 39 /*gammatm_v4*/, 40 /*csc_1_1*/, 41 /*b2i_ds_1_1*/, 42 /*lbff_crop_espa_1_4*/, 43 /*tnr7_spatial_1_1*/, 44 /*tnr_scaler_lb_1_1*/, 19 /*fr_grid_1_0*/, 20 /*odr_af_std_1_4*/, 21 /*ifd_gmv_1_4*/, 46 /*gmv_statistics_1_1*/, 47 /*odr_gmv_feature_1_4*/, 48 /*odr_gmv_match_1_4*/, 22 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 23 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 45 /*tnr7_ims_1_2*/, 51 /*tnr7_bc_1_2*/, 52 /*odr_tnr_sp_bc_rs4n_1_4*/, 24 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 55 /*tnr7_blend_1_1*/, 58 /*image_upscaler_1_1*/, 62 /*cas_1_1*/, 63 /*odr_ofs_mp_1_4*/, 64 /*b2i_ds_output_1_1*/, 65 /*odr_ofs_dp_1_4*/, 56 /*odr_tnr_fp_yuvn_1_4*/, 57 /*tnr_scaler_fp_1_1*/, 59 /*odr_tnr_scale_fp_yuv4n_1_4*/, 25 /*ifd_segmap_bnlm_1_4*/, 31 /*ifd_segmap_xnr_1_4*/, 36 /*ifd_segmap_acm_1_4*/, 49 /*ifd_segmap_tnr_bc_1_4*/, 53 /*ifd_segmap_tnr_blend_1_4*/, 60 /*ifd_segmap_cas_1_4*/, 26 /*smurf_bnlm_1_0*/, 32 /*smurf_xnr_1_0*/, 37 /*smurf_acm_1_0*/, 50 /*smurf_tnr_bc_1_0*/, 54 /*smurf_tnr_blend_1_0*/, 61 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[27].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrNoGmvNoTnrWithSapOuterNode::Init(LbffRgbIrNoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 44, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[44] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xEF8C61FC7F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[14], fr_grid_1_0[15], aestatistics_2_1[16], odr_ae_1_4[17], odr_af_std_1_4[18], ifd_segmap_bnlm_1_4[19], smurf_bnlm_1_0[20], ifd_segmap_xnr_1_4[25], smurf_xnr_1_0[26], ifd_segmap_acm_1_4[30], smurf_acm_1_0[31], b2i_ds_1_1[35], lbff_crop_espa_1_4[36], image_upscaler_1_1[37], ifd_segmap_cas_1_4[38], smurf_cas_1_0[39], odr_ofs_mp_1_4[41], b2i_ds_output_1_1[42], odr_ofs_dp_1_4[43] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x9F1CE3F0FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, ccm_3a_2_0, fr_grid_1_0}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_segmap_bnlm_1_4}[11], {smurf_bnlm_1_0}[12], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[13], {ifd_segmap_xnr_1_4}[14], {smurf_xnr_1_0}[15], {xnr_5_4, vcr_3_1, glim_2_0}[16], {ifd_segmap_acm_1_4}[17], {smurf_acm_1_0}[18], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[19], {lbff_crop_espa_1_4}[20], {image_upscaler_1_1}[21], {ifd_segmap_cas_1_4}[22], {smurf_cas_1_0}[23], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[24], {odr_ofs_dp_1_4}[25] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFF9CE3FCFF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0}[20], {ifd_segmap_acm_1_4}[21], {smurf_acm_1_0}[22], {acm_1_2, gammatm_v4, csc_1_1}[23], {b2i_ds_1_1}[24], {lbff_crop_espa_1_4}[25], {image_upscaler_1_1}[26], {ifd_segmap_cas_1_4}[27], {smurf_cas_1_0}[28], {cas_1_1}[29], {odr_ofs_mp_1_4}[30], {b2i_ds_output_1_1}[31], {odr_ofs_dp_1_4}[32] }
    uint8_t systemApisSizes[44] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[44] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 21 /*bnlm_3_4*/, 22 /*bxt_demosaic*/, 23 /*vcsc_2_0_b*/, 24 /*gltm_2_0*/, 27 /*xnr_5_4*/, 28 /*vcr_3_1*/, 29 /*glim_2_0*/, 32 /*acm_1_2*/, 33 /*gammatm_v4*/, 34 /*csc_1_1*/, 35 /*b2i_ds_1_1*/, 36 /*lbff_crop_espa_1_4*/, 37 /*image_upscaler_1_1*/, 40 /*cas_1_1*/, 41 /*odr_ofs_mp_1_4*/, 42 /*b2i_ds_output_1_1*/, 43 /*odr_ofs_dp_1_4*/, 14 /*ccm_3a_2_0*/, 16 /*aestatistics_2_1*/, 17 /*odr_ae_1_4*/, 15 /*fr_grid_1_0*/, 18 /*odr_af_std_1_4*/, 19 /*ifd_segmap_bnlm_1_4*/, 25 /*ifd_segmap_xnr_1_4*/, 30 /*ifd_segmap_acm_1_4*/, 38 /*ifd_segmap_cas_1_4*/, 20 /*smurf_bnlm_1_0*/, 26 /*smurf_xnr_1_0*/, 31 /*smurf_acm_1_0*/, 39 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[21].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrWithGmvNoTnrWithSapOuterNode::Init(LbffRgbIrWithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 48, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[48] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xEFF18C3FC7F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[14], fr_grid_1_0[15], aestatistics_2_1[16], odr_ae_1_4[17], odr_af_std_1_4[18], ifd_gmv_1_4[19], ifd_segmap_bnlm_1_4[20], smurf_bnlm_1_0[21], ifd_segmap_xnr_1_4[26], smurf_xnr_1_0[27], ifd_segmap_acm_1_4[31], smurf_acm_1_0[32], b2i_ds_1_1[36], lbff_crop_espa_1_4[37], image_upscaler_1_1[38], gmv_statistics_1_1[39], odr_gmv_feature_1_4[40], odr_gmv_match_1_4[41], ifd_segmap_cas_1_4[42], smurf_cas_1_0[43], odr_ofs_mp_1_4[45], b2i_ds_output_1_1[46], odr_ofs_dp_1_4[47] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x9FE39C7F0FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, ccm_3a_2_0, fr_grid_1_0}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0}[17], {ifd_segmap_acm_1_4}[18], {smurf_acm_1_0}[19], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[20], {lbff_crop_espa_1_4}[21], {image_upscaler_1_1}[22], {gmv_statistics_1_1}[23], {odr_gmv_feature_1_4}[24], {odr_gmv_match_1_4}[25], {ifd_segmap_cas_1_4}[26], {smurf_cas_1_0}[27], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[28], {odr_ofs_dp_1_4}[29] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFF39C7FCFF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0}[21], {ifd_segmap_acm_1_4}[22], {smurf_acm_1_0}[23], {acm_1_2, gammatm_v4, csc_1_1}[24], {b2i_ds_1_1}[25], {lbff_crop_espa_1_4}[26], {image_upscaler_1_1}[27], {gmv_statistics_1_1}[28], {odr_gmv_feature_1_4}[29], {odr_gmv_match_1_4}[30], {ifd_segmap_cas_1_4}[31], {smurf_cas_1_0}[32], {cas_1_1}[33], {odr_ofs_mp_1_4}[34], {b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36] }
    uint8_t systemApisSizes[48] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[48] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 22 /*bnlm_3_4*/, 23 /*bxt_demosaic*/, 24 /*vcsc_2_0_b*/, 25 /*gltm_2_0*/, 28 /*xnr_5_4*/, 29 /*vcr_3_1*/, 30 /*glim_2_0*/, 33 /*acm_1_2*/, 34 /*gammatm_v4*/, 35 /*csc_1_1*/, 36 /*b2i_ds_1_1*/, 37 /*lbff_crop_espa_1_4*/, 38 /*image_upscaler_1_1*/, 44 /*cas_1_1*/, 45 /*odr_ofs_mp_1_4*/, 46 /*b2i_ds_output_1_1*/, 47 /*odr_ofs_dp_1_4*/, 14 /*ccm_3a_2_0*/, 16 /*aestatistics_2_1*/, 17 /*odr_ae_1_4*/, 15 /*fr_grid_1_0*/, 18 /*odr_af_std_1_4*/, 19 /*ifd_gmv_1_4*/, 39 /*gmv_statistics_1_1*/, 40 /*odr_gmv_feature_1_4*/, 41 /*odr_gmv_match_1_4*/, 20 /*ifd_segmap_bnlm_1_4*/, 26 /*ifd_segmap_xnr_1_4*/, 31 /*ifd_segmap_acm_1_4*/, 42 /*ifd_segmap_cas_1_4*/, 21 /*smurf_bnlm_1_0*/, 27 /*smurf_xnr_1_0*/, 32 /*smurf_acm_1_0*/, 43 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[22].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrNoGmvWithTnrWithSapOuterNode::Init(LbffRgbIrNoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 60, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[60] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xEFDDAC630FFC7F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[14], fr_grid_1_0[15], aestatistics_2_1[16], odr_ae_1_4[17], odr_af_std_1_4[18], ifd_tnr_sp_bc_yuv4nm1_1_4[19], ifd_tnr_sp_bc_rs4nm1_1_4[20], ifd_tnr_fp_blend_yuvnm1_1_4[21], ifd_segmap_bnlm_1_4[22], smurf_bnlm_1_0[23], ifd_segmap_xnr_1_4[28], smurf_xnr_1_0[29], ifd_segmap_acm_1_4[33], smurf_acm_1_0[34], b2i_ds_1_1[38], lbff_crop_espa_1_4[39], tnr_scaler_lb_1_1[41], ifd_segmap_tnr_bc_1_4[43], smurf_tnr_bc_1_0[44], odr_tnr_sp_bc_rs4n_1_4[46], ifd_segmap_tnr_blend_1_4[47], smurf_tnr_blend_1_0[48], odr_tnr_fp_yuvn_1_4[50], tnr_scaler_fp_1_1[51], image_upscaler_1_1[52], odr_tnr_scale_fp_yuv4n_1_4[53], ifd_segmap_cas_1_4[54], smurf_cas_1_0[55], odr_ofs_mp_1_4[57], b2i_ds_output_1_1[58], odr_ofs_dp_1_4[59] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x9E3BD8E71FF0FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, ccm_3a_2_0, fr_grid_1_0}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_tnr_sp_bc_yuv4nm1_1_4}[11], {ifd_tnr_sp_bc_rs4nm1_1_4}[12], {ifd_tnr_fp_blend_yuvnm1_1_4}[13], {ifd_segmap_bnlm_1_4}[14], {smurf_bnlm_1_0}[15], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[16], {ifd_segmap_xnr_1_4}[17], {smurf_xnr_1_0}[18], {xnr_5_4, vcr_3_1, glim_2_0}[19], {ifd_segmap_acm_1_4}[20], {smurf_acm_1_0}[21], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[24], {tnr7_ims_1_2}[25], {ifd_segmap_tnr_bc_1_4}[26], {smurf_tnr_bc_1_0}[27], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[28], {ifd_segmap_tnr_blend_1_4}[29], {smurf_tnr_blend_1_0}[30], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[31], {odr_tnr_scale_fp_yuv4n_1_4}[32], {ifd_segmap_cas_1_4}[33], {smurf_cas_1_0}[34], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[35], {odr_ofs_dp_1_4}[36] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFCE71FFCFF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14], {ifd_tnr_sp_bc_yuv4nm1_1_4}[15], {ifd_tnr_sp_bc_rs4nm1_1_4}[16], {ifd_tnr_fp_blend_yuvnm1_1_4}[17], {ifd_segmap_bnlm_1_4}[18], {smurf_bnlm_1_0}[19], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[20], {ifd_segmap_xnr_1_4}[21], {smurf_xnr_1_0}[22], {xnr_5_4, vcr_3_1, glim_2_0}[23], {ifd_segmap_acm_1_4}[24], {smurf_acm_1_0}[25], {acm_1_2, gammatm_v4, csc_1_1}[26], {b2i_ds_1_1}[27], {lbff_crop_espa_1_4}[28], {tnr7_spatial_1_1}[29], {tnr_scaler_lb_1_1}[30], {tnr7_ims_1_2}[31], {ifd_segmap_tnr_bc_1_4}[32], {smurf_tnr_bc_1_0}[33], {tnr7_bc_1_2}[34], {odr_tnr_sp_bc_rs4n_1_4}[35], {ifd_segmap_tnr_blend_1_4}[36], {smurf_tnr_blend_1_0}[37], {tnr7_blend_1_1}[38], {odr_tnr_fp_yuvn_1_4}[39], {tnr_scaler_fp_1_1}[40], {image_upscaler_1_1}[41], {odr_tnr_scale_fp_yuv4n_1_4}[42], {ifd_segmap_cas_1_4}[43], {smurf_cas_1_0}[44], {cas_1_1}[45], {odr_ofs_mp_1_4}[46], {b2i_ds_output_1_1}[47], {odr_ofs_dp_1_4}[48] }
    uint8_t systemApisSizes[60] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[60] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 24 /*bnlm_3_4*/, 25 /*bxt_demosaic*/, 26 /*vcsc_2_0_b*/, 27 /*gltm_2_0*/, 30 /*xnr_5_4*/, 31 /*vcr_3_1*/, 32 /*glim_2_0*/, 35 /*acm_1_2*/, 36 /*gammatm_v4*/, 37 /*csc_1_1*/, 38 /*b2i_ds_1_1*/, 39 /*lbff_crop_espa_1_4*/, 40 /*tnr7_spatial_1_1*/, 41 /*tnr_scaler_lb_1_1*/, 14 /*ccm_3a_2_0*/, 16 /*aestatistics_2_1*/, 17 /*odr_ae_1_4*/, 15 /*fr_grid_1_0*/, 18 /*odr_af_std_1_4*/, 19 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 20 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 42 /*tnr7_ims_1_2*/, 45 /*tnr7_bc_1_2*/, 46 /*odr_tnr_sp_bc_rs4n_1_4*/, 21 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 49 /*tnr7_blend_1_1*/, 52 /*image_upscaler_1_1*/, 56 /*cas_1_1*/, 57 /*odr_ofs_mp_1_4*/, 58 /*b2i_ds_output_1_1*/, 59 /*odr_ofs_dp_1_4*/, 50 /*odr_tnr_fp_yuvn_1_4*/, 51 /*tnr_scaler_fp_1_1*/, 53 /*odr_tnr_scale_fp_yuv4n_1_4*/, 22 /*ifd_segmap_bnlm_1_4*/, 28 /*ifd_segmap_xnr_1_4*/, 33 /*ifd_segmap_acm_1_4*/, 43 /*ifd_segmap_tnr_bc_1_4*/, 47 /*ifd_segmap_tnr_blend_1_4*/, 54 /*ifd_segmap_cas_1_4*/, 23 /*smurf_bnlm_1_0*/, 29 /*smurf_xnr_1_0*/, 34 /*smurf_acm_1_0*/, 44 /*smurf_tnr_bc_1_0*/, 48 /*smurf_tnr_blend_1_0*/, 55 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[24].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffRgbIrWithGmvWithTnrWithSapOuterNode::Init(LbffRgbIrWithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 64, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[64] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 60297 /*odr_ir_1_4*/, 38544 /*odr_awb_std_1_4*/, 53430 /*odr_awb_sve_1_4*/, 1248 /*odr_awb_sat_1_4*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0xEFDDF58C61FFC7F1, 0x0}; // { ifd_pipe_1_4[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_4[6], odr_awb_std_1_4[7], odr_awb_sve_1_4[8], odr_awb_sat_1_4[9], ifd_lsc_1_4[10], ccm_3a_2_0[14], fr_grid_1_0[15], aestatistics_2_1[16], odr_ae_1_4[17], odr_af_std_1_4[18], ifd_gmv_1_4[19], ifd_tnr_sp_bc_yuv4nm1_1_4[20], ifd_tnr_sp_bc_rs4nm1_1_4[21], ifd_tnr_fp_blend_yuvnm1_1_4[22], ifd_segmap_bnlm_1_4[23], smurf_bnlm_1_0[24], ifd_segmap_xnr_1_4[29], smurf_xnr_1_0[30], ifd_segmap_acm_1_4[34], smurf_acm_1_0[35], b2i_ds_1_1[39], lbff_crop_espa_1_4[40], tnr_scaler_lb_1_1[42], gmv_statistics_1_1[44], odr_gmv_feature_1_4[45], odr_gmv_match_1_4[46], ifd_segmap_tnr_bc_1_4[47], smurf_tnr_bc_1_0[48], odr_tnr_sp_bc_rs4n_1_4[50], ifd_segmap_tnr_blend_1_4[51], smurf_tnr_blend_1_0[52], odr_tnr_fp_yuvn_1_4[54], tnr_scaler_fp_1_1[55], image_upscaler_1_1[56], odr_tnr_scale_fp_yuv4n_1_4[57], ifd_segmap_cas_1_4[58], smurf_cas_1_0[59], odr_ofs_mp_1_4[61], b2i_ds_output_1_1[62], odr_ofs_dp_1_4[63] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x9E3BFB1CE3FF0FC2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_4}[2], {odr_awb_std_1_4}[3], {odr_awb_sve_1_4}[4], {odr_awb_sat_1_4}[5], {ifd_lsc_1_4}[6], {lsc_1_2, gd_2_2, wb_1_1, ccm_3a_2_0, fr_grid_1_0}[7], {aestatistics_2_1}[8], {odr_ae_1_4}[9], {odr_af_std_1_4}[10], {ifd_gmv_1_4}[11], {ifd_tnr_sp_bc_yuv4nm1_1_4}[12], {ifd_tnr_sp_bc_rs4nm1_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0}[20], {ifd_segmap_acm_1_4}[21], {smurf_acm_1_0}[22], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[23], {lbff_crop_espa_1_4}[24], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[25], {tnr7_ims_1_2}[26], {gmv_statistics_1_1}[27], {odr_gmv_feature_1_4}[28], {odr_gmv_match_1_4}[29], {ifd_segmap_tnr_bc_1_4}[30], {smurf_tnr_bc_1_0}[31], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[32], {ifd_segmap_tnr_blend_1_4}[33], {smurf_tnr_blend_1_0}[34], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[35], {odr_tnr_scale_fp_yuv4n_1_4}[36], {ifd_segmap_cas_1_4}[37], {smurf_cas_1_0}[38], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[39], {odr_ofs_dp_1_4}[40] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0xFFFFFF9CE3FFCFF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {rgbs_grid_1_1}[2], {rgb_ir_2_0}[3], {odr_ir_1_4}[4], {odr_awb_std_1_4}[5], {odr_awb_sve_1_4}[6], {odr_awb_sat_1_4}[7], {ifd_lsc_1_4}[8], {lsc_1_2, gd_2_2, wb_1_1}[9], {ccm_3a_2_0}[10], {fr_grid_1_0}[11], {aestatistics_2_1}[12], {odr_ae_1_4}[13], {odr_af_std_1_4}[14], {ifd_gmv_1_4}[15], {ifd_tnr_sp_bc_yuv4nm1_1_4}[16], {ifd_tnr_sp_bc_rs4nm1_1_4}[17], {ifd_tnr_fp_blend_yuvnm1_1_4}[18], {ifd_segmap_bnlm_1_4}[19], {smurf_bnlm_1_0}[20], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[21], {ifd_segmap_xnr_1_4}[22], {smurf_xnr_1_0}[23], {xnr_5_4, vcr_3_1, glim_2_0}[24], {ifd_segmap_acm_1_4}[25], {smurf_acm_1_0}[26], {acm_1_2, gammatm_v4, csc_1_1}[27], {b2i_ds_1_1}[28], {lbff_crop_espa_1_4}[29], {tnr7_spatial_1_1}[30], {tnr_scaler_lb_1_1}[31], {tnr7_ims_1_2}[32], {gmv_statistics_1_1}[33], {odr_gmv_feature_1_4}[34], {odr_gmv_match_1_4}[35], {ifd_segmap_tnr_bc_1_4}[36], {smurf_tnr_bc_1_0}[37], {tnr7_bc_1_2}[38], {odr_tnr_sp_bc_rs4n_1_4}[39], {ifd_segmap_tnr_blend_1_4}[40], {smurf_tnr_blend_1_0}[41], {tnr7_blend_1_1}[42], {odr_tnr_fp_yuvn_1_4}[43], {tnr_scaler_fp_1_1}[44], {image_upscaler_1_1}[45], {odr_tnr_scale_fp_yuv4n_1_4}[46], {ifd_segmap_cas_1_4}[47], {smurf_cas_1_0}[48], {cas_1_1}[49], {odr_ofs_mp_1_4}[50], {b2i_ds_output_1_1}[51], {odr_ofs_dp_1_4}[52] }
    uint8_t systemApisSizes[64] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 220 /*odr_ir_1_4*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sve_1_4*/, 220 /*odr_awb_sat_1_4*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[64] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 6 /*odr_ir_1_4*/, 4 /*rgbs_grid_1_1*/, 7 /*odr_awb_std_1_4*/, 8 /*odr_awb_sve_1_4*/, 9 /*odr_awb_sat_1_4*/, 10 /*ifd_lsc_1_4*/, 11 /*lsc_1_2*/, 12 /*gd_2_2*/, 13 /*wb_1_1*/, 25 /*bnlm_3_4*/, 26 /*bxt_demosaic*/, 27 /*vcsc_2_0_b*/, 28 /*gltm_2_0*/, 31 /*xnr_5_4*/, 32 /*vcr_3_1*/, 33 /*glim_2_0*/, 36 /*acm_1_2*/, 37 /*gammatm_v4*/, 38 /*csc_1_1*/, 39 /*b2i_ds_1_1*/, 40 /*lbff_crop_espa_1_4*/, 41 /*tnr7_spatial_1_1*/, 42 /*tnr_scaler_lb_1_1*/, 14 /*ccm_3a_2_0*/, 16 /*aestatistics_2_1*/, 17 /*odr_ae_1_4*/, 15 /*fr_grid_1_0*/, 18 /*odr_af_std_1_4*/, 19 /*ifd_gmv_1_4*/, 44 /*gmv_statistics_1_1*/, 45 /*odr_gmv_feature_1_4*/, 46 /*odr_gmv_match_1_4*/, 20 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 21 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 43 /*tnr7_ims_1_2*/, 49 /*tnr7_bc_1_2*/, 50 /*odr_tnr_sp_bc_rs4n_1_4*/, 22 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 53 /*tnr7_blend_1_1*/, 56 /*image_upscaler_1_1*/, 60 /*cas_1_1*/, 61 /*odr_ofs_mp_1_4*/, 62 /*b2i_ds_output_1_1*/, 63 /*odr_ofs_dp_1_4*/, 54 /*odr_tnr_fp_yuvn_1_4*/, 55 /*tnr_scaler_fp_1_1*/, 57 /*odr_tnr_scale_fp_yuv4n_1_4*/, 23 /*ifd_segmap_bnlm_1_4*/, 29 /*ifd_segmap_xnr_1_4*/, 34 /*ifd_segmap_acm_1_4*/, 47 /*ifd_segmap_tnr_bc_1_4*/, 51 /*ifd_segmap_tnr_blend_1_4*/, 58 /*ifd_segmap_cas_1_4*/, 24 /*smurf_bnlm_1_0*/, 30 /*smurf_xnr_1_0*/, 35 /*smurf_acm_1_0*/, 48 /*smurf_tnr_bc_1_0*/, 52 /*smurf_tnr_blend_1_0*/, 59 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[25].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrNoGmvNoTnrWithSapOuterNode::Init(LbffIrNoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 39, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[39] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77C0C3FF09, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[8], ccm_3a_2_0[9], fr_grid_1_0[10], odr_awb_std_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], odr_af_std_1_4[15], ifd_segmap_bnlm_1_4[16], smurf_bnlm_1_0[17], ifd_segmap_xnr_1_4[22], smurf_xnr_1_0[23], b2i_ds_1_1[30], lbff_crop_espa_1_4[31], image_upscaler_1_1[32], ifd_segmap_cas_1_4[33], smurf_cas_1_0[34], odr_ofs_mp_1_4[36], b2i_ds_output_1_1[37], odr_ofs_dp_1_4[38] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4F81C7F81A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_segmap_bnlm_1_4}[9], {smurf_bnlm_1_0}[10], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[11], {ifd_segmap_xnr_1_4}[12], {smurf_xnr_1_0}[13], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[14], {lbff_crop_espa_1_4}[15], {image_upscaler_1_1}[16], {ifd_segmap_cas_1_4}[17], {smurf_cas_1_0}[18], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[19], {odr_ofs_dp_1_4}[20] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FC1C7FF1B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {odr_af_std_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[17], {b2i_ds_1_1}[18], {lbff_crop_espa_1_4}[19], {image_upscaler_1_1}[20], {ifd_segmap_cas_1_4}[21], {smurf_cas_1_0}[22], {cas_1_1}[23], {odr_ofs_mp_1_4}[24], {b2i_ds_output_1_1}[25], {odr_ofs_dp_1_4}[26] }
    uint8_t systemApisSizes[39] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[39] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 18 /*bnlm_3_4*/, 19 /*bxt_demosaic*/, 20 /*vcsc_2_0_b*/, 21 /*gltm_2_0*/, 24 /*xnr_5_4*/, 25 /*vcr_3_1*/, 26 /*glim_2_0*/, 27 /*acm_1_2*/, 28 /*gammatm_v4*/, 29 /*csc_1_1*/, 30 /*b2i_ds_1_1*/, 31 /*lbff_crop_espa_1_4*/, 32 /*image_upscaler_1_1*/, 35 /*cas_1_1*/, 36 /*odr_ofs_mp_1_4*/, 37 /*b2i_ds_output_1_1*/, 38 /*odr_ofs_dp_1_4*/, 8 /*rgbs_grid_1_1*/, 11 /*odr_awb_std_1_4*/, 12 /*odr_awb_sat_1_4*/, 9 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 10 /*fr_grid_1_0*/, 15 /*odr_af_std_1_4*/, 16 /*ifd_segmap_bnlm_1_4*/, 22 /*ifd_segmap_xnr_1_4*/, 33 /*ifd_segmap_cas_1_4*/, 17 /*smurf_bnlm_1_0*/, 23 /*smurf_xnr_1_0*/, 34 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[18].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrWithGmvNoTnrWithSapOuterNode::Init(LbffIrWithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 43, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[43] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77F8187FF09, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[8], ccm_3a_2_0[9], fr_grid_1_0[10], odr_awb_std_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], odr_af_std_1_4[15], ifd_gmv_1_4[16], ifd_segmap_bnlm_1_4[17], smurf_bnlm_1_0[18], ifd_segmap_xnr_1_4[23], smurf_xnr_1_0[24], b2i_ds_1_1[31], lbff_crop_espa_1_4[32], image_upscaler_1_1[33], gmv_statistics_1_1[34], odr_gmv_feature_1_4[35], odr_gmv_match_1_4[36], ifd_segmap_cas_1_4[37], smurf_cas_1_0[38], odr_ofs_mp_1_4[40], b2i_ds_output_1_1[41], odr_ofs_dp_1_4[42] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4FF038FF81A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_gmv_1_4}[9], {ifd_segmap_bnlm_1_4}[10], {smurf_bnlm_1_0}[11], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[12], {ifd_segmap_xnr_1_4}[13], {smurf_xnr_1_0}[14], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[15], {lbff_crop_espa_1_4}[16], {image_upscaler_1_1}[17], {gmv_statistics_1_1}[18], {odr_gmv_feature_1_4}[19], {odr_gmv_match_1_4}[20], {ifd_segmap_cas_1_4}[21], {smurf_cas_1_0}[22], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[23], {odr_ofs_dp_1_4}[24] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FF838FFF1B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {odr_af_std_1_4}[11], {ifd_gmv_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[18], {b2i_ds_1_1}[19], {lbff_crop_espa_1_4}[20], {image_upscaler_1_1}[21], {gmv_statistics_1_1}[22], {odr_gmv_feature_1_4}[23], {odr_gmv_match_1_4}[24], {ifd_segmap_cas_1_4}[25], {smurf_cas_1_0}[26], {cas_1_1}[27], {odr_ofs_mp_1_4}[28], {b2i_ds_output_1_1}[29], {odr_ofs_dp_1_4}[30] }
    uint8_t systemApisSizes[43] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[43] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 19 /*bnlm_3_4*/, 20 /*bxt_demosaic*/, 21 /*vcsc_2_0_b*/, 22 /*gltm_2_0*/, 25 /*xnr_5_4*/, 26 /*vcr_3_1*/, 27 /*glim_2_0*/, 28 /*acm_1_2*/, 29 /*gammatm_v4*/, 30 /*csc_1_1*/, 31 /*b2i_ds_1_1*/, 32 /*lbff_crop_espa_1_4*/, 33 /*image_upscaler_1_1*/, 39 /*cas_1_1*/, 40 /*odr_ofs_mp_1_4*/, 41 /*b2i_ds_output_1_1*/, 42 /*odr_ofs_dp_1_4*/, 8 /*rgbs_grid_1_1*/, 11 /*odr_awb_std_1_4*/, 12 /*odr_awb_sat_1_4*/, 9 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 10 /*fr_grid_1_0*/, 15 /*odr_af_std_1_4*/, 16 /*ifd_gmv_1_4*/, 34 /*gmv_statistics_1_1*/, 35 /*odr_gmv_feature_1_4*/, 36 /*odr_gmv_match_1_4*/, 17 /*ifd_segmap_bnlm_1_4*/, 23 /*ifd_segmap_xnr_1_4*/, 37 /*ifd_segmap_cas_1_4*/, 18 /*smurf_bnlm_1_0*/, 24 /*smurf_xnr_1_0*/, 38 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[19].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrNoGmvWithTnrWithSapOuterNode::Init(LbffIrNoGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 55, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[55] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77EED6061FFF09, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[8], ccm_3a_2_0[9], fr_grid_1_0[10], odr_awb_std_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], odr_af_std_1_4[15], ifd_tnr_sp_bc_yuv4nm1_1_4[16], ifd_tnr_sp_bc_rs4nm1_1_4[17], ifd_tnr_fp_blend_yuvnm1_1_4[18], ifd_segmap_bnlm_1_4[19], smurf_bnlm_1_0[20], ifd_segmap_xnr_1_4[25], smurf_xnr_1_0[26], b2i_ds_1_1[33], lbff_crop_espa_1_4[34], tnr_scaler_lb_1_1[36], ifd_segmap_tnr_bc_1_4[38], smurf_tnr_bc_1_0[39], odr_tnr_sp_bc_rs4n_1_4[41], ifd_segmap_tnr_blend_1_4[42], smurf_tnr_blend_1_0[43], odr_tnr_fp_yuvn_1_4[45], tnr_scaler_fp_1_1[46], image_upscaler_1_1[47], odr_tnr_scale_fp_yuv4n_1_4[48], ifd_segmap_cas_1_4[49], smurf_cas_1_0[50], odr_ofs_mp_1_4[52], b2i_ds_output_1_1[53], odr_ofs_dp_1_4[54] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4F1DEC0E3FF81A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_tnr_sp_bc_yuv4nm1_1_4}[9], {ifd_tnr_sp_bc_rs4nm1_1_4}[10], {ifd_tnr_fp_blend_yuvnm1_1_4}[11], {ifd_segmap_bnlm_1_4}[12], {smurf_bnlm_1_0}[13], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[14], {ifd_segmap_xnr_1_4}[15], {smurf_xnr_1_0}[16], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[17], {lbff_crop_espa_1_4}[18], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[19], {tnr7_ims_1_2}[20], {ifd_segmap_tnr_bc_1_4}[21], {smurf_tnr_bc_1_0}[22], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[23], {ifd_segmap_tnr_blend_1_4}[24], {smurf_tnr_blend_1_0}[25], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[26], {odr_tnr_scale_fp_yuv4n_1_4}[27], {ifd_segmap_cas_1_4}[28], {smurf_cas_1_0}[29], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[30], {odr_ofs_dp_1_4}[31] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FFFFE0E3FFF1B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {odr_af_std_1_4}[11], {ifd_tnr_sp_bc_yuv4nm1_1_4}[12], {ifd_tnr_sp_bc_rs4nm1_1_4}[13], {ifd_tnr_fp_blend_yuvnm1_1_4}[14], {ifd_segmap_bnlm_1_4}[15], {smurf_bnlm_1_0}[16], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[17], {ifd_segmap_xnr_1_4}[18], {smurf_xnr_1_0}[19], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[20], {b2i_ds_1_1}[21], {lbff_crop_espa_1_4}[22], {tnr7_spatial_1_1}[23], {tnr_scaler_lb_1_1}[24], {tnr7_ims_1_2}[25], {ifd_segmap_tnr_bc_1_4}[26], {smurf_tnr_bc_1_0}[27], {tnr7_bc_1_2}[28], {odr_tnr_sp_bc_rs4n_1_4}[29], {ifd_segmap_tnr_blend_1_4}[30], {smurf_tnr_blend_1_0}[31], {tnr7_blend_1_1}[32], {odr_tnr_fp_yuvn_1_4}[33], {tnr_scaler_fp_1_1}[34], {image_upscaler_1_1}[35], {odr_tnr_scale_fp_yuv4n_1_4}[36], {ifd_segmap_cas_1_4}[37], {smurf_cas_1_0}[38], {cas_1_1}[39], {odr_ofs_mp_1_4}[40], {b2i_ds_output_1_1}[41], {odr_ofs_dp_1_4}[42] }
    uint8_t systemApisSizes[55] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[55] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 21 /*bnlm_3_4*/, 22 /*bxt_demosaic*/, 23 /*vcsc_2_0_b*/, 24 /*gltm_2_0*/, 27 /*xnr_5_4*/, 28 /*vcr_3_1*/, 29 /*glim_2_0*/, 30 /*acm_1_2*/, 31 /*gammatm_v4*/, 32 /*csc_1_1*/, 33 /*b2i_ds_1_1*/, 34 /*lbff_crop_espa_1_4*/, 35 /*tnr7_spatial_1_1*/, 36 /*tnr_scaler_lb_1_1*/, 8 /*rgbs_grid_1_1*/, 11 /*odr_awb_std_1_4*/, 12 /*odr_awb_sat_1_4*/, 9 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 10 /*fr_grid_1_0*/, 15 /*odr_af_std_1_4*/, 16 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 17 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 37 /*tnr7_ims_1_2*/, 40 /*tnr7_bc_1_2*/, 41 /*odr_tnr_sp_bc_rs4n_1_4*/, 18 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 44 /*tnr7_blend_1_1*/, 47 /*image_upscaler_1_1*/, 51 /*cas_1_1*/, 52 /*odr_ofs_mp_1_4*/, 53 /*b2i_ds_output_1_1*/, 54 /*odr_ofs_dp_1_4*/, 45 /*odr_tnr_fp_yuvn_1_4*/, 46 /*tnr_scaler_fp_1_1*/, 48 /*odr_tnr_scale_fp_yuv4n_1_4*/, 19 /*ifd_segmap_bnlm_1_4*/, 25 /*ifd_segmap_xnr_1_4*/, 38 /*ifd_segmap_tnr_bc_1_4*/, 42 /*ifd_segmap_tnr_blend_1_4*/, 49 /*ifd_segmap_cas_1_4*/, 20 /*smurf_bnlm_1_0*/, 26 /*smurf_xnr_1_0*/, 39 /*smurf_tnr_bc_1_0*/, 43 /*smurf_tnr_blend_1_0*/, 50 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[21].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffIrWithGmvWithTnrWithSapOuterNode::Init(LbffIrWithGmvWithTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 59, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[59] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 33184 /*dpc_2_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 51073 /*ifd_gmv_1_4*/, 7357 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 62054 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 16295 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 2495 /*tnr7_spatial_1_1*/, 29996 /*tnr_scaler_lb_1_1*/, 23639 /*tnr7_ims_1_2*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 47873 /*ifd_segmap_tnr_bc_1_4*/, 13101 /*smurf_tnr_bc_1_0*/, 1502 /*tnr7_bc_1_2*/, 63731 /*odr_tnr_sp_bc_rs4n_1_4*/, 14619 /*ifd_segmap_tnr_blend_1_4*/, 42749 /*smurf_tnr_blend_1_0*/, 20119 /*tnr7_blend_1_1*/, 5215 /*odr_tnr_fp_yuvn_1_4*/, 20623 /*tnr_scaler_fp_1_1*/, 28787 /*image_upscaler_1_1*/, 65437 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77EEFAC0C3FFF09, 0x0}; // { ifd_pipe_1_4[0], ifd_lsc_1_4[3], rgbs_grid_1_1[8], ccm_3a_2_0[9], fr_grid_1_0[10], odr_awb_std_1_4[11], odr_awb_sat_1_4[12], aestatistics_2_1[13], odr_ae_1_4[14], odr_af_std_1_4[15], ifd_gmv_1_4[16], ifd_tnr_sp_bc_yuv4nm1_1_4[17], ifd_tnr_sp_bc_rs4nm1_1_4[18], ifd_tnr_fp_blend_yuvnm1_1_4[19], ifd_segmap_bnlm_1_4[20], smurf_bnlm_1_0[21], ifd_segmap_xnr_1_4[26], smurf_xnr_1_0[27], b2i_ds_1_1[34], lbff_crop_espa_1_4[35], tnr_scaler_lb_1_1[37], gmv_statistics_1_1[39], odr_gmv_feature_1_4[40], odr_gmv_match_1_4[41], ifd_segmap_tnr_bc_1_4[42], smurf_tnr_bc_1_0[43], odr_tnr_sp_bc_rs4n_1_4[45], ifd_segmap_tnr_blend_1_4[46], smurf_tnr_blend_1_0[47], odr_tnr_fp_yuvn_1_4[49], tnr_scaler_fp_1_1[50], image_upscaler_1_1[51], odr_tnr_scale_fp_yuv4n_1_4[52], ifd_segmap_cas_1_4[53], smurf_cas_1_0[54], odr_ofs_mp_1_4[56], b2i_ds_output_1_1[57], odr_ofs_dp_1_4[58] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4F1DFD81C7FF81A, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_gmv_1_4}[9], {ifd_tnr_sp_bc_yuv4nm1_1_4}[10], {ifd_tnr_sp_bc_rs4nm1_1_4}[11], {ifd_tnr_fp_blend_yuvnm1_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[18], {lbff_crop_espa_1_4}[19], {tnr7_spatial_1_1, tnr_scaler_lb_1_1}[20], {tnr7_ims_1_2}[21], {gmv_statistics_1_1}[22], {odr_gmv_feature_1_4}[23], {odr_gmv_match_1_4}[24], {ifd_segmap_tnr_bc_1_4}[25], {smurf_tnr_bc_1_0}[26], {tnr7_bc_1_2, odr_tnr_sp_bc_rs4n_1_4}[27], {ifd_segmap_tnr_blend_1_4}[28], {smurf_tnr_blend_1_0}[29], {tnr7_blend_1_1, odr_tnr_fp_yuvn_1_4, tnr_scaler_fp_1_1, image_upscaler_1_1}[30], {odr_tnr_scale_fp_yuv4n_1_4}[31], {ifd_segmap_cas_1_4}[32], {smurf_cas_1_0}[33], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[34], {odr_ofs_dp_1_4}[35] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FFFFFC1C7FFF1B, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, dpc_2_2, gd_2_2, wb_1_1}[3], {rgbs_grid_1_1}[4], {ccm_3a_2_0}[5], {fr_grid_1_0}[6], {odr_awb_std_1_4}[7], {odr_awb_sat_1_4}[8], {aestatistics_2_1}[9], {odr_ae_1_4}[10], {odr_af_std_1_4}[11], {ifd_gmv_1_4}[12], {ifd_tnr_sp_bc_yuv4nm1_1_4}[13], {ifd_tnr_sp_bc_rs4nm1_1_4}[14], {ifd_tnr_fp_blend_yuvnm1_1_4}[15], {ifd_segmap_bnlm_1_4}[16], {smurf_bnlm_1_0}[17], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[18], {ifd_segmap_xnr_1_4}[19], {smurf_xnr_1_0}[20], {xnr_5_4, vcr_3_1, glim_2_0, acm_1_2, gammatm_v4, csc_1_1}[21], {b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {tnr7_spatial_1_1}[24], {tnr_scaler_lb_1_1}[25], {tnr7_ims_1_2}[26], {gmv_statistics_1_1}[27], {odr_gmv_feature_1_4}[28], {odr_gmv_match_1_4}[29], {ifd_segmap_tnr_bc_1_4}[30], {smurf_tnr_bc_1_0}[31], {tnr7_bc_1_2}[32], {odr_tnr_sp_bc_rs4n_1_4}[33], {ifd_segmap_tnr_blend_1_4}[34], {smurf_tnr_blend_1_0}[35], {tnr7_blend_1_1}[36], {odr_tnr_fp_yuvn_1_4}[37], {tnr_scaler_fp_1_1}[38], {image_upscaler_1_1}[39], {odr_tnr_scale_fp_yuv4n_1_4}[40], {ifd_segmap_cas_1_4}[41], {smurf_cas_1_0}[42], {cas_1_1}[43], {odr_ofs_mp_1_4}[44], {b2i_ds_output_1_1}[45], {odr_ofs_dp_1_4}[46] }
    uint8_t systemApisSizes[59] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 20 /*dpc_2_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 220 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 220 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*tnr7_spatial_1_1*/, 0 /*tnr_scaler_lb_1_1*/, 0 /*tnr7_ims_1_2*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_tnr_bc_1_4*/, 0 /*smurf_tnr_bc_1_0*/, 5 /*tnr7_bc_1_2*/, 220 /*odr_tnr_sp_bc_rs4n_1_4*/, 220 /*ifd_segmap_tnr_blend_1_4*/, 0 /*smurf_tnr_blend_1_0*/, 5 /*tnr7_blend_1_1*/, 220 /*odr_tnr_fp_yuvn_1_4*/, 0 /*tnr_scaler_fp_1_1*/, 0 /*image_upscaler_1_1*/, 220 /*odr_tnr_scale_fp_yuv4n_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[59] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*ifd_lsc_1_4*/, 4 /*lsc_1_2*/, 5 /*dpc_2_2*/, 6 /*gd_2_2*/, 7 /*wb_1_1*/, 22 /*bnlm_3_4*/, 23 /*bxt_demosaic*/, 24 /*vcsc_2_0_b*/, 25 /*gltm_2_0*/, 28 /*xnr_5_4*/, 29 /*vcr_3_1*/, 30 /*glim_2_0*/, 31 /*acm_1_2*/, 32 /*gammatm_v4*/, 33 /*csc_1_1*/, 34 /*b2i_ds_1_1*/, 35 /*lbff_crop_espa_1_4*/, 36 /*tnr7_spatial_1_1*/, 37 /*tnr_scaler_lb_1_1*/, 8 /*rgbs_grid_1_1*/, 11 /*odr_awb_std_1_4*/, 12 /*odr_awb_sat_1_4*/, 9 /*ccm_3a_2_0*/, 13 /*aestatistics_2_1*/, 14 /*odr_ae_1_4*/, 10 /*fr_grid_1_0*/, 15 /*odr_af_std_1_4*/, 16 /*ifd_gmv_1_4*/, 39 /*gmv_statistics_1_1*/, 40 /*odr_gmv_feature_1_4*/, 41 /*odr_gmv_match_1_4*/, 17 /*ifd_tnr_sp_bc_yuv4nm1_1_4*/, 18 /*ifd_tnr_sp_bc_rs4nm1_1_4*/, 38 /*tnr7_ims_1_2*/, 44 /*tnr7_bc_1_2*/, 45 /*odr_tnr_sp_bc_rs4n_1_4*/, 19 /*ifd_tnr_fp_blend_yuvnm1_1_4*/, 48 /*tnr7_blend_1_1*/, 51 /*image_upscaler_1_1*/, 55 /*cas_1_1*/, 56 /*odr_ofs_mp_1_4*/, 57 /*b2i_ds_output_1_1*/, 58 /*odr_ofs_dp_1_4*/, 49 /*odr_tnr_fp_yuvn_1_4*/, 50 /*tnr_scaler_fp_1_1*/, 52 /*odr_tnr_scale_fp_yuv4n_1_4*/, 20 /*ifd_segmap_bnlm_1_4*/, 26 /*ifd_segmap_xnr_1_4*/, 42 /*ifd_segmap_tnr_bc_1_4*/, 46 /*ifd_segmap_tnr_blend_1_4*/, 53 /*ifd_segmap_cas_1_4*/, 21 /*smurf_bnlm_1_0*/, 27 /*smurf_xnr_1_0*/, 43 /*smurf_tnr_bc_1_0*/, 47 /*smurf_tnr_blend_1_0*/, 54 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[22].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode::Init(LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 47, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[47] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77C630FFFC71, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[10], ccm_3a_2_0[11], fr_grid_1_0[12], odr_awb_std_1_4[13], odr_awb_sat_1_4[14], aestatistics_2_1[15], odr_ae_1_4[16], odr_af_std_1_4[17], ifd_pdaf_1_4[18], pext_1_0[19], pafstatistics_1_2[20], odr_pdaf_1_4[21], ifd_segmap_bnlm_1_4[22], smurf_bnlm_1_0[23], ifd_segmap_xnr_1_4[28], smurf_xnr_1_0[29], ifd_segmap_acm_1_4[33], smurf_acm_1_0[34], b2i_ds_1_1[38], lbff_crop_espa_1_4[39], image_upscaler_1_1[40], ifd_segmap_cas_1_4[41], smurf_cas_1_0[42], odr_ofs_mp_1_4[44], b2i_ds_output_1_1[45], odr_ofs_dp_1_4[46] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4F8E71FFE0C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_segmap_bnlm_1_4}[13], {smurf_bnlm_1_0}[14], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[15], {ifd_segmap_xnr_1_4}[16], {smurf_xnr_1_0}[17], {xnr_5_4, vcr_3_1, glim_2_0}[18], {ifd_segmap_acm_1_4}[19], {smurf_acm_1_0}[20], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[21], {lbff_crop_espa_1_4}[22], {image_upscaler_1_1}[23], {ifd_segmap_cas_1_4}[24], {smurf_cas_1_0}[25], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[26], {odr_ofs_dp_1_4}[27] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FCE71FFFCF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {odr_awb_std_1_4}[9], {odr_awb_sat_1_4}[10], {aestatistics_2_1}[11], {odr_ae_1_4}[12], {odr_af_std_1_4}[13], {ifd_pdaf_1_4}[14], {pext_1_0}[15], {pafstatistics_1_2}[16], {odr_pdaf_1_4}[17], {ifd_segmap_bnlm_1_4}[18], {smurf_bnlm_1_0}[19], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[20], {ifd_segmap_xnr_1_4}[21], {smurf_xnr_1_0}[22], {xnr_5_4, vcr_3_1, glim_2_0}[23], {ifd_segmap_acm_1_4}[24], {smurf_acm_1_0}[25], {acm_1_2, gammatm_v4, csc_1_1}[26], {b2i_ds_1_1}[27], {lbff_crop_espa_1_4}[28], {image_upscaler_1_1}[29], {ifd_segmap_cas_1_4}[30], {smurf_cas_1_0}[31], {cas_1_1}[32], {odr_ofs_mp_1_4}[33], {b2i_ds_output_1_1}[34], {odr_ofs_dp_1_4}[35] }
    uint8_t systemApisSizes[47] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[47] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 24 /*bnlm_3_4*/, 25 /*bxt_demosaic*/, 26 /*vcsc_2_0_b*/, 27 /*gltm_2_0*/, 30 /*xnr_5_4*/, 31 /*vcr_3_1*/, 32 /*glim_2_0*/, 35 /*acm_1_2*/, 36 /*gammatm_v4*/, 37 /*csc_1_1*/, 38 /*b2i_ds_1_1*/, 39 /*lbff_crop_espa_1_4*/, 40 /*image_upscaler_1_1*/, 43 /*cas_1_1*/, 44 /*odr_ofs_mp_1_4*/, 45 /*b2i_ds_output_1_1*/, 46 /*odr_ofs_dp_1_4*/, 10 /*rgbs_grid_1_1*/, 13 /*odr_awb_std_1_4*/, 14 /*odr_awb_sat_1_4*/, 11 /*ccm_3a_2_0*/, 15 /*aestatistics_2_1*/, 16 /*odr_ae_1_4*/, 12 /*fr_grid_1_0*/, 17 /*odr_af_std_1_4*/, 18 /*ifd_pdaf_1_4*/, 19 /*pext_1_0*/, 20 /*pafstatistics_1_2*/, 21 /*odr_pdaf_1_4*/, 22 /*ifd_segmap_bnlm_1_4*/, 28 /*ifd_segmap_xnr_1_4*/, 33 /*ifd_segmap_acm_1_4*/, 41 /*ifd_segmap_cas_1_4*/, 23 /*smurf_bnlm_1_0*/, 29 /*smurf_xnr_1_0*/, 34 /*smurf_acm_1_0*/, 42 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[24].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode::Init(LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(0, NodeTypes::Cb, 51, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[51] = {52446 /*ifd_pipe_1_4*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33184 /*dpc_2_2*/, 54812 /*odr_dpc_pdaf_1_4*/, 14488 /*rgb_ir_2_0*/, 29313 /*ifd_lsc_1_4*/, 2144 /*lsc_1_2*/, 13882 /*gd_2_2*/, 5144 /*wb_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 38544 /*odr_awb_std_1_4*/, 1248 /*odr_awb_sat_1_4*/, 55073 /*aestatistics_2_1*/, 62556 /*odr_ae_1_4*/, 59136 /*odr_af_std_1_4*/, 22427 /*ifd_pdaf_1_4*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 26892 /*odr_pdaf_1_4*/, 51073 /*ifd_gmv_1_4*/, 35263 /*ifd_segmap_bnlm_1_4*/, 54924 /*smurf_bnlm_1_0*/, 45146 /*bnlm_3_4*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 9241 /*ifd_segmap_xnr_1_4*/, 42329 /*smurf_xnr_1_0*/, 30019 /*xnr_5_4*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 51914 /*ifd_segmap_acm_1_4*/, 28366 /*smurf_acm_1_0*/, 17531 /*acm_1_2*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 40299 /*b2i_ds_1_1*/, 65466 /*lbff_crop_espa_1_4*/, 28787 /*image_upscaler_1_1*/, 40280 /*gmv_statistics_1_1*/, 7416 /*odr_gmv_feature_1_4*/, 41148 /*odr_gmv_match_1_4*/, 20893 /*ifd_segmap_cas_1_4*/, 37468 /*smurf_cas_1_0*/, 9385 /*cas_1_1*/, 16460 /*odr_ofs_mp_1_4*/, 50136 /*b2i_ds_output_1_1*/, 37951 /*odr_ofs_dp_1_4*/};
    uint64_t kernelsRcbBitmap[] = {0x77F8C61FFFC71, 0x0}; // { ifd_pipe_1_4[0], odr_dpc_pdaf_1_4[4], rgb_ir_2_0[5], ifd_lsc_1_4[6], rgbs_grid_1_1[10], ccm_3a_2_0[11], fr_grid_1_0[12], odr_awb_std_1_4[13], odr_awb_sat_1_4[14], aestatistics_2_1[15], odr_ae_1_4[16], odr_af_std_1_4[17], ifd_pdaf_1_4[18], pext_1_0[19], pafstatistics_1_2[20], odr_pdaf_1_4[21], ifd_gmv_1_4[22], ifd_segmap_bnlm_1_4[23], smurf_bnlm_1_0[24], ifd_segmap_xnr_1_4[29], smurf_xnr_1_0[30], ifd_segmap_acm_1_4[34], smurf_acm_1_0[35], b2i_ds_1_1[39], lbff_crop_espa_1_4[40], image_upscaler_1_1[41], gmv_statistics_1_1[42], odr_gmv_feature_1_4[43], odr_gmv_match_1_4[44], ifd_segmap_cas_1_4[45], smurf_cas_1_0[46], odr_ofs_mp_1_4[48], b2i_ds_output_1_1[49], odr_ofs_dp_1_4[50] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x4FF1CE3FFE0C2, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2, odr_dpc_pdaf_1_4, rgb_ir_2_0}[1], {ifd_lsc_1_4}[2], {lsc_1_2, gd_2_2, wb_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0}[3], {odr_awb_std_1_4}[4], {odr_awb_sat_1_4}[5], {aestatistics_2_1}[6], {odr_ae_1_4}[7], {odr_af_std_1_4}[8], {ifd_pdaf_1_4}[9], {pext_1_0}[10], {pafstatistics_1_2}[11], {odr_pdaf_1_4}[12], {ifd_gmv_1_4}[13], {ifd_segmap_bnlm_1_4}[14], {smurf_bnlm_1_0}[15], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[16], {ifd_segmap_xnr_1_4}[17], {smurf_xnr_1_0}[18], {xnr_5_4, vcr_3_1, glim_2_0}[19], {ifd_segmap_acm_1_4}[20], {smurf_acm_1_0}[21], {acm_1_2, gammatm_v4, csc_1_1, b2i_ds_1_1}[22], {lbff_crop_espa_1_4}[23], {image_upscaler_1_1}[24], {gmv_statistics_1_1}[25], {odr_gmv_feature_1_4}[26], {odr_gmv_match_1_4}[27], {ifd_segmap_cas_1_4}[28], {smurf_cas_1_0}[29], {cas_1_1, odr_ofs_mp_1_4, b2i_ds_output_1_1}[30], {odr_ofs_dp_1_4}[31] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x7FF9CE3FFFCF3, 0x0}; // {{ifd_pipe_1_4}[0], {bxt_blc, linearization2_0, dpc_2_2}[1], {odr_dpc_pdaf_1_4}[2], {rgb_ir_2_0}[3], {ifd_lsc_1_4}[4], {lsc_1_2, gd_2_2, wb_1_1}[5], {rgbs_grid_1_1}[6], {ccm_3a_2_0}[7], {fr_grid_1_0}[8], {odr_awb_std_1_4}[9], {odr_awb_sat_1_4}[10], {aestatistics_2_1}[11], {odr_ae_1_4}[12], {odr_af_std_1_4}[13], {ifd_pdaf_1_4}[14], {pext_1_0}[15], {pafstatistics_1_2}[16], {odr_pdaf_1_4}[17], {ifd_gmv_1_4}[18], {ifd_segmap_bnlm_1_4}[19], {smurf_bnlm_1_0}[20], {bnlm_3_4, bxt_demosaic, vcsc_2_0_b, gltm_2_0}[21], {ifd_segmap_xnr_1_4}[22], {smurf_xnr_1_0}[23], {xnr_5_4, vcr_3_1, glim_2_0}[24], {ifd_segmap_acm_1_4}[25], {smurf_acm_1_0}[26], {acm_1_2, gammatm_v4, csc_1_1}[27], {b2i_ds_1_1}[28], {lbff_crop_espa_1_4}[29], {image_upscaler_1_1}[30], {gmv_statistics_1_1}[31], {odr_gmv_feature_1_4}[32], {odr_gmv_match_1_4}[33], {ifd_segmap_cas_1_4}[34], {smurf_cas_1_0}[35], {cas_1_1}[36], {odr_ofs_mp_1_4}[37], {b2i_ds_output_1_1}[38], {odr_ofs_dp_1_4}[39] }
    uint8_t systemApisSizes[51] = {220 /*ifd_pipe_1_4*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 20 /*dpc_2_2*/, 220 /*odr_dpc_pdaf_1_4*/, 0 /*rgb_ir_2_0*/, 220 /*ifd_lsc_1_4*/, 40 /*lsc_1_2*/, 0 /*gd_2_2*/, 0 /*wb_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 220 /*odr_awb_std_1_4*/, 220 /*odr_awb_sat_1_4*/, 24 /*aestatistics_2_1*/, 220 /*odr_ae_1_4*/, 220 /*odr_af_std_1_4*/, 220 /*ifd_pdaf_1_4*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 220 /*odr_pdaf_1_4*/, 220 /*ifd_gmv_1_4*/, 220 /*ifd_segmap_bnlm_1_4*/, 0 /*smurf_bnlm_1_0*/, 6 /*bnlm_3_4*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 220 /*ifd_segmap_xnr_1_4*/, 0 /*smurf_xnr_1_0*/, 5 /*xnr_5_4*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 220 /*ifd_segmap_acm_1_4*/, 0 /*smurf_acm_1_0*/, 5 /*acm_1_2*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*b2i_ds_1_1*/, 220 /*lbff_crop_espa_1_4*/, 0 /*image_upscaler_1_1*/, 32 /*gmv_statistics_1_1*/, 220 /*odr_gmv_feature_1_4*/, 220 /*odr_gmv_match_1_4*/, 220 /*ifd_segmap_cas_1_4*/, 0 /*smurf_cas_1_0*/, 5 /*cas_1_1*/, 220 /*odr_ofs_mp_1_4*/, 5 /*b2i_ds_output_1_1*/, 220 /*odr_ofs_dp_1_4*/};
    uint16_t runKernelConfigOrder[51] = {0 /*ifd_pipe_1_4*/, 1 /*bxt_blc*/, 2 /*linearization2_0*/, 3 /*dpc_2_2*/, 5 /*rgb_ir_2_0*/, 4 /*odr_dpc_pdaf_1_4*/, 6 /*ifd_lsc_1_4*/, 7 /*lsc_1_2*/, 8 /*gd_2_2*/, 9 /*wb_1_1*/, 25 /*bnlm_3_4*/, 26 /*bxt_demosaic*/, 27 /*vcsc_2_0_b*/, 28 /*gltm_2_0*/, 31 /*xnr_5_4*/, 32 /*vcr_3_1*/, 33 /*glim_2_0*/, 36 /*acm_1_2*/, 37 /*gammatm_v4*/, 38 /*csc_1_1*/, 39 /*b2i_ds_1_1*/, 40 /*lbff_crop_espa_1_4*/, 41 /*image_upscaler_1_1*/, 47 /*cas_1_1*/, 48 /*odr_ofs_mp_1_4*/, 49 /*b2i_ds_output_1_1*/, 50 /*odr_ofs_dp_1_4*/, 10 /*rgbs_grid_1_1*/, 13 /*odr_awb_std_1_4*/, 14 /*odr_awb_sat_1_4*/, 11 /*ccm_3a_2_0*/, 15 /*aestatistics_2_1*/, 16 /*odr_ae_1_4*/, 12 /*fr_grid_1_0*/, 17 /*odr_af_std_1_4*/, 18 /*ifd_pdaf_1_4*/, 19 /*pext_1_0*/, 20 /*pafstatistics_1_2*/, 21 /*odr_pdaf_1_4*/, 22 /*ifd_gmv_1_4*/, 42 /*gmv_statistics_1_1*/, 43 /*odr_gmv_feature_1_4*/, 44 /*odr_gmv_match_1_4*/, 23 /*ifd_segmap_bnlm_1_4*/, 29 /*ifd_segmap_xnr_1_4*/, 34 /*ifd_segmap_acm_1_4*/, 45 /*ifd_segmap_cas_1_4*/, 24 /*smurf_bnlm_1_0*/, 30 /*smurf_xnr_1_0*/, 35 /*smurf_acm_1_0*/, 46 /*smurf_cas_1_0*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // Metadata update
    nodeKernels.kernelList[25].run_kernel.metadata[0] = 1; // bnlm_3_4

    // set default inner Node
    setInnerNode(None);
}

void WithCvOuterNode::Init(WithCvOuterNodeConfiguration* selectedGraphConfiguration)
{
    OuterNode::Init(2, NodeTypes::Isys, 6, selectedGraphConfiguration->tuningMode, selectedGraphConfiguration->streamId, selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[6] = {36280 /*crop_bpp_adjust_1_0*/, 5420 /*upipe_1_0*/, 26150 /*isys_drainer_1_0*/, 11470 /*is_odr_a*/, 55449 /*is_odr_b*/, 50407 /*is_odr_c*/};
    uint64_t kernelsRcbBitmap[] = {0x3B, 0x0}; // { crop_bpp_adjust_1_0[0], upipe_1_0[1], is_odr_a[3], is_odr_b[4], is_odr_c[5] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {0x3E, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3], {is_odr_b}[4], {is_odr_c}[5] }
    uint64_t kernelsFragmentsDescriptorGroupBitmap[] = {0x3F, 0x0}; // {{crop_bpp_adjust_1_0}[0], {upipe_1_0}[1], {isys_drainer_1_0}[2], {is_odr_a}[3], {is_odr_b}[4], {is_odr_c}[5] }
    uint8_t systemApisSizes[6] = {0 /*crop_bpp_adjust_1_0*/, 34 /*upipe_1_0*/, 20 /*isys_drainer_1_0*/, 0 /*is_odr_a*/, 0 /*is_odr_b*/, 0 /*is_odr_c*/};
    uint16_t runKernelConfigOrder[6] = {0 /*crop_bpp_adjust_1_0*/, 1 /*upipe_1_0*/, 2 /*isys_drainer_1_0*/, 3 /*is_odr_a*/, 4 /*is_odr_b*/, 5 /*is_odr_c*/};

    InitRunKernels(kernelsUuids, kernelsRcbBitmap, selectedGraphConfiguration->resolutionInfos, kernelsResolutionHistoryGroupBitmap, kernelsFragmentsDescriptorGroupBitmap, selectedGraphConfiguration->resolutionHistories, selectedGraphConfiguration->bppInfos, systemApisSizes, selectedGraphConfiguration->systemApiConfiguration, selectedGraphConfiguration->fragmentConfigurations, runKernelConfigOrder);

    // set default inner Node
    setInnerNode(None);
}

/*
 * Inner Nodes Setters
 */
void IsysOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffBayerNoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 34; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000009F
        bitmaps.teb[0] = 0x3000009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E0380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020001E9F
        bitmaps.teb[0] = 0x20001E9F;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000009F
        bitmaps.teb[0] = 0x2000009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E4380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010001E9F
        bitmaps.teb[0] = 0x10001E9F;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000009F
        bitmaps.teb[0] = 0x1000009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3F8380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FC7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064009D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030001E9F
        bitmaps.teb[0] = 0x30001E9F;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerNoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 34; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FC7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerWithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 38; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003032009F
        bitmaps.teb[0] = 0x3032009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E0380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020321E9F
        bitmaps.teb[0] = 0x20321E9F;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002032009F
        bitmaps.teb[0] = 0x2032009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E4380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010321E9F
        bitmaps.teb[0] = 0x10321E9F;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001032009F
        bitmaps.teb[0] = 0x1032009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3F8380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 34 ifd_gmv_1_4- inner node disablement
        // 35 gmv_statistics_1_1- inner node disablement
        // 36 odr_gmv_feature_1_4- inner node disablement
        // 37 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C1FC7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_gmv_1_4- inner node disablement
        // 35 gmv_statistics_1_1- inner node disablement
        // 36 odr_gmv_feature_1_4- inner node disablement
        // 37 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030321E9F
        bitmaps.teb[0] = 0x30321E9F;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerWithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 38; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3C1FC7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void SwGdcOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void SwGdcOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffBayerNoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC01E9F
        bitmaps.teb[0] = 0x2FC01E9F;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4007C380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC01E9F
        bitmaps.teb[0] = 0x1FC01E9F;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18007C380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 31 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 32 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 33 tnr7_ims_1_2- inner node disablement
        // 34 tnr7_bc_1_2- inner node disablement
        // 35 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 36 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 37 tnr7_blend_1_1- inner node disablement
        // 38 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 39 tnr_scaler_fp_1_1- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 cas_1_1- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        // 45 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFF83C7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 32 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 33 tnr7_ims_1_2- inner node disablement
        // 34 tnr7_bc_1_2- inner node disablement
        // 35 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 36 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 37 tnr7_blend_1_1- inner node disablement
        // 38 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 39 tnr_scaler_fp_1_1- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 cas_1_1- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        // 45 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC01E9F
        bitmaps.teb[0] = 0x3FC01E9F;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerNoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFF83C7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F0000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerWithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF2009F
        bitmaps.teb[0] = 0x3FF2009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF21E9F
        bitmaps.teb[0] = 0x2FF21E9F;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF2009F
        bitmaps.teb[0] = 0x2FF2009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40007C380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF21E9F
        bitmaps.teb[0] = 0x1FF21E9F;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF2009F
        bitmaps.teb[0] = 0x1FF2009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180007C380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 31 ifd_gmv_1_4- inner node disablement
        // 32 gmv_statistics_1_1- inner node disablement
        // 33 odr_gmv_feature_1_4- inner node disablement
        // 34 odr_gmv_match_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 tnr7_bc_1_2- inner node disablement
        // 39 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 40 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFF83C7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_gmv_1_4- inner node disablement
        // 32 gmv_statistics_1_1- inner node disablement
        // 33 odr_gmv_feature_1_4- inner node disablement
        // 34 odr_gmv_match_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 tnr7_bc_1_2- inner node disablement
        // 39 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 40 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF21E9F
        bitmaps.teb[0] = 0x3FF21E9F;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerWithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFF83C7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F00000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void IsysWithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysWithCvOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void SwSegnetOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void SwSegnetOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffBayerWithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 62; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF21E9F
        bitmaps.teb[0] = 0xEFF21E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF21E9F
        bitmaps.teb[0] = 0xDFF21E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x300000000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 17 ifd_gmv_1_4- inner node disablement
        // 18 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 19 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 20 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 tnr7_spatial_1_1- inner node disablement
        // 40 tnr_scaler_lb_1_1- inner node disablement
        // 41 tnr7_ims_1_2- inner node disablement
        // 42 gmv_statistics_1_1- inner node disablement
        // 43 odr_gmv_feature_1_4- inner node disablement
        // 44 odr_gmv_match_1_4- inner node disablement
        // 45 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 46 smurf_tnr_bc_1_0- inner node disablement
        // 47 tnr7_bc_1_2- inner node disablement
        // 48 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 49 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 50 smurf_tnr_blend_1_0- inner node disablement
        // 51 tnr7_blend_1_1- inner node disablement
        // 52 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 53 tnr_scaler_fp_1_1- inner node disablement
        // 54 image_upscaler_1_1- inner node disablement
        // 55 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 56 ifd_segmap_cas_1_4- inner node disablement
        // 57 smurf_cas_1_0- inner node disablement
        // 58 cas_1_1- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFE0180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_gmv_1_4- inner node disablement
        // 18 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 19 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 20 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 tnr7_spatial_1_1- inner node disablement
        // 40 tnr_scaler_lb_1_1- inner node disablement
        // 41 tnr7_ims_1_2- inner node disablement
        // 42 gmv_statistics_1_1- inner node disablement
        // 43 odr_gmv_feature_1_4- inner node disablement
        // 44 odr_gmv_match_1_4- inner node disablement
        // 45 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 46 smurf_tnr_bc_1_0- inner node disablement
        // 47 tnr7_bc_1_2- inner node disablement
        // 48 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 49 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 50 smurf_tnr_blend_1_0- inner node disablement
        // 51 tnr7_blend_1_1- inner node disablement
        // 52 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 53 tnr_scaler_fp_1_1- inner node disablement
        // 54 image_upscaler_1_1- inner node disablement
        // 55 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 56 ifd_segmap_cas_1_4- inner node disablement
        // 57 smurf_cas_1_0- inner node disablement
        // 58 cas_1_1- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF21E9F
        bitmaps.teb[0] = 0xFFF21E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerWithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 62; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFFFFFE0180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F40000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void SwScalerOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void SwScalerOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void SwNntmOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void SwNntmOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffBayerNoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 58; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC0009F
        bitmaps.teb[0] = 0xFFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC01E9F
        bitmaps.teb[0] = 0xEFC01E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 55 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC0009F
        bitmaps.teb[0] = 0xEFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 55 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC01E9F
        bitmaps.teb[0] = 0xDFC01E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 56 b2i_ds_output_1_1- inner node disablement
        // 57 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x300000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC0009F
        bitmaps.teb[0] = 0xDFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 56 b2i_ds_output_1_1- inner node disablement
        // 57 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 17 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 18 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 19 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 tnr7_spatial_1_1- inner node disablement
        // 39 tnr_scaler_lb_1_1- inner node disablement
        // 40 tnr7_ims_1_2- inner node disablement
        // 41 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 42 smurf_tnr_bc_1_0- inner node disablement
        // 43 tnr7_bc_1_2- inner node disablement
        // 44 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 45 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 46 smurf_tnr_blend_1_0- inner node disablement
        // 47 tnr7_blend_1_1- inner node disablement
        // 48 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 49 tnr_scaler_fp_1_1- inner node disablement
        // 50 image_upscaler_1_1- inner node disablement
        // 51 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 52 ifd_segmap_cas_1_4- inner node disablement
        // 53 smurf_cas_1_0- inner node disablement
        // 54 cas_1_1- inner node disablement
        // 55 odr_ofs_mp_1_4- inner node disablement
        // 56 b2i_ds_output_1_1- inner node disablement
        // 57 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFE0180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 18 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 19 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 tnr7_spatial_1_1- inner node disablement
        // 39 tnr_scaler_lb_1_1- inner node disablement
        // 40 tnr7_ims_1_2- inner node disablement
        // 41 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 42 smurf_tnr_bc_1_0- inner node disablement
        // 43 tnr7_bc_1_2- inner node disablement
        // 44 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 45 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 46 smurf_tnr_blend_1_0- inner node disablement
        // 47 tnr7_blend_1_1- inner node disablement
        // 48 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 49 tnr_scaler_fp_1_1- inner node disablement
        // 50 image_upscaler_1_1- inner node disablement
        // 51 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 52 ifd_segmap_cas_1_4- inner node disablement
        // 53 smurf_cas_1_0- inner node disablement
        // 54 cas_1_1- inner node disablement
        // 55 odr_ofs_mp_1_4- inner node disablement
        // 56 b2i_ds_output_1_1- inner node disablement
        // 57 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC01E9F
        bitmaps.teb[0] = 0xFFC01E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerNoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 58; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFFFFE0180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F4000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void IsysPdaf2WithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysPdaf2WithCvOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffBayerPdaf2NoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 62; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC0009F
        bitmaps.teb[0] = 0xFFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FD9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FD9D;
        // DEB - 0x000000000000C1FFFFF0FFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC03F9F
        bitmaps.teb[0] = 0xEFC03F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC0009F
        bitmaps.teb[0] = 0xEFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FD9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FD9D;
        // DEB - 0x00000000000021FFFFF0FFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC03F9F
        bitmaps.teb[0] = 0xDFC03F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC0009F
        bitmaps.teb[0] = 0xDFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 46 smurf_tnr_bc_1_0- inner node disablement
        // 47 tnr7_bc_1_2- inner node disablement
        // 48 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 49 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 50 smurf_tnr_blend_1_0- inner node disablement
        // 51 tnr7_blend_1_1- inner node disablement
        // 52 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 53 tnr_scaler_fp_1_1- inner node disablement
        // 54 image_upscaler_1_1- inner node disablement
        // 55 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 56 ifd_segmap_cas_1_4- inner node disablement
        // 57 smurf_cas_1_0- inner node disablement
        // 58 cas_1_1- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFE00180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 46 smurf_tnr_bc_1_0- inner node disablement
        // 47 tnr7_bc_1_2- inner node disablement
        // 48 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 49 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 50 smurf_tnr_blend_1_0- inner node disablement
        // 51 tnr7_blend_1_1- inner node disablement
        // 52 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 53 tnr_scaler_fp_1_1- inner node disablement
        // 54 image_upscaler_1_1- inner node disablement
        // 55 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 56 ifd_segmap_cas_1_4- inner node disablement
        // 57 smurf_cas_1_0- inner node disablement
        // 58 cas_1_1- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FD9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FD9D;
        // DEB - 0x000000000000E1FFFFF0FFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC03F9F
        bitmaps.teb[0] = 0xFFC03F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2NoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 62; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFFFFE00180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F40000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2WithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 66; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF23F9F
        bitmaps.teb[0] = 0xEFF23F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF23F9F
        bitmaps.teb[0] = 0xDFF23F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 gmv_statistics_1_1- inner node disablement
        // 47 odr_gmv_feature_1_4- inner node disablement
        // 48 odr_gmv_match_1_4- inner node disablement
        // 49 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 50 smurf_tnr_bc_1_0- inner node disablement
        // 51 tnr7_bc_1_2- inner node disablement
        // 52 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 53 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 54 smurf_tnr_blend_1_0- inner node disablement
        // 55 tnr7_blend_1_1- inner node disablement
        // 56 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 57 tnr_scaler_fp_1_1- inner node disablement
        // 58 image_upscaler_1_1- inner node disablement
        // 59 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 60 ifd_segmap_cas_1_4- inner node disablement
        // 61 smurf_cas_1_0- inner node disablement
        // 62 cas_1_1- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFE00180;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 gmv_statistics_1_1- inner node disablement
        // 47 odr_gmv_feature_1_4- inner node disablement
        // 48 odr_gmv_match_1_4- inner node disablement
        // 49 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 50 smurf_tnr_bc_1_0- inner node disablement
        // 51 tnr7_bc_1_2- inner node disablement
        // 52 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 53 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 54 smurf_tnr_blend_1_0- inner node disablement
        // 55 tnr7_blend_1_1- inner node disablement
        // 56 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 57 tnr_scaler_fp_1_1- inner node disablement
        // 58 image_upscaler_1_1- inner node disablement
        // 59 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 60 ifd_segmap_cas_1_4- inner node disablement
        // 61 smurf_cas_1_0- inner node disablement
        // 62 cas_1_1- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF23F9F
        bitmaps.teb[0] = 0xFFF23F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2WithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 66; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFE00180;
            disabledRunKernelsBitmap[1] |= 0x3;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF400000000000000;
            disabledRunKernelsBitmap[1] |= 0x3;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3NoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 61; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC0009F
        bitmaps.teb[0] = 0xFFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FD9D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x47FD9D;
        // DEB - 0x000000000000C1FFFFF0FFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC03E9F
        bitmaps.teb[0] = 0xEFC03E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC0009F
        bitmaps.teb[0] = 0xEFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FD9D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x27FD9D;
        // DEB - 0x00000000000021FFFFF0FFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC03E9F
        bitmaps.teb[0] = 0xDFC03E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC0009F
        bitmaps.teb[0] = 0xDFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 45 smurf_tnr_bc_1_0- inner node disablement
        // 46 tnr7_bc_1_2- inner node disablement
        // 47 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 48 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 49 smurf_tnr_blend_1_0- inner node disablement
        // 50 tnr7_blend_1_1- inner node disablement
        // 51 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 52 tnr_scaler_fp_1_1- inner node disablement
        // 53 image_upscaler_1_1- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 55 ifd_segmap_cas_1_4- inner node disablement
        // 56 smurf_cas_1_0- inner node disablement
        // 57 cas_1_1- inner node disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFF00C00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 45 smurf_tnr_bc_1_0- inner node disablement
        // 46 tnr7_bc_1_2- inner node disablement
        // 47 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 48 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 49 smurf_tnr_blend_1_0- inner node disablement
        // 50 tnr7_blend_1_1- inner node disablement
        // 51 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 52 tnr_scaler_fp_1_1- inner node disablement
        // 53 image_upscaler_1_1- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 55 ifd_segmap_cas_1_4- inner node disablement
        // 56 smurf_cas_1_0- inner node disablement
        // 57 cas_1_1- inner node disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FD9D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x67FD9D;
        // DEB - 0x000000000000E1FFFFF0FFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC03E9F
        bitmaps.teb[0] = 0xFFC03E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3NoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 61; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFFFFFFF00C00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1FA0000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 63; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC8009F
        bitmaps.teb[0] = 0xFFC8009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC81E9F
        bitmaps.teb[0] = 0xFFC81E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC8009F
        bitmaps.teb[0] = 0xFFC8009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FD9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FD9D;
        // DEB - 0x000000000000C1FFFFF0FFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC83F9F
        bitmaps.teb[0] = 0xEFC83F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC8009F
        bitmaps.teb[0] = 0xEFC8009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC81E9F
        bitmaps.teb[0] = 0xEFC81E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000003C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC8009F
        bitmaps.teb[0] = 0xEFC8009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FD9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FD9D;
        // DEB - 0x00000000000021FFFFF0FFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC83F9F
        bitmaps.teb[0] = 0xDFC83F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC8009F
        bitmaps.teb[0] = 0xDFC8009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC81E9F
        bitmaps.teb[0] = 0xDFC81E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000003C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC8009F
        bitmaps.teb[0] = 0xDFC8009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 47 smurf_tnr_bc_1_0- inner node disablement
        // 48 tnr7_bc_1_2- inner node disablement
        // 49 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 50 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 51 smurf_tnr_blend_1_0- inner node disablement
        // 52 tnr7_blend_1_1- inner node disablement
        // 53 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 54 tnr_scaler_fp_1_1- inner node disablement
        // 55 image_upscaler_1_1- inner node disablement
        // 56 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 57 ifd_segmap_cas_1_4- inner node disablement
        // 58 smurf_cas_1_0- inner node disablement
        // 59 cas_1_1- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFC00300;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 47 smurf_tnr_bc_1_0- inner node disablement
        // 48 tnr7_bc_1_2- inner node disablement
        // 49 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 50 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 51 smurf_tnr_blend_1_0- inner node disablement
        // 52 tnr7_blend_1_1- inner node disablement
        // 53 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 54 tnr_scaler_fp_1_1- inner node disablement
        // 55 image_upscaler_1_1- inner node disablement
        // 56 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 57 ifd_segmap_cas_1_4- inner node disablement
        // 58 smurf_cas_1_0- inner node disablement
        // 59 cas_1_1- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 47 smurf_tnr_bc_1_0- inner node disablement
        // 48 tnr7_bc_1_2- inner node disablement
        // 49 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 50 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 51 smurf_tnr_blend_1_0- inner node disablement
        // 52 tnr7_blend_1_1- inner node disablement
        // 53 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 54 tnr_scaler_fp_1_1- inner node disablement
        // 55 image_upscaler_1_1- inner node disablement
        // 56 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 57 ifd_segmap_cas_1_4- inner node disablement
        // 58 smurf_cas_1_0- inner node disablement
        // 59 cas_1_1- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFC0300;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 47 smurf_tnr_bc_1_0- inner node disablement
        // 48 tnr7_bc_1_2- inner node disablement
        // 49 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 50 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 51 smurf_tnr_blend_1_0- inner node disablement
        // 52 tnr7_blend_1_1- inner node disablement
        // 53 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 54 tnr_scaler_fp_1_1- inner node disablement
        // 55 image_upscaler_1_1- inner node disablement
        // 56 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 57 ifd_segmap_cas_1_4- inner node disablement
        // 58 smurf_cas_1_0- inner node disablement
        // 59 cas_1_1- inner node disablement
        // 60 odr_ofs_mp_1_4- inner node disablement
        // 61 b2i_ds_output_1_1- inner node disablement
        // 62 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FD9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FD9D;
        // DEB - 0x000000000000E1FFFFF0FFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC83F9F
        bitmaps.teb[0] = 0xFFC83F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 63; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFFFFFFC00300;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7E80000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void IsysPdaf2OuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysPdaf2OuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffBayerPdaf2NoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 38; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000009F
        bitmaps.teb[0] = 0x3000009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FE0380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044019D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x44019D;
        // DEB - 0x000000000000C1200000F9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020003F9F
        bitmaps.teb[0] = 0x20003F9F;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000009F
        bitmaps.teb[0] = 0x2000009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FE4380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024019D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x24019D;
        // DEB - 0x00000000000021200000F9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010003F9F
        bitmaps.teb[0] = 0x10003F9F;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000009F
        bitmaps.teb[0] = 0x1000009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FF8380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FC7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064019D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x64019D;
        // DEB - 0x000000000000E1200000F9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030003F9F
        bitmaps.teb[0] = 0x30003F9F;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2NoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 38; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FC7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2WithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 42; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003032009F
        bitmaps.teb[0] = 0x3032009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FE0380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004401BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x4401BD;
        // DEB - 0x000000000000C120000FF9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020323F9F
        bitmaps.teb[0] = 0x20323F9F;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002032009F
        bitmaps.teb[0] = 0x2032009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FE4380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002401BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x2401BD;
        // DEB - 0x0000000000002120000FF9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010323F9F
        bitmaps.teb[0] = 0x10323F9F;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001032009F
        bitmaps.teb[0] = 0x1032009F;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FF8380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 38 ifd_gmv_1_4- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C01FC7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 image_upscaler_1_1- inner node disablement
        // 25 cas_1_1- inner node disablement
        // 26 odr_ofs_mp_1_4- inner node disablement
        // 27 b2i_ds_output_1_1- inner node disablement
        // 28 odr_ofs_dp_1_4- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_pdaf_1_4- inner node disablement
        // 35 pext_1_0- inner node disablement
        // 36 pafstatistics_1_2- inner node disablement
        // 37 odr_pdaf_1_4- inner node disablement
        // 38 ifd_gmv_1_4- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006401BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x6401BD;
        // DEB - 0x000000000000E120000FF9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030323F9F
        bitmaps.teb[0] = 0x30323F9F;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2WithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 42; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3C01FC7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2NoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FD9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FD9D;
        // DEB - 0x000000000000C13E79F0F9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC03F9F
        bitmaps.teb[0] = 0x2FC03F9F;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4007FC380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FD9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FD9D;
        // DEB - 0x000000000000213E79F0F9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC03F9F
        bitmaps.teb[0] = 0x1FC03F9F;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18007FC380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 35 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 tnr7_bc_1_2- inner node disablement
        // 39 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 40 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFF803C7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 tnr7_bc_1_2- inner node disablement
        // 39 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 40 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FD9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FD9D;
        // DEB - 0x000000000000E13E79F0F9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC03F9F
        bitmaps.teb[0] = 0x3FC03F9F;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2NoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFF803C7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F00000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2WithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 54; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF2009F
        bitmaps.teb[0] = 0x3FF2009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C13E79FFF9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF23F9F
        bitmaps.teb[0] = 0x2FF23F9F;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF2009F
        bitmaps.teb[0] = 0x2FF2009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40007FC380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x000000000000213E79FFF9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF23F9F
        bitmaps.teb[0] = 0x1FF23F9F;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF2009F
        bitmaps.teb[0] = 0x1FF2009F;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180007FC380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 35 ifd_gmv_1_4- inner node disablement
        // 36 gmv_statistics_1_1- inner node disablement
        // 37 odr_gmv_feature_1_4- inner node disablement
        // 38 odr_gmv_match_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 41 tnr7_ims_1_2- inner node disablement
        // 42 tnr7_bc_1_2- inner node disablement
        // 43 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 44 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 45 tnr7_blend_1_1- inner node disablement
        // 46 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 47 tnr_scaler_fp_1_1- inner node disablement
        // 48 image_upscaler_1_1- inner node disablement
        // 49 cas_1_1- inner node disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFF803C7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_pdaf_1_4- inner node disablement
        // 32 pext_1_0- inner node disablement
        // 33 pafstatistics_1_2- inner node disablement
        // 34 odr_pdaf_1_4- inner node disablement
        // 35 ifd_gmv_1_4- inner node disablement
        // 36 gmv_statistics_1_1- inner node disablement
        // 37 odr_gmv_feature_1_4- inner node disablement
        // 38 odr_gmv_match_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 41 tnr7_ims_1_2- inner node disablement
        // 42 tnr7_bc_1_2- inner node disablement
        // 43 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 44 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 45 tnr7_blend_1_1- inner node disablement
        // 46 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 47 tnr_scaler_fp_1_1- inner node disablement
        // 48 image_upscaler_1_1- inner node disablement
        // 49 cas_1_1- inner node disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E13E79FFF9CE8DDBFFF1
        bitmaps.deb[0] = 0x8DDBFFF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF23F9F
        bitmaps.teb[0] = 0x3FF23F9F;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2WithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 54; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFF803C7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2WithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 66; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF23F9F
        bitmaps.teb[0] = 0xEFF23F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF23F9F
        bitmaps.teb[0] = 0xDFF23F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 gmv_statistics_1_1- inner node disablement
        // 47 odr_gmv_feature_1_4- inner node disablement
        // 48 odr_gmv_match_1_4- inner node disablement
        // 49 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 50 smurf_tnr_bc_1_0- inner node disablement
        // 51 tnr7_bc_1_2- inner node disablement
        // 52 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 53 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 54 smurf_tnr_blend_1_0- inner node disablement
        // 55 tnr7_blend_1_1- inner node disablement
        // 56 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 57 tnr_scaler_fp_1_1- inner node disablement
        // 58 image_upscaler_1_1- inner node disablement
        // 59 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 60 ifd_segmap_cas_1_4- inner node disablement
        // 61 smurf_cas_1_0- inner node disablement
        // 62 cas_1_1- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFE00180;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 gmv_statistics_1_1- inner node disablement
        // 47 odr_gmv_feature_1_4- inner node disablement
        // 48 odr_gmv_match_1_4- inner node disablement
        // 49 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 50 smurf_tnr_bc_1_0- inner node disablement
        // 51 tnr7_bc_1_2- inner node disablement
        // 52 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 53 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 54 smurf_tnr_blend_1_0- inner node disablement
        // 55 tnr7_blend_1_1- inner node disablement
        // 56 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 57 tnr_scaler_fp_1_1- inner node disablement
        // 58 image_upscaler_1_1- inner node disablement
        // 59 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 60 ifd_segmap_cas_1_4- inner node disablement
        // 61 smurf_cas_1_0- inner node disablement
        // 62 cas_1_1- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF23F9F
        bitmaps.teb[0] = 0xFFF23F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F77FE7
        bitmaps.reb[0] = 0xF6F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2WithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 66; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFE00180;
            disabledRunKernelsBitmap[1] |= 0x3;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF400000000000000;
            disabledRunKernelsBitmap[1] |= 0x3;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3NoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 37; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000009F
        bitmaps.teb[0] = 0x3000009F;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F01C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044019D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x44019D;
        // DEB - 0x000000000000C1200000F9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020003E9F
        bitmaps.teb[0] = 0x20003E9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000009F
        bitmaps.teb[0] = 0x2000009F;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F21C000D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024019D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x24019D;
        // DEB - 0x00000000000021200000F9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010003E9F
        bitmaps.teb[0] = 0x10003E9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000009F
        bitmaps.teb[0] = 0x1000009F;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FC1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 image_upscaler_1_1- inner node disablement
        // 28 cas_1_1- inner node disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFE3FFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 image_upscaler_1_1- inner node disablement
        // 28 cas_1_1- inner node disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064019D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x64019D;
        // DEB - 0x000000000000E1200000F9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030003E9F
        bitmaps.teb[0] = 0x30003E9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3NoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 37; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFE3FFC00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF8000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3WithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 41; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003032009F
        bitmaps.teb[0] = 0x3032009F;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F01C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004401BD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x4401BD;
        // DEB - 0x000000000000C120000FF9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020323E9F
        bitmaps.teb[0] = 0x20323E9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002032009F
        bitmaps.teb[0] = 0x2032009F;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F21C000D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002401BD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x2401BD;
        // DEB - 0x0000000000002120000FF9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010323E9F
        bitmaps.teb[0] = 0x10323E9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001032009F
        bitmaps.teb[0] = 0x1032009F;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FC1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 image_upscaler_1_1- inner node disablement
        // 28 cas_1_1- inner node disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        // 37 ifd_gmv_1_4- inner node disablement
        // 38 gmv_statistics_1_1- inner node disablement
        // 39 odr_gmv_feature_1_4- inner node disablement
        // 40 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1E0FE3FFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 image_upscaler_1_1- inner node disablement
        // 28 cas_1_1- inner node disablement
        // 29 odr_ofs_mp_1_4- inner node disablement
        // 30 b2i_ds_output_1_1- inner node disablement
        // 31 odr_ofs_dp_1_4- inner node disablement
        // 32 odr_awb_std_1_4- inner node disablement
        // 33 odr_awb_sat_1_4- inner node disablement
        // 34 aestatistics_2_1- inner node disablement
        // 35 odr_ae_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        // 37 ifd_gmv_1_4- inner node disablement
        // 38 gmv_statistics_1_1- inner node disablement
        // 39 odr_gmv_feature_1_4- inner node disablement
        // 40 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006401BD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x6401BD;
        // DEB - 0x000000000000E120000FF9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030323E9F
        bitmaps.teb[0] = 0x30323E9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3WithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 41; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1E0FE3FFC00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF8000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3NoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FD9D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x47FD9D;
        // DEB - 0x000000000000C13E79F0F9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC03E9F
        bitmaps.teb[0] = 0x2FC03E9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2003E1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FD9D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x27FD9D;
        // DEB - 0x000000000000213E79F0F9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC03E9F
        bitmaps.teb[0] = 0x1FC03E9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC003E1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 tnr7_spatial_1_1- inner node disablement
        // 28 tnr_scaler_lb_1_1- inner node disablement
        // 34 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 36 tnr7_ims_1_2- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 40 tnr7_blend_1_1- inner node disablement
        // 41 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 42 tnr_scaler_fp_1_1- inner node disablement
        // 43 image_upscaler_1_1- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFC1E3FFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 tnr7_spatial_1_1- inner node disablement
        // 28 tnr_scaler_lb_1_1- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 36 tnr7_ims_1_2- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 40 tnr7_blend_1_1- inner node disablement
        // 41 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 42 tnr_scaler_fp_1_1- inner node disablement
        // 43 image_upscaler_1_1- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FD9D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x67FD9D;
        // DEB - 0x000000000000E13E79F0F9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC03E9F
        bitmaps.teb[0] = 0x3FC03E9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3NoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFC1E3FFC00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF80000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3WithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 53; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF2009F
        bitmaps.teb[0] = 0x3FF2009F;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C13E79FFF9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF23E9F
        bitmaps.teb[0] = 0x2FF23E9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF2009F
        bitmaps.teb[0] = 0x2FF2009F;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20003E1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x000000000000213E79FFF9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF23E9F
        bitmaps.teb[0] = 0x1FF23E9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF2009F
        bitmaps.teb[0] = 0x1FF2009F;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0003E1C000D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 tnr7_spatial_1_1- inner node disablement
        // 28 tnr_scaler_lb_1_1- inner node disablement
        // 34 ifd_gmv_1_4- inner node disablement
        // 35 gmv_statistics_1_1- inner node disablement
        // 36 odr_gmv_feature_1_4- inner node disablement
        // 37 odr_gmv_match_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 40 tnr7_ims_1_2- inner node disablement
        // 41 tnr7_bc_1_2- inner node disablement
        // 42 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 43 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 44 tnr7_blend_1_1- inner node disablement
        // 45 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 46 tnr_scaler_fp_1_1- inner node disablement
        // 47 image_upscaler_1_1- inner node disablement
        // 48 cas_1_1- inner node disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        // 52 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFC1E3FFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 bnlm_3_4- inner node disablement
        // 13 bxt_demosaic- inner node disablement
        // 14 vcsc_2_0_b- inner node disablement
        // 15 gltm_2_0- inner node disablement
        // 16 xnr_5_4- inner node disablement
        // 17 vcr_3_1- inner node disablement
        // 18 glim_2_0- inner node disablement
        // 19 acm_1_2- inner node disablement
        // 20 gammatm_v4- inner node disablement
        // 21 csc_1_1- inner node disablement
        // 22 rgbs_grid_1_1- inner node disablement
        // 23 ccm_3a_2_0- inner node disablement
        // 24 fr_grid_1_0- inner node disablement
        // 25 b2i_ds_1_1- inner node disablement
        // 26 lbff_crop_espa_1_4- inner node disablement
        // 27 tnr7_spatial_1_1- inner node disablement
        // 28 tnr_scaler_lb_1_1- inner node disablement
        // 29 odr_awb_std_1_4- inner node disablement
        // 30 odr_awb_sat_1_4- inner node disablement
        // 31 aestatistics_2_1- inner node disablement
        // 32 odr_ae_1_4- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_gmv_1_4- inner node disablement
        // 35 gmv_statistics_1_1- inner node disablement
        // 36 odr_gmv_feature_1_4- inner node disablement
        // 37 odr_gmv_match_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 40 tnr7_ims_1_2- inner node disablement
        // 41 tnr7_bc_1_2- inner node disablement
        // 42 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 43 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 44 tnr7_blend_1_1- inner node disablement
        // 45 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 46 tnr_scaler_fp_1_1- inner node disablement
        // 47 image_upscaler_1_1- inner node disablement
        // 48 cas_1_1- inner node disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        // 52 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E13E79FFF9CE8DDBFDF1
        bitmaps.deb[0] = 0x8DDBFDF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF23E9F
        bitmaps.teb[0] = 0x3FF23E9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3WithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 53; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFC1E3FFC00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF800000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3WithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 65; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF23E9F
        bitmaps.teb[0] = 0xEFF23E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF23E9F
        bitmaps.teb[0] = 0xDFF23E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000000000;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F787E7
        bitmaps.reb[0] = 0xF6F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000000FF0D0;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 gmv_statistics_1_1- inner node disablement
        // 46 odr_gmv_feature_1_4- inner node disablement
        // 47 odr_gmv_match_1_4- inner node disablement
        // 48 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 49 smurf_tnr_bc_1_0- inner node disablement
        // 50 tnr7_bc_1_2- inner node disablement
        // 51 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 52 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 53 smurf_tnr_blend_1_0- inner node disablement
        // 54 tnr7_blend_1_1- inner node disablement
        // 55 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 56 tnr_scaler_fp_1_1- inner node disablement
        // 57 image_upscaler_1_1- inner node disablement
        // 58 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 59 ifd_segmap_cas_1_4- inner node disablement
        // 60 smurf_cas_1_0- inner node disablement
        // 61 cas_1_1- inner node disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFF00C00;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 gmv_statistics_1_1- inner node disablement
        // 46 odr_gmv_feature_1_4- inner node disablement
        // 47 odr_gmv_match_1_4- inner node disablement
        // 48 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 49 smurf_tnr_bc_1_0- inner node disablement
        // 50 tnr7_bc_1_2- inner node disablement
        // 51 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 52 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 53 smurf_tnr_blend_1_0- inner node disablement
        // 54 tnr7_blend_1_1- inner node disablement
        // 55 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 56 tnr_scaler_fp_1_1- inner node disablement
        // 57 image_upscaler_1_1- inner node disablement
        // 58 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 59 ifd_segmap_cas_1_4- inner node disablement
        // 60 smurf_cas_1_0- inner node disablement
        // 61 cas_1_1- inner node disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF23E9F
        bitmaps.teb[0] = 0xFFF23E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3WithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 65; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFF00C00;
            disabledRunKernelsBitmap[1] |= 0x1;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xFA00000000000000;
            disabledRunKernelsBitmap[1] |= 0x1;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void IsysDolOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysDolOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffDol2InputsNoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 37; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000300000BF
        bitmaps.teb[0] = 0x300000BF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1010003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020041EBF
        bitmaps.teb[0] = 0x20041EBF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000200000BF
        bitmaps.teb[0] = 0x200000BF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010041EBF
        bitmaps.teb[0] = 0x10041EBF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000100000BF
        bitmaps.teb[0] = 0x100000BF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1C10003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 image_upscaler_1_1- inner node disablement
        // 32 cas_1_1- inner node disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFEFFF0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 image_upscaler_1_1- inner node disablement
        // 32 cas_1_1- inner node disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030041EBF
        bitmaps.teb[0] = 0x30041EBF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsNoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 37; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFEFFF0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF80000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol2InputsWithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 41; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000303200BF
        bitmaps.teb[0] = 0x303200BF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1010003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020361EBF
        bitmaps.teb[0] = 0x20361EBF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000203200BF
        bitmaps.teb[0] = 0x203200BF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010361EBF
        bitmaps.teb[0] = 0x10361EBF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000103200BF
        bitmaps.teb[0] = 0x103200BF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1C10003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 image_upscaler_1_1- inner node disablement
        // 32 cas_1_1- inner node disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        // 37 ifd_gmv_1_4- inner node disablement
        // 38 gmv_statistics_1_1- inner node disablement
        // 39 odr_gmv_feature_1_4- inner node disablement
        // 40 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1EFEFFF0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 image_upscaler_1_1- inner node disablement
        // 32 cas_1_1- inner node disablement
        // 33 odr_ofs_mp_1_4- inner node disablement
        // 34 b2i_ds_output_1_1- inner node disablement
        // 35 odr_ofs_dp_1_4- inner node disablement
        // 36 odr_af_std_1_4- inner node disablement
        // 37 ifd_gmv_1_4- inner node disablement
        // 38 gmv_statistics_1_1- inner node disablement
        // 39 odr_gmv_feature_1_4- inner node disablement
        // 40 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030361EBF
        bitmaps.teb[0] = 0x30361EBF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsWithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 41; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1EFEFFF0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF80000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol2InputsNoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC000BF
        bitmaps.teb[0] = 0x3FC000BF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC41EBF
        bitmaps.teb[0] = 0x2FC41EBF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC000BF
        bitmaps.teb[0] = 0x2FC000BF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC41EBF
        bitmaps.teb[0] = 0x1FC41EBF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC000BF
        bitmaps.teb[0] = 0x1FC000BF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 tnr7_spatial_1_1- inner node disablement
        // 32 tnr_scaler_lb_1_1- inner node disablement
        // 34 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 36 tnr7_ims_1_2- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 40 tnr7_blend_1_1- inner node disablement
        // 41 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 42 tnr_scaler_fp_1_1- inner node disablement
        // 43 image_upscaler_1_1- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFDEFFF0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 tnr7_spatial_1_1- inner node disablement
        // 32 tnr_scaler_lb_1_1- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 36 tnr7_ims_1_2- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 40 tnr7_blend_1_1- inner node disablement
        // 41 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 42 tnr_scaler_fp_1_1- inner node disablement
        // 43 image_upscaler_1_1- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC41EBF
        bitmaps.teb[0] = 0x3FC41EBF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsNoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFDEFFF0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF80000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol2InputsWithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 53; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF200BF
        bitmaps.teb[0] = 0x3FF200BF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF61EBF
        bitmaps.teb[0] = 0x2FF61EBF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF200BF
        bitmaps.teb[0] = 0x2FF200BF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF61EBF
        bitmaps.teb[0] = 0x1FF61EBF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D8001FB
        bitmaps.deb[0] = 0x8D8001FB;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF200BF
        bitmaps.teb[0] = 0x1FF200BF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000210003EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 tnr7_spatial_1_1- inner node disablement
        // 32 tnr_scaler_lb_1_1- inner node disablement
        // 34 ifd_gmv_1_4- inner node disablement
        // 35 gmv_statistics_1_1- inner node disablement
        // 36 odr_gmv_feature_1_4- inner node disablement
        // 37 odr_gmv_match_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 40 tnr7_ims_1_2- inner node disablement
        // 41 tnr7_bc_1_2- inner node disablement
        // 42 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 43 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 44 tnr7_blend_1_1- inner node disablement
        // 45 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 46 tnr_scaler_fp_1_1- inner node disablement
        // 47 image_upscaler_1_1- inner node disablement
        // 48 cas_1_1- inner node disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        // 52 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFDEFFF0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 xnr_5_4- inner node disablement
        // 23 vcr_3_1- inner node disablement
        // 24 glim_2_0- inner node disablement
        // 25 acm_1_2- inner node disablement
        // 26 gammatm_v4- inner node disablement
        // 27 csc_1_1- inner node disablement
        // 28 fr_grid_1_0- inner node disablement
        // 29 b2i_ds_1_1- inner node disablement
        // 30 lbff_crop_espa_1_4- inner node disablement
        // 31 tnr7_spatial_1_1- inner node disablement
        // 32 tnr_scaler_lb_1_1- inner node disablement
        // 33 odr_af_std_1_4- inner node disablement
        // 34 ifd_gmv_1_4- inner node disablement
        // 35 gmv_statistics_1_1- inner node disablement
        // 36 odr_gmv_feature_1_4- inner node disablement
        // 37 odr_gmv_match_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 40 tnr7_ims_1_2- inner node disablement
        // 41 tnr7_bc_1_2- inner node disablement
        // 42 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 43 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 44 tnr7_blend_1_1- inner node disablement
        // 45 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 46 tnr_scaler_fp_1_1- inner node disablement
        // 47 image_upscaler_1_1- inner node disablement
        // 48 cas_1_1- inner node disablement
        // 49 odr_ofs_mp_1_4- inner node disablement
        // 50 b2i_ds_output_1_1- inner node disablement
        // 51 odr_ofs_dp_1_4- inner node disablement
        // 52 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D9FF1FB
        bitmaps.deb[0] = 0x8D9FF1FB;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF61EBF
        bitmaps.teb[0] = 0x3FF61EBF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsWithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 53; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFDEFFF0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF800000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDolSmoothOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 8; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // RBM - 0x0000000000000000000000025001A011
    bitmaps.rbm[0] = 0x5001A011;
    bitmaps.rbm[1] = 0x2;
    // DEB - 0x0000000000000000000000018C000131
    bitmaps.deb[0] = 0x8C000131;
    bitmaps.deb[1] = 0x1;
    // TEB - 0x0000000000010017
    bitmaps.teb[0] = 0x10017;
    // REB - 0x00000000000000000000000000160787
    bitmaps.reb[0] = 0x160787;
    // No inner nodes
    (void)nodeInnerOptions;
}

void LbffDolSmoothOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 8; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xF0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsNoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 38; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000300000FF
        bitmaps.teb[0] = 0x300000FF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2020007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020041EFF
        bitmaps.teb[0] = 0x20041EFF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000200000FF
        bitmaps.teb[0] = 0x200000FF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2420007D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010041EFF
        bitmaps.teb[0] = 0x10041EFF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000100000FF
        bitmaps.teb[0] = 0x100000FF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3820007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 image_upscaler_1_1- inner node disablement
        // 33 cas_1_1- inner node disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FDFFE0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 image_upscaler_1_1- inner node disablement
        // 33 cas_1_1- inner node disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030041EFF
        bitmaps.teb[0] = 0x30041EFF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsNoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 38; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FDFFE0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F00000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsWithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 42; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000303200FF
        bitmaps.teb[0] = 0x303200FF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2020007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020361EFF
        bitmaps.teb[0] = 0x20361EFF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000203200FF
        bitmaps.teb[0] = 0x203200FF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2420007D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010361EFF
        bitmaps.teb[0] = 0x10361EFF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000103200FF
        bitmaps.teb[0] = 0x103200FF;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3820007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 image_upscaler_1_1- inner node disablement
        // 33 cas_1_1- inner node disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        // 38 ifd_gmv_1_4- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3DFDFFE0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 image_upscaler_1_1- inner node disablement
        // 33 cas_1_1- inner node disablement
        // 34 odr_ofs_mp_1_4- inner node disablement
        // 35 b2i_ds_output_1_1- inner node disablement
        // 36 odr_ofs_dp_1_4- inner node disablement
        // 37 odr_af_std_1_4- inner node disablement
        // 38 ifd_gmv_1_4- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030361EFF
        bitmaps.teb[0] = 0x30361EFF;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsWithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 42; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3DFDFFE0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F00000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsNoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC000FF
        bitmaps.teb[0] = 0x3FC000FF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x420007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC41EFF
        bitmaps.teb[0] = 0x2FC41EFF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC000FF
        bitmaps.teb[0] = 0x2FC000FF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400420007D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC41EFF
        bitmaps.teb[0] = 0x1FC41EFF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC000FF
        bitmaps.teb[0] = 0x1FC000FF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800420007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 tnr7_spatial_1_1- inner node disablement
        // 33 tnr_scaler_lb_1_1- inner node disablement
        // 35 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 tnr7_bc_1_2- inner node disablement
        // 39 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 40 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFBDFFE0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 tnr7_spatial_1_1- inner node disablement
        // 33 tnr_scaler_lb_1_1- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 tnr7_bc_1_2- inner node disablement
        // 39 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 40 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC41EFF
        bitmaps.teb[0] = 0x3FC41EFF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsNoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFBDFFE0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F00000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsWithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 54; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF200FF
        bitmaps.teb[0] = 0x3FF200FF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x420007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF61EFF
        bitmaps.teb[0] = 0x2FF61EFF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF200FF
        bitmaps.teb[0] = 0x2FF200FF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000420007D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF61EFF
        bitmaps.teb[0] = 0x1FF61EFF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D8001FF
        bitmaps.deb[0] = 0x8D8001FF;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF200FF
        bitmaps.teb[0] = 0x1FF200FF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000420007D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 tnr7_spatial_1_1- inner node disablement
        // 33 tnr_scaler_lb_1_1- inner node disablement
        // 35 ifd_gmv_1_4- inner node disablement
        // 36 gmv_statistics_1_1- inner node disablement
        // 37 odr_gmv_feature_1_4- inner node disablement
        // 38 odr_gmv_match_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 41 tnr7_ims_1_2- inner node disablement
        // 42 tnr7_bc_1_2- inner node disablement
        // 43 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 44 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 45 tnr7_blend_1_1- inner node disablement
        // 46 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 47 tnr_scaler_fp_1_1- inner node disablement
        // 48 image_upscaler_1_1- inner node disablement
        // 49 cas_1_1- inner node disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFBDFFE0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 xnr_5_4- inner node disablement
        // 24 vcr_3_1- inner node disablement
        // 25 glim_2_0- inner node disablement
        // 26 acm_1_2- inner node disablement
        // 27 gammatm_v4- inner node disablement
        // 28 csc_1_1- inner node disablement
        // 29 fr_grid_1_0- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 tnr7_spatial_1_1- inner node disablement
        // 33 tnr_scaler_lb_1_1- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_gmv_1_4- inner node disablement
        // 36 gmv_statistics_1_1- inner node disablement
        // 37 odr_gmv_feature_1_4- inner node disablement
        // 38 odr_gmv_match_1_4- inner node disablement
        // 39 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 41 tnr7_ims_1_2- inner node disablement
        // 42 tnr7_bc_1_2- inner node disablement
        // 43 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 44 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 45 tnr7_blend_1_1- inner node disablement
        // 46 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 47 tnr_scaler_fp_1_1- inner node disablement
        // 48 image_upscaler_1_1- inner node disablement
        // 49 cas_1_1- inner node disablement
        // 50 odr_ofs_mp_1_4- inner node disablement
        // 51 b2i_ds_output_1_1- inner node disablement
        // 52 odr_ofs_dp_1_4- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D9FF1FF
        bitmaps.deb[0] = 0x8D9FF1FF;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF61EFF
        bitmaps.teb[0] = 0x3FF61EFF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsWithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 54; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFBDFFE0000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrNoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 36; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400DD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400DD;
        // DEB - 0x000000000000E1200000F9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000409F
        bitmaps.teb[0] = 0x3000409F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE03000390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030041E9F
        bitmaps.teb[0] = 0x30041E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000009F
        bitmaps.teb[0] = 0x3000009F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE030003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400DD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x4400DD;
        // DEB - 0x000000000000C1200000F9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020045E9F
        bitmaps.teb[0] = 0x20045E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400DD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400DD;
        // DEB - 0x000000000000C1200000F9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000409F
        bitmaps.teb[0] = 0x2000409F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE43000390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020041E9F
        bitmaps.teb[0] = 0x20041E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000009F
        bitmaps.teb[0] = 0x2000009F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE430003D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400DD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x2400DD;
        // DEB - 0x00000000000021200000F9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010045E9F
        bitmaps.teb[0] = 0x10045E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400DD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400DD;
        // DEB - 0x00000000000021200000F9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000409F
        bitmaps.teb[0] = 0x1000409F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF83000390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010041E9F
        bitmaps.teb[0] = 0x10041E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000009F
        bitmaps.teb[0] = 0x1000009F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF830003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400DD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x6400DD;
        // DEB - 0x000000000000E1200000F9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030045E9F
        bitmaps.teb[0] = 0x30045E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrNoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 36; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FCFFF000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F0000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrIrNoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 32; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[1].run_kernel.enable = 0; // bxt_blc
    nodeKernels.kernelList[2].run_kernel.enable = 0; // linearization2_0
    nodeKernels.kernelList[6].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[8].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[14].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064001D50010009
        bitmaps.rbm[0] = 0x50010009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1200000F9CE8C0000F1
        bitmaps.deb[0] = 0x8C0000F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000009F
        bitmaps.teb[0] = 0x3000009F;
        // REB - 0x00000000000000000000001F10F60667
        bitmaps.reb[0] = 0x10F60667;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF80E0000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D501F0009
        bitmaps.rbm[0] = 0x501F0009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1200000F9CE8C1BF0F1
        bitmaps.deb[0] = 0x8C1BF0F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020001E9F
        bitmaps.teb[0] = 0x20001E9F;
        // REB - 0x00000000000000000000001F10F67E67
        bitmaps.reb[0] = 0x10F67E67;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 24 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D50010009
        bitmaps.rbm[0] = 0x50010009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1200000F9CE8C0000F1
        bitmaps.deb[0] = 0x8C0000F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000009F
        bitmaps.teb[0] = 0x2000009F;
        // REB - 0x00000000000000000000001F10F60667
        bitmaps.reb[0] = 0x10F60667;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 24 odr_ofs_mp_1_4- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF90E0000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D501F0009
        bitmaps.rbm[0] = 0x501F0009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021200000F9CE8C1BF0F1
        bitmaps.deb[0] = 0x8C1BF0F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010001E9F
        bitmaps.teb[0] = 0x10001E9F;
        // REB - 0x00000000000000000000001F10F67E67
        bitmaps.reb[0] = 0x10F67E67;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 25 b2i_ds_output_1_1- inner node disablement
        // 26 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D50010009
        bitmaps.rbm[0] = 0x50010009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021200000F9CE8C0000F1
        bitmaps.deb[0] = 0x8C0000F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000009F
        bitmaps.teb[0] = 0x1000009F;
        // REB - 0x00000000000000000000001F10F60667
        bitmaps.reb[0] = 0x10F60667;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 25 b2i_ds_output_1_1- inner node disablement
        // 26 odr_ofs_dp_1_4- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFE0E0000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E0009
        bitmaps.rbm[0] = 0x1E0009;
        // DEB - 0x000000000000000000000000001BF0F1
        bitmaps.deb[0] = 0x1BF0F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007E67
        bitmaps.reb[0] = 0x7E67;

        // Kernels disablement
        // 5 gd_2_2- inner node disablement
        // 6 wb_1_1- inner node disablement
        // 7 bnlm_3_4- inner node disablement
        // 8 bxt_demosaic- inner node disablement
        // 9 vcsc_2_0_b- inner node disablement
        // 10 gltm_2_0- inner node disablement
        // 11 xnr_5_4- inner node disablement
        // 12 vcr_3_1- inner node disablement
        // 13 glim_2_0- inner node disablement
        // 14 acm_1_2- inner node disablement
        // 15 gammatm_v4- inner node disablement
        // 16 csc_1_1- inner node disablement
        // 20 b2i_ds_1_1- inner node disablement
        // 21 lbff_crop_espa_1_4- inner node disablement
        // 22 image_upscaler_1_1- inner node disablement
        // 23 cas_1_1- inner node disablement
        // 24 odr_ofs_mp_1_4- inner node disablement
        // 25 b2i_ds_output_1_1- inner node disablement
        // 26 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7F1FFE0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 gd_2_2- inner node disablement
        // 6 wb_1_1- inner node disablement
        // 7 bnlm_3_4- inner node disablement
        // 8 bxt_demosaic- inner node disablement
        // 9 vcsc_2_0_b- inner node disablement
        // 10 gltm_2_0- inner node disablement
        // 11 xnr_5_4- inner node disablement
        // 12 vcr_3_1- inner node disablement
        // 13 glim_2_0- inner node disablement
        // 14 acm_1_2- inner node disablement
        // 15 gammatm_v4- inner node disablement
        // 16 csc_1_1- inner node disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 b2i_ds_1_1- inner node disablement
        // 21 lbff_crop_espa_1_4- inner node disablement
        // 22 image_upscaler_1_1- inner node disablement
        // 23 cas_1_1- inner node disablement
        // 24 odr_ofs_mp_1_4- inner node disablement
        // 25 b2i_ds_output_1_1- inner node disablement
        // 26 odr_ofs_dp_1_4- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064001D501F0009
        bitmaps.rbm[0] = 0x501F0009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1200000F9CE8C1BF0F1
        bitmaps.deb[0] = 0x8C1BF0F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030001E9F
        bitmaps.teb[0] = 0x30001E9F;
        // REB - 0x00000000000000000000001F10F67E67
        bitmaps.reb[0] = 0x10F67E67;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrIrNoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 32; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[1].run_kernel.enable = 0; // bxt_blc
    nodeKernels.kernelList[2].run_kernel.enable = 0; // linearization2_0
    nodeKernels.kernelList[6].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[8].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[14].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7F1FFE0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7C00000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrWithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 40; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400FD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400FD;
        // DEB - 0x000000000000E120000FF9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003032409F
        bitmaps.teb[0] = 0x3032409F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE03000390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030361E9F
        bitmaps.teb[0] = 0x30361E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003032009F
        bitmaps.teb[0] = 0x3032009F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE030003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400FD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x4400FD;
        // DEB - 0x000000000000C120000FF9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020365E9F
        bitmaps.teb[0] = 0x20365E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400FD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400FD;
        // DEB - 0x000000000000C120000FF9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002032409F
        bitmaps.teb[0] = 0x2032409F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE43000390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020361E9F
        bitmaps.teb[0] = 0x20361E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002032009F
        bitmaps.teb[0] = 0x2032009F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xE430003D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400FD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x2400FD;
        // DEB - 0x0000000000002120000FF9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010365E9F
        bitmaps.teb[0] = 0x10365E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400FD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400FD;
        // DEB - 0x0000000000002120000FF9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001032409F
        bitmaps.teb[0] = 0x1032409F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF83000390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010361E9F
        bitmaps.teb[0] = 0x10361E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001032009F
        bitmaps.teb[0] = 0x1032009F;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF830003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 image_upscaler_1_1- inner node disablement
        // 29 cas_1_1- inner node disablement
        // 30 odr_ofs_mp_1_4- inner node disablement
        // 31 b2i_ds_output_1_1- inner node disablement
        // 32 odr_ofs_dp_1_4- inner node disablement
        // 33 aestatistics_2_1- inner node disablement
        // 34 odr_ae_1_4- inner node disablement
        // 35 odr_af_std_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400FD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x6400FD;
        // DEB - 0x000000000000E120000FF9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030365E9F
        bitmaps.teb[0] = 0x30365E9F;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrWithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 40; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xF1FCFFF000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F0000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrNoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 48; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCDD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCDD;
        // DEB - 0x000000000000E13E79F0F9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0409F
        bitmaps.teb[0] = 0x3FC0409F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1C3000390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC41E9F
        bitmaps.teb[0] = 0x3FC41E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1C30003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCDD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FCDD;
        // DEB - 0x000000000000C13E79F0F9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC45E9F
        bitmaps.teb[0] = 0x2FC45E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x100000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCDD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCDD;
        // DEB - 0x000000000000C13E79F0F9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0409F
        bitmaps.teb[0] = 0x2FC0409F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1001C3000390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC41E9F
        bitmaps.teb[0] = 0x2FC41E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x100000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1001C30003D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCDD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FCDD;
        // DEB - 0x000000000000213E79F0F9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC45E9F
        bitmaps.teb[0] = 0x1FC45E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x600000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCDD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCDD;
        // DEB - 0x000000000000213E79F0F9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0409F
        bitmaps.teb[0] = 0x1FC0409F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6001C3000390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC41E9F
        bitmaps.teb[0] = 0x1FC41E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x600000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6001C30003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 35 tnr7_ims_1_2- inner node disablement
        // 36 tnr7_bc_1_2- inner node disablement
        // 37 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 38 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 39 tnr7_blend_1_1- inner node disablement
        // 40 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 41 tnr_scaler_fp_1_1- inner node disablement
        // 42 image_upscaler_1_1- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        // 47 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 35 tnr7_ims_1_2- inner node disablement
        // 36 tnr7_bc_1_2- inner node disablement
        // 37 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 38 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 39 tnr7_blend_1_1- inner node disablement
        // 40 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 41 tnr_scaler_fp_1_1- inner node disablement
        // 42 image_upscaler_1_1- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        // 47 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 35 tnr7_ims_1_2- inner node disablement
        // 36 tnr7_bc_1_2- inner node disablement
        // 37 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 38 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 39 tnr7_blend_1_1- inner node disablement
        // 40 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 41 tnr_scaler_fp_1_1- inner node disablement
        // 42 image_upscaler_1_1- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        // 47 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 35 tnr7_ims_1_2- inner node disablement
        // 36 tnr7_bc_1_2- inner node disablement
        // 37 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 38 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 39 tnr7_blend_1_1- inner node disablement
        // 40 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 41 tnr_scaler_fp_1_1- inner node disablement
        // 42 image_upscaler_1_1- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        // 47 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCDD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FCDD;
        // DEB - 0x000000000000E13E79F0F9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC45E9F
        bitmaps.teb[0] = 0x3FC45E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrNoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 48; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFE3CFFF000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7C0000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrIrNoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 44; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[1].run_kernel.enable = 0; // bxt_blc
    nodeKernels.kernelList[2].run_kernel.enable = 0; // linearization2_0
    nodeKernels.kernelList[6].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[8].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[14].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC1D50010009
        bitmaps.rbm[0] = 0x50010009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E13E79F0F9CE8C0000F1
        bitmaps.deb[0] = 0x8C0000F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        // REB - 0x00000000000000000000001FF0F60667
        bitmaps.reb[0] = 0xF0F60667;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 24 odr_awb_std_1_4- inner node disablement
        // 25 odr_awb_sat_1_4- inner node disablement
        // 26 aestatistics_2_1- inner node disablement
        // 27 odr_ae_1_4- inner node disablement
        // 28 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F0E0000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D501F0009
        bitmaps.rbm[0] = 0x501F0009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C13E79F0F9CE8C1BF0F1
        bitmaps.deb[0] = 0x8C1BF0F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC01E9F
        bitmaps.teb[0] = 0x2FC01E9F;
        // REB - 0x00000000000000000000001FF0F67E67
        bitmaps.reb[0] = 0xF0F67E67;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D50010009
        bitmaps.rbm[0] = 0x50010009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C13E79F0F9CE8C0000F1
        bitmaps.deb[0] = 0x8C0000F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        // REB - 0x00000000000000000000001FF0F60667
        bitmaps.reb[0] = 0xF0F60667;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 24 odr_awb_std_1_4- inner node disablement
        // 25 odr_awb_sat_1_4- inner node disablement
        // 26 aestatistics_2_1- inner node disablement
        // 27 odr_ae_1_4- inner node disablement
        // 28 odr_af_std_1_4- inner node disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1001F0E0000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D501F0009
        bitmaps.rbm[0] = 0x501F0009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x000000000000213E79F0F9CE8C1BF0F1
        bitmaps.deb[0] = 0x8C1BF0F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC01E9F
        bitmaps.teb[0] = 0x1FC01E9F;
        // REB - 0x00000000000000000000001FF0F67E67
        bitmaps.reb[0] = 0xF0F67E67;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D50010009
        bitmaps.rbm[0] = 0x50010009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x000000000000213E79F0F9CE8C0000F1
        bitmaps.deb[0] = 0x8C0000F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        // REB - 0x00000000000000000000001FF0F60667
        bitmaps.reb[0] = 0xF0F60667;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 24 odr_awb_std_1_4- inner node disablement
        // 25 odr_awb_sat_1_4- inner node disablement
        // 26 aestatistics_2_1- inner node disablement
        // 27 odr_ae_1_4- inner node disablement
        // 28 odr_af_std_1_4- inner node disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6001F0E0000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E0009
        bitmaps.rbm[0] = 0x1E0009;
        // DEB - 0x000000000000000000000000001BF0F1
        bitmaps.deb[0] = 0x1BF0F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007E67
        bitmaps.reb[0] = 0x7E67;

        // Kernels disablement
        // 5 gd_2_2- inner node disablement
        // 6 wb_1_1- inner node disablement
        // 7 bnlm_3_4- inner node disablement
        // 8 bxt_demosaic- inner node disablement
        // 9 vcsc_2_0_b- inner node disablement
        // 10 gltm_2_0- inner node disablement
        // 11 xnr_5_4- inner node disablement
        // 12 vcr_3_1- inner node disablement
        // 13 glim_2_0- inner node disablement
        // 14 acm_1_2- inner node disablement
        // 15 gammatm_v4- inner node disablement
        // 16 csc_1_1- inner node disablement
        // 20 b2i_ds_1_1- inner node disablement
        // 21 lbff_crop_espa_1_4- inner node disablement
        // 22 tnr7_spatial_1_1- inner node disablement
        // 23 tnr_scaler_lb_1_1- inner node disablement
        // 29 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 30 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 31 tnr7_ims_1_2- inner node disablement
        // 32 tnr7_bc_1_2- inner node disablement
        // 33 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 34 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 35 tnr7_blend_1_1- inner node disablement
        // 36 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 37 tnr_scaler_fp_1_1- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 cas_1_1- inner node disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        // 43 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFE0F1FFE0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 gd_2_2- inner node disablement
        // 6 wb_1_1- inner node disablement
        // 7 bnlm_3_4- inner node disablement
        // 8 bxt_demosaic- inner node disablement
        // 9 vcsc_2_0_b- inner node disablement
        // 10 gltm_2_0- inner node disablement
        // 11 xnr_5_4- inner node disablement
        // 12 vcr_3_1- inner node disablement
        // 13 glim_2_0- inner node disablement
        // 14 acm_1_2- inner node disablement
        // 15 gammatm_v4- inner node disablement
        // 16 csc_1_1- inner node disablement
        // 17 rgbs_grid_1_1- inner node disablement
        // 18 ccm_3a_2_0- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 b2i_ds_1_1- inner node disablement
        // 21 lbff_crop_espa_1_4- inner node disablement
        // 22 tnr7_spatial_1_1- inner node disablement
        // 23 tnr_scaler_lb_1_1- inner node disablement
        // 24 odr_awb_std_1_4- inner node disablement
        // 25 odr_awb_sat_1_4- inner node disablement
        // 26 aestatistics_2_1- inner node disablement
        // 27 odr_ae_1_4- inner node disablement
        // 28 odr_af_std_1_4- inner node disablement
        // 29 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 30 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 31 tnr7_ims_1_2- inner node disablement
        // 32 tnr7_bc_1_2- inner node disablement
        // 33 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 34 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 35 tnr7_blend_1_1- inner node disablement
        // 36 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 37 tnr_scaler_fp_1_1- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 cas_1_1- inner node disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        // 43 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC1D501F0009
        bitmaps.rbm[0] = 0x501F0009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E13E79F0F9CE8C1BF0F1
        bitmaps.deb[0] = 0x8C1BF0F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC01E9F
        bitmaps.teb[0] = 0x3FC01E9F;
        // REB - 0x00000000000000000000001FF0F67E67
        bitmaps.reb[0] = 0xF0F67E67;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrIrNoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 44; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[1].run_kernel.enable = 0; // bxt_blc
    nodeKernels.kernelList[2].run_kernel.enable = 0; // linearization2_0
    nodeKernels.kernelList[6].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[8].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[14].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFE0F1FFE0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7C000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrWithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 52; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCFD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCFD;
        // DEB - 0x000000000000E13E79FFF9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF2409F
        bitmaps.teb[0] = 0x3FF2409F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1C3000390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF61E9F
        bitmaps.teb[0] = 0x3FF61E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF2009F
        bitmaps.teb[0] = 0x3FF2009F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1C30003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCFD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FCFD;
        // DEB - 0x000000000000C13E79FFF9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF65E9F
        bitmaps.teb[0] = 0x2FF65E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCFD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCFD;
        // DEB - 0x000000000000C13E79FFF9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF2409F
        bitmaps.teb[0] = 0x2FF2409F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10001C3000390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF61E9F
        bitmaps.teb[0] = 0x2FF61E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF2009F
        bitmaps.teb[0] = 0x2FF2009F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10001C30003D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCFD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FCFD;
        // DEB - 0x000000000000213E79FFF9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF65E9F
        bitmaps.teb[0] = 0x1FF65E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCFD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCFD;
        // DEB - 0x000000000000213E79FFF9CE8F8001F1
        bitmaps.deb[0] = 0x8F8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF2409F
        bitmaps.teb[0] = 0x1FF2409F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60001C3000390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D9FF1F1
        bitmaps.deb[0] = 0x8D9FF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF61E9F
        bitmaps.teb[0] = 0x1FF61E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF2009F
        bitmaps.teb[0] = 0x1FF2009F;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60001C30003D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_gmv_1_4- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 39 tnr7_ims_1_2- inner node disablement
        // 40 tnr7_bc_1_2- inner node disablement
        // 41 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 42 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 43 tnr7_blend_1_1- inner node disablement
        // 44 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 45 tnr_scaler_fp_1_1- inner node disablement
        // 46 image_upscaler_1_1- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        // 51 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_gmv_1_4- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 39 tnr7_ims_1_2- inner node disablement
        // 40 tnr7_bc_1_2- inner node disablement
        // 41 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 42 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 43 tnr7_blend_1_1- inner node disablement
        // 44 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 45 tnr_scaler_fp_1_1- inner node disablement
        // 46 image_upscaler_1_1- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        // 51 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_gmv_1_4- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 39 tnr7_ims_1_2- inner node disablement
        // 40 tnr7_bc_1_2- inner node disablement
        // 41 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 42 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 43 tnr7_blend_1_1- inner node disablement
        // 44 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 45 tnr_scaler_fp_1_1- inner node disablement
        // 46 image_upscaler_1_1- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        // 51 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 bnlm_3_4- inner node disablement
        // 15 bxt_demosaic- inner node disablement
        // 16 vcsc_2_0_b- inner node disablement
        // 17 gltm_2_0- inner node disablement
        // 18 xnr_5_4- inner node disablement
        // 19 vcr_3_1- inner node disablement
        // 20 glim_2_0- inner node disablement
        // 21 acm_1_2- inner node disablement
        // 22 gammatm_v4- inner node disablement
        // 23 csc_1_1- inner node disablement
        // 24 ccm_3a_2_0- inner node disablement
        // 25 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_1_1- inner node disablement
        // 27 lbff_crop_espa_1_4- inner node disablement
        // 28 tnr7_spatial_1_1- inner node disablement
        // 29 tnr_scaler_lb_1_1- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_gmv_1_4- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 38 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 39 tnr7_ims_1_2- inner node disablement
        // 40 tnr7_bc_1_2- inner node disablement
        // 41 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 42 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 43 tnr7_blend_1_1- inner node disablement
        // 44 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 45 tnr_scaler_fp_1_1- inner node disablement
        // 46 image_upscaler_1_1- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        // 51 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCFD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FCFD;
        // DEB - 0x000000000000E13E79FFF9CE8F9FF1F1
        bitmaps.deb[0] = 0x8F9FF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF65E9F
        bitmaps.teb[0] = 0x3FF65E9F;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrWithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 52; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFE3CFFF000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7C00000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrNoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 33; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1200000F9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003000009F
        bitmaps.teb[0] = 0x3000009F;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F01C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1200000F9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020001E9F
        bitmaps.teb[0] = 0x20001E9F;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1200000F9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002000009F
        bitmaps.teb[0] = 0x2000009F;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F21C0000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021200000F9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010001E9F
        bitmaps.teb[0] = 0x10001E9F;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021200000F9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001000009F
        bitmaps.teb[0] = 0x1000009F;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FC1C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 image_upscaler_1_1- inner node disablement
        // 24 cas_1_1- inner node disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFE3FFC0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 image_upscaler_1_1- inner node disablement
        // 24 cas_1_1- inner node disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1200000F9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030001E9F
        bitmaps.teb[0] = 0x30001E9F;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrNoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 33; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFE3FFC0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF800000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrWithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 37; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x64003D;
        // DEB - 0x000000000000E120000FF9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003032009F
        bitmaps.teb[0] = 0x3032009F;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F01C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x44003D;
        // DEB - 0x000000000000C120000FF9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020321E9F
        bitmaps.teb[0] = 0x20321E9F;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x44003D;
        // DEB - 0x000000000000C120000FF9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002032009F
        bitmaps.teb[0] = 0x2032009F;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1F21C0000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x24003D;
        // DEB - 0x0000000000002120000FF9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010321E9F
        bitmaps.teb[0] = 0x10321E9F;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x24003D;
        // DEB - 0x0000000000002120000FF9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001032009F
        bitmaps.teb[0] = 0x1032009F;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FC1C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 image_upscaler_1_1- inner node disablement
        // 24 cas_1_1- inner node disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        // 33 ifd_gmv_1_4- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1E0FE3FFC0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 image_upscaler_1_1- inner node disablement
        // 24 cas_1_1- inner node disablement
        // 25 odr_ofs_mp_1_4- inner node disablement
        // 26 b2i_ds_output_1_1- inner node disablement
        // 27 odr_ofs_dp_1_4- inner node disablement
        // 28 odr_awb_std_1_4- inner node disablement
        // 29 odr_awb_sat_1_4- inner node disablement
        // 30 aestatistics_2_1- inner node disablement
        // 31 odr_ae_1_4- inner node disablement
        // 32 odr_af_std_1_4- inner node disablement
        // 33 ifd_gmv_1_4- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x64003D;
        // DEB - 0x000000000000E120000FF9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030321E9F
        bitmaps.teb[0] = 0x30321E9F;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrWithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 37; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1E0FE3FFC0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF800000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrNoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 45; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E13E79F0F9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E1C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C13E79F0F9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC01E9F
        bitmaps.teb[0] = 0x2FC01E9F;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C13E79F0F9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2003E1C0000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x000000000000213E79F0F9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC01E9F
        bitmaps.teb[0] = 0x1FC01E9F;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x000000000000213E79F0F9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC003E1C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 tnr7_spatial_1_1- inner node disablement
        // 24 tnr_scaler_lb_1_1- inner node disablement
        // 30 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 31 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 32 tnr7_ims_1_2- inner node disablement
        // 33 tnr7_bc_1_2- inner node disablement
        // 34 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 35 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 36 tnr7_blend_1_1- inner node disablement
        // 37 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 38 tnr_scaler_fp_1_1- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 cas_1_1- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        // 44 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFC1E3FFC0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 tnr7_spatial_1_1- inner node disablement
        // 24 tnr_scaler_lb_1_1- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        // 30 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 31 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 32 tnr7_ims_1_2- inner node disablement
        // 33 tnr7_bc_1_2- inner node disablement
        // 34 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 35 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 36 tnr7_blend_1_1- inner node disablement
        // 37 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 38 tnr_scaler_fp_1_1- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 cas_1_1- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        // 44 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E13E79F0F9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC01E9F
        bitmaps.teb[0] = 0x3FC01E9F;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrNoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 45; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFC1E3FFC0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF8000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrWithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x67FC3D;
        // DEB - 0x000000000000E13E79FFF9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF2009F
        bitmaps.teb[0] = 0x3FF2009F;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3E1C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x47FC3D;
        // DEB - 0x000000000000C13E79FFF9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF21E9F
        bitmaps.teb[0] = 0x2FF21E9F;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x47FC3D;
        // DEB - 0x000000000000C13E79FFF9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FF2009F
        bitmaps.teb[0] = 0x2FF2009F;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20003E1C0000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x27FC3D;
        // DEB - 0x000000000000213E79FFF9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF21E9F
        bitmaps.teb[0] = 0x1FF21E9F;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x27FC3D;
        // DEB - 0x000000000000213E79FFF9CE8C0001F1
        bitmaps.deb[0] = 0x8C0001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FF2009F
        bitmaps.teb[0] = 0x1FF2009F;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0003E1C0000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 tnr7_spatial_1_1- inner node disablement
        // 24 tnr_scaler_lb_1_1- inner node disablement
        // 30 ifd_gmv_1_4- inner node disablement
        // 31 gmv_statistics_1_1- inner node disablement
        // 32 odr_gmv_feature_1_4- inner node disablement
        // 33 odr_gmv_match_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 36 tnr7_ims_1_2- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 40 tnr7_blend_1_1- inner node disablement
        // 41 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 42 tnr_scaler_fp_1_1- inner node disablement
        // 43 image_upscaler_1_1- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFC1E3FFC0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 bnlm_3_4- inner node disablement
        // 9 bxt_demosaic- inner node disablement
        // 10 vcsc_2_0_b- inner node disablement
        // 11 gltm_2_0- inner node disablement
        // 12 xnr_5_4- inner node disablement
        // 13 vcr_3_1- inner node disablement
        // 14 glim_2_0- inner node disablement
        // 15 acm_1_2- inner node disablement
        // 16 gammatm_v4- inner node disablement
        // 17 csc_1_1- inner node disablement
        // 18 rgbs_grid_1_1- inner node disablement
        // 19 ccm_3a_2_0- inner node disablement
        // 20 fr_grid_1_0- inner node disablement
        // 21 b2i_ds_1_1- inner node disablement
        // 22 lbff_crop_espa_1_4- inner node disablement
        // 23 tnr7_spatial_1_1- inner node disablement
        // 24 tnr_scaler_lb_1_1- inner node disablement
        // 25 odr_awb_std_1_4- inner node disablement
        // 26 odr_awb_sat_1_4- inner node disablement
        // 27 aestatistics_2_1- inner node disablement
        // 28 odr_ae_1_4- inner node disablement
        // 29 odr_af_std_1_4- inner node disablement
        // 30 ifd_gmv_1_4- inner node disablement
        // 31 gmv_statistics_1_1- inner node disablement
        // 32 odr_gmv_feature_1_4- inner node disablement
        // 33 odr_gmv_match_1_4- inner node disablement
        // 34 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 35 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 36 tnr7_ims_1_2- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 40 tnr7_blend_1_1- inner node disablement
        // 41 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 42 tnr_scaler_fp_1_1- inner node disablement
        // 43 image_upscaler_1_1- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x67FC3D;
        // DEB - 0x000000000000E13E79FFF9CE8C1BF1F1
        bitmaps.deb[0] = 0x8C1BF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FF21E9F
        bitmaps.teb[0] = 0x3FF21E9F;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrWithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[9].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[15].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFC1E3FFC0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF80000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 39; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003008009F
        bitmaps.teb[0] = 0x3008009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC0700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030081E9F
        bitmaps.teb[0] = 0x30081E9F;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7800000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1200000F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x000000003008009F
        bitmaps.teb[0] = 0x3008009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC0700000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044019D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x44019D;
        // DEB - 0x000000000000C1200000F9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020083F9F
        bitmaps.teb[0] = 0x20083F9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002008009F
        bitmaps.teb[0] = 0x2008009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x0000000020081E9F
        bitmaps.teb[0] = 0x20081E9F;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7808000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1200000F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x000000002008009F
        bitmaps.teb[0] = 0x2008009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC8700000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024019D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x24019D;
        // DEB - 0x00000000000021200000F9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010083F9F
        bitmaps.teb[0] = 0x10083F9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001008009F
        bitmaps.teb[0] = 0x1008009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FF0700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x0000000010081E9F
        bitmaps.teb[0] = 0x10081E9F;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7830000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021200000F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x000000001008009F
        bitmaps.teb[0] = 0x1008009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FF0700000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3F8FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x783F8FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064019D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x64019D;
        // DEB - 0x000000000000E1200000F9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0xF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x0000000030083F9F
        bitmaps.teb[0] = 0x30083F9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 39; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3F8FFF00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3E000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 43; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000303A009F
        bitmaps.teb[0] = 0x303A009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC0700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000303A1E9F
        bitmaps.teb[0] = 0x303A1E9F;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7800000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E120000FF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000303A009F
        bitmaps.teb[0] = 0x303A009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC0700000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004401BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x4401BD;
        // DEB - 0x000000000000C120000FF9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000203A3F9F
        bitmaps.teb[0] = 0x203A3F9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000203A009F
        bitmaps.teb[0] = 0x203A009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000203A1E9F
        bitmaps.teb[0] = 0x203A1E9F;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7808000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C120000FF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xC120;
        // TEB - 0x00000000203A009F
        bitmaps.teb[0] = 0x203A009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FC8700000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002401BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x2401BD;
        // DEB - 0x0000000000002120000FF9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000103A3F9F
        bitmaps.teb[0] = 0x103A3F9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000103A009F
        bitmaps.teb[0] = 0x103A009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FF0700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000103A1E9F
        bitmaps.teb[0] = 0x103A1E9F;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7830000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x0000000000002120000FF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0x2120;
        // TEB - 0x00000000103A009F
        bitmaps.teb[0] = 0x103A009F;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FF0700000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 39 ifd_gmv_1_4- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7803F8FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        // 39 ifd_gmv_1_4- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        // 39 ifd_gmv_1_4- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7F83F8FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 image_upscaler_1_1- inner node disablement
        // 26 cas_1_1- inner node disablement
        // 27 odr_ofs_mp_1_4- inner node disablement
        // 28 b2i_ds_output_1_1- inner node disablement
        // 29 odr_ofs_dp_1_4- inner node disablement
        // 30 odr_awb_std_1_4- inner node disablement
        // 31 odr_awb_sat_1_4- inner node disablement
        // 32 aestatistics_2_1- inner node disablement
        // 33 odr_ae_1_4- inner node disablement
        // 34 odr_af_std_1_4- inner node disablement
        // 35 ifd_pdaf_1_4- inner node disablement
        // 36 pext_1_0- inner node disablement
        // 37 pafstatistics_1_2- inner node disablement
        // 38 odr_pdaf_1_4- inner node disablement
        // 39 ifd_gmv_1_4- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006401BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x6401BD;
        // DEB - 0x000000000000E120000FF9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0xFF9CE;
        bitmaps.deb[2] = 0xE120;
        // TEB - 0x00000000303A3F9F
        bitmaps.teb[0] = 0x303A3F9F;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 43; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7803F8FFF00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3E000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 51; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC8009F
        bitmaps.teb[0] = 0x3FC8009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC81E9F
        bitmaps.teb[0] = 0x3FC81E9F;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13E79F0F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC8009F
        bitmaps.teb[0] = 0x3FC8009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF8700000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FD9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FD9D;
        // DEB - 0x000000000000C13E79F0F9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC83F9F
        bitmaps.teb[0] = 0x2FC83F9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC8009F
        bitmaps.teb[0] = 0x2FC8009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC81E9F
        bitmaps.teb[0] = 0x2FC81E9F;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800F00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13E79F0F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FC8009F
        bitmaps.teb[0] = 0x2FC8009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FD9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FD9D;
        // DEB - 0x000000000000213E79F0F9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC83F9F
        bitmaps.teb[0] = 0x1FC83F9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC8009F
        bitmaps.teb[0] = 0x1FC8009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC81E9F
        bitmaps.teb[0] = 0x1FC81E9F;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000F00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213E79F0F9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FC8009F
        bitmaps.teb[0] = 0x1FC8009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 36 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 38 tnr7_ims_1_2- inner node disablement
        // 39 tnr7_bc_1_2- inner node disablement
        // 40 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 41 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 42 tnr7_blend_1_1- inner node disablement
        // 43 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 44 tnr_scaler_fp_1_1- inner node disablement
        // 45 image_upscaler_1_1- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        // 50 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFF0078FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 38 tnr7_ims_1_2- inner node disablement
        // 39 tnr7_bc_1_2- inner node disablement
        // 40 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 41 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 42 tnr7_blend_1_1- inner node disablement
        // 43 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 44 tnr_scaler_fp_1_1- inner node disablement
        // 45 image_upscaler_1_1- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        // 50 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 38 tnr7_ims_1_2- inner node disablement
        // 39 tnr7_bc_1_2- inner node disablement
        // 40 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 41 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 42 tnr7_blend_1_1- inner node disablement
        // 43 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 44 tnr_scaler_fp_1_1- inner node disablement
        // 45 image_upscaler_1_1- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        // 50 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFF078FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 36 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 37 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 38 tnr7_ims_1_2- inner node disablement
        // 39 tnr7_bc_1_2- inner node disablement
        // 40 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 41 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 42 tnr7_blend_1_1- inner node disablement
        // 43 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 44 tnr_scaler_fp_1_1- inner node disablement
        // 45 image_upscaler_1_1- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        // 50 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FD9D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FD9D;
        // DEB - 0x000000000000E13E79F0F9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0x79F0F9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FC83F9F
        bitmaps.teb[0] = 0x3FC83F9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 51; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFF0078FFF00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3E00000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 55; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FFA009F
        bitmaps.teb[0] = 0x3FFA009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FFA1E9F
        bitmaps.teb[0] = 0x3FFA1E9F;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xF00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E13E79FFF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FFA009F
        bitmaps.teb[0] = 0x3FFA009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF8700000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C13E79FFF9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FFA3F9F
        bitmaps.teb[0] = 0x2FFA3F9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FFA009F
        bitmaps.teb[0] = 0x2FFA009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FFA1E9F
        bitmaps.teb[0] = 0x2FFA1E9F;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000F00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C13E79FFF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xC13E;
        // TEB - 0x000000002FFA009F
        bitmaps.teb[0] = 0x2FFA009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x000000000000213E79FFF9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FFA3F9F
        bitmaps.teb[0] = 0x1FFA3F9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FFA009F
        bitmaps.teb[0] = 0x1FFA009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8DBBF1F1
        bitmaps.deb[0] = 0x8DBBF1F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FFA1E9F
        bitmaps.teb[0] = 0x1FFA1E9F;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000F00000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x000000000000213E79FFF9CE8DA001F1
        bitmaps.deb[0] = 0x8DA001F1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0x213E;
        // TEB - 0x000000001FFA009F
        bitmaps.teb[0] = 0x1FFA009F;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000FF8700000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 41 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 tnr7_bc_1_2- inner node disablement
        // 44 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 45 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 46 tnr7_blend_1_1- inner node disablement
        // 47 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 48 tnr_scaler_fp_1_1- inner node disablement
        // 49 image_upscaler_1_1- inner node disablement
        // 50 cas_1_1- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFF0078FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 41 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 tnr7_bc_1_2- inner node disablement
        // 44 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 45 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 46 tnr7_blend_1_1- inner node disablement
        // 47 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 48 tnr_scaler_fp_1_1- inner node disablement
        // 49 image_upscaler_1_1- inner node disablement
        // 50 cas_1_1- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 41 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 tnr7_bc_1_2- inner node disablement
        // 44 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 45 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 46 tnr7_blend_1_1- inner node disablement
        // 47 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 48 tnr_scaler_fp_1_1- inner node disablement
        // 49 image_upscaler_1_1- inner node disablement
        // 50 cas_1_1- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFF078FFF00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 bnlm_3_4- inner node disablement
        // 11 bxt_demosaic- inner node disablement
        // 12 vcsc_2_0_b- inner node disablement
        // 13 gltm_2_0- inner node disablement
        // 14 xnr_5_4- inner node disablement
        // 15 vcr_3_1- inner node disablement
        // 16 glim_2_0- inner node disablement
        // 17 acm_1_2- inner node disablement
        // 18 gammatm_v4- inner node disablement
        // 19 csc_1_1- inner node disablement
        // 20 rgbs_grid_1_1- inner node disablement
        // 21 ccm_3a_2_0- inner node disablement
        // 22 fr_grid_1_0- inner node disablement
        // 23 b2i_ds_1_1- inner node disablement
        // 24 lbff_crop_espa_1_4- inner node disablement
        // 25 tnr7_spatial_1_1- inner node disablement
        // 26 tnr_scaler_lb_1_1- inner node disablement
        // 27 odr_awb_std_1_4- inner node disablement
        // 28 odr_awb_sat_1_4- inner node disablement
        // 29 aestatistics_2_1- inner node disablement
        // 30 odr_ae_1_4- inner node disablement
        // 31 odr_af_std_1_4- inner node disablement
        // 32 ifd_pdaf_1_4- inner node disablement
        // 33 pext_1_0- inner node disablement
        // 34 pafstatistics_1_2- inner node disablement
        // 35 odr_pdaf_1_4- inner node disablement
        // 36 ifd_gmv_1_4- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        // 40 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 41 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 tnr7_bc_1_2- inner node disablement
        // 44 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 45 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 46 tnr7_blend_1_1- inner node disablement
        // 47 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 48 tnr_scaler_fp_1_1- inner node disablement
        // 49 image_upscaler_1_1- inner node disablement
        // 50 cas_1_1- inner node disablement
        // 51 odr_ofs_mp_1_4- inner node disablement
        // 52 b2i_ds_output_1_1- inner node disablement
        // 53 odr_ofs_dp_1_4- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E13E79FFF9CE8DFBFFF1
        bitmaps.deb[0] = 0x8DFBFFF1;
        bitmaps.deb[1] = 0x79FFF9CE;
        bitmaps.deb[2] = 0xE13E;
        // TEB - 0x000000003FFA3F9F
        bitmaps.teb[0] = 0x3FFA3F9F;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 55; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFF0078FFF00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3E000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 67; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFFA009F
        bitmaps.teb[0] = 0xFFFA009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFFA1E9F
        bitmaps.teb[0] = 0xFFFA1E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFFA009F
        bitmaps.teb[0] = 0xFFFA009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FDBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FDBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFFA3F9F
        bitmaps.teb[0] = 0xEFFA3F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFFA009F
        bitmaps.teb[0] = 0xEFFA009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFFA1E9F
        bitmaps.teb[0] = 0xEFFA1E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C0000;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFFA009F
        bitmaps.teb[0] = 0xEFFA009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FDBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FDBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFFA3F9F
        bitmaps.teb[0] = 0xDFFA3F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[1] = 0x6;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFFA009F
        bitmaps.teb[0] = 0xDFFA009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
        disabledRunKernelsBitmap[1] = 0x6;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFFA1E9F
        bitmaps.teb[0] = 0xDFFA1E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F6FFE7
        bitmaps.reb[0] = 0xF2F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C0000;
        disabledRunKernelsBitmap[1] = 0x6;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFFA009F
        bitmaps.teb[0] = 0xDFFA009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F687E7
        bitmaps.reb[0] = 0xF2F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
        disabledRunKernelsBitmap[1] = 0x6;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 24 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 25 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 26 ifd_segmap_bnlm_1_4- inner node disablement
        // 27 smurf_bnlm_1_0- inner node disablement
        // 28 bnlm_3_4- inner node disablement
        // 29 bxt_demosaic- inner node disablement
        // 30 vcsc_2_0_b- inner node disablement
        // 31 gltm_2_0- inner node disablement
        // 32 ifd_segmap_xnr_1_4- inner node disablement
        // 33 smurf_xnr_1_0- inner node disablement
        // 34 xnr_5_4- inner node disablement
        // 35 vcr_3_1- inner node disablement
        // 36 glim_2_0- inner node disablement
        // 37 ifd_segmap_acm_1_4- inner node disablement
        // 38 smurf_acm_1_0- inner node disablement
        // 39 acm_1_2- inner node disablement
        // 40 gammatm_v4- inner node disablement
        // 41 csc_1_1- inner node disablement
        // 42 b2i_ds_1_1- inner node disablement
        // 43 lbff_crop_espa_1_4- inner node disablement
        // 44 tnr7_spatial_1_1- inner node disablement
        // 45 tnr_scaler_lb_1_1- inner node disablement
        // 46 tnr7_ims_1_2- inner node disablement
        // 47 gmv_statistics_1_1- inner node disablement
        // 48 odr_gmv_feature_1_4- inner node disablement
        // 49 odr_gmv_match_1_4- inner node disablement
        // 50 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 51 smurf_tnr_bc_1_0- inner node disablement
        // 52 tnr7_bc_1_2- inner node disablement
        // 53 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 54 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 55 smurf_tnr_blend_1_0- inner node disablement
        // 56 tnr7_blend_1_1- inner node disablement
        // 57 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 58 tnr_scaler_fp_1_1- inner node disablement
        // 59 image_upscaler_1_1- inner node disablement
        // 60 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 61 ifd_segmap_cas_1_4- inner node disablement
        // 62 smurf_cas_1_0- inner node disablement
        // 63 cas_1_1- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFC00300;
        disabledRunKernelsBitmap[1] = 0x7;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 24 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 25 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 26 ifd_segmap_bnlm_1_4- inner node disablement
        // 27 smurf_bnlm_1_0- inner node disablement
        // 28 bnlm_3_4- inner node disablement
        // 29 bxt_demosaic- inner node disablement
        // 30 vcsc_2_0_b- inner node disablement
        // 31 gltm_2_0- inner node disablement
        // 32 ifd_segmap_xnr_1_4- inner node disablement
        // 33 smurf_xnr_1_0- inner node disablement
        // 34 xnr_5_4- inner node disablement
        // 35 vcr_3_1- inner node disablement
        // 36 glim_2_0- inner node disablement
        // 37 ifd_segmap_acm_1_4- inner node disablement
        // 38 smurf_acm_1_0- inner node disablement
        // 39 acm_1_2- inner node disablement
        // 40 gammatm_v4- inner node disablement
        // 41 csc_1_1- inner node disablement
        // 42 b2i_ds_1_1- inner node disablement
        // 43 lbff_crop_espa_1_4- inner node disablement
        // 44 tnr7_spatial_1_1- inner node disablement
        // 45 tnr_scaler_lb_1_1- inner node disablement
        // 46 tnr7_ims_1_2- inner node disablement
        // 47 gmv_statistics_1_1- inner node disablement
        // 48 odr_gmv_feature_1_4- inner node disablement
        // 49 odr_gmv_match_1_4- inner node disablement
        // 50 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 51 smurf_tnr_bc_1_0- inner node disablement
        // 52 tnr7_bc_1_2- inner node disablement
        // 53 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 54 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 55 smurf_tnr_blend_1_0- inner node disablement
        // 56 tnr7_blend_1_1- inner node disablement
        // 57 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 58 tnr_scaler_fp_1_1- inner node disablement
        // 59 image_upscaler_1_1- inner node disablement
        // 60 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 61 ifd_segmap_cas_1_4- inner node disablement
        // 62 smurf_cas_1_0- inner node disablement
        // 63 cas_1_1- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x7;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 24 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 25 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 26 ifd_segmap_bnlm_1_4- inner node disablement
        // 27 smurf_bnlm_1_0- inner node disablement
        // 28 bnlm_3_4- inner node disablement
        // 29 bxt_demosaic- inner node disablement
        // 30 vcsc_2_0_b- inner node disablement
        // 31 gltm_2_0- inner node disablement
        // 32 ifd_segmap_xnr_1_4- inner node disablement
        // 33 smurf_xnr_1_0- inner node disablement
        // 34 xnr_5_4- inner node disablement
        // 35 vcr_3_1- inner node disablement
        // 36 glim_2_0- inner node disablement
        // 37 ifd_segmap_acm_1_4- inner node disablement
        // 38 smurf_acm_1_0- inner node disablement
        // 39 acm_1_2- inner node disablement
        // 40 gammatm_v4- inner node disablement
        // 41 csc_1_1- inner node disablement
        // 42 b2i_ds_1_1- inner node disablement
        // 43 lbff_crop_espa_1_4- inner node disablement
        // 44 tnr7_spatial_1_1- inner node disablement
        // 45 tnr_scaler_lb_1_1- inner node disablement
        // 46 tnr7_ims_1_2- inner node disablement
        // 47 gmv_statistics_1_1- inner node disablement
        // 48 odr_gmv_feature_1_4- inner node disablement
        // 49 odr_gmv_match_1_4- inner node disablement
        // 50 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 51 smurf_tnr_bc_1_0- inner node disablement
        // 52 tnr7_bc_1_2- inner node disablement
        // 53 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 54 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 55 smurf_tnr_blend_1_0- inner node disablement
        // 56 tnr7_blend_1_1- inner node disablement
        // 57 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 58 tnr_scaler_fp_1_1- inner node disablement
        // 59 image_upscaler_1_1- inner node disablement
        // 60 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 61 ifd_segmap_cas_1_4- inner node disablement
        // 62 smurf_cas_1_0- inner node disablement
        // 63 cas_1_1- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFC0300;
        disabledRunKernelsBitmap[1] = 0x7;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 24 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 25 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 26 ifd_segmap_bnlm_1_4- inner node disablement
        // 27 smurf_bnlm_1_0- inner node disablement
        // 28 bnlm_3_4- inner node disablement
        // 29 bxt_demosaic- inner node disablement
        // 30 vcsc_2_0_b- inner node disablement
        // 31 gltm_2_0- inner node disablement
        // 32 ifd_segmap_xnr_1_4- inner node disablement
        // 33 smurf_xnr_1_0- inner node disablement
        // 34 xnr_5_4- inner node disablement
        // 35 vcr_3_1- inner node disablement
        // 36 glim_2_0- inner node disablement
        // 37 ifd_segmap_acm_1_4- inner node disablement
        // 38 smurf_acm_1_0- inner node disablement
        // 39 acm_1_2- inner node disablement
        // 40 gammatm_v4- inner node disablement
        // 41 csc_1_1- inner node disablement
        // 42 b2i_ds_1_1- inner node disablement
        // 43 lbff_crop_espa_1_4- inner node disablement
        // 44 tnr7_spatial_1_1- inner node disablement
        // 45 tnr_scaler_lb_1_1- inner node disablement
        // 46 tnr7_ims_1_2- inner node disablement
        // 47 gmv_statistics_1_1- inner node disablement
        // 48 odr_gmv_feature_1_4- inner node disablement
        // 49 odr_gmv_match_1_4- inner node disablement
        // 50 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 51 smurf_tnr_bc_1_0- inner node disablement
        // 52 tnr7_bc_1_2- inner node disablement
        // 53 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 54 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 55 smurf_tnr_blend_1_0- inner node disablement
        // 56 tnr7_blend_1_1- inner node disablement
        // 57 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 58 tnr_scaler_fp_1_1- inner node disablement
        // 59 image_upscaler_1_1- inner node disablement
        // 60 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 61 ifd_segmap_cas_1_4- inner node disablement
        // 62 smurf_cas_1_0- inner node disablement
        // 63 cas_1_1- inner node disablement
        // 64 odr_ofs_mp_1_4- inner node disablement
        // 65 b2i_ds_output_1_1- inner node disablement
        // 66 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x7;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FDBD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x67FDBD;
        // DEB - 0x000000000000E1FFFFFFFFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFFA3F9F
        bitmaps.teb[0] = 0xFFFA3F9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF6F7FFE7
        bitmaps.reb[0] = 0xF6F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 67; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFC00300;
            disabledRunKernelsBitmap[1] |= 0x7;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xE800000000000000;
            disabledRunKernelsBitmap[1] |= 0x7;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerNoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 42; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F000009F
        bitmaps.teb[0] = 0xF000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0001E9F
        bitmaps.teb[0] = 0xE0001E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 39 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E000009F
        bitmaps.teb[0] = 0xE000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 39 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800001FE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0001E9F
        bitmaps.teb[0] = 0xD0001E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 40 b2i_ds_output_1_1- inner node disablement
        // 41 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D000009F
        bitmaps.teb[0] = 0xD000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 40 b2i_ds_output_1_1- inner node disablement
        // 41 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 17 ifd_segmap_bnlm_1_4- inner node disablement
        // 18 smurf_bnlm_1_0- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 ifd_segmap_xnr_1_4- inner node disablement
        // 24 smurf_xnr_1_0- inner node disablement
        // 25 xnr_5_4- inner node disablement
        // 26 vcr_3_1- inner node disablement
        // 27 glim_2_0- inner node disablement
        // 28 ifd_segmap_acm_1_4- inner node disablement
        // 29 smurf_acm_1_0- inner node disablement
        // 30 acm_1_2- inner node disablement
        // 31 gammatm_v4- inner node disablement
        // 32 csc_1_1- inner node disablement
        // 33 b2i_ds_1_1- inner node disablement
        // 34 lbff_crop_espa_1_4- inner node disablement
        // 35 image_upscaler_1_1- inner node disablement
        // 36 ifd_segmap_cas_1_4- inner node disablement
        // 37 smurf_cas_1_0- inner node disablement
        // 38 cas_1_1- inner node disablement
        // 39 odr_ofs_mp_1_4- inner node disablement
        // 40 b2i_ds_output_1_1- inner node disablement
        // 41 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFE0180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_segmap_bnlm_1_4- inner node disablement
        // 18 smurf_bnlm_1_0- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 ifd_segmap_xnr_1_4- inner node disablement
        // 24 smurf_xnr_1_0- inner node disablement
        // 25 xnr_5_4- inner node disablement
        // 26 vcr_3_1- inner node disablement
        // 27 glim_2_0- inner node disablement
        // 28 ifd_segmap_acm_1_4- inner node disablement
        // 29 smurf_acm_1_0- inner node disablement
        // 30 acm_1_2- inner node disablement
        // 31 gammatm_v4- inner node disablement
        // 32 csc_1_1- inner node disablement
        // 33 b2i_ds_1_1- inner node disablement
        // 34 lbff_crop_espa_1_4- inner node disablement
        // 35 image_upscaler_1_1- inner node disablement
        // 36 ifd_segmap_cas_1_4- inner node disablement
        // 37 smurf_cas_1_0- inner node disablement
        // 38 cas_1_1- inner node disablement
        // 39 odr_ofs_mp_1_4- inner node disablement
        // 40 b2i_ds_output_1_1- inner node disablement
        // 41 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064009D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0001E9F
        bitmaps.teb[0] = 0xF0001E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerNoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 42; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFE0180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F800000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerWithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F032009F
        bitmaps.teb[0] = 0xF032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0321E9F
        bitmaps.teb[0] = 0xE0321E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E032009F
        bitmaps.teb[0] = 0xE032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0321E9F
        bitmaps.teb[0] = 0xD0321E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x300000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D032009F
        bitmaps.teb[0] = 0xD032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000001FE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 17 ifd_gmv_1_4- inner node disablement
        // 18 ifd_segmap_bnlm_1_4- inner node disablement
        // 19 smurf_bnlm_1_0- inner node disablement
        // 20 bnlm_3_4- inner node disablement
        // 21 bxt_demosaic- inner node disablement
        // 22 vcsc_2_0_b- inner node disablement
        // 23 gltm_2_0- inner node disablement
        // 24 ifd_segmap_xnr_1_4- inner node disablement
        // 25 smurf_xnr_1_0- inner node disablement
        // 26 xnr_5_4- inner node disablement
        // 27 vcr_3_1- inner node disablement
        // 28 glim_2_0- inner node disablement
        // 29 ifd_segmap_acm_1_4- inner node disablement
        // 30 smurf_acm_1_0- inner node disablement
        // 31 acm_1_2- inner node disablement
        // 32 gammatm_v4- inner node disablement
        // 33 csc_1_1- inner node disablement
        // 34 b2i_ds_1_1- inner node disablement
        // 35 lbff_crop_espa_1_4- inner node disablement
        // 36 image_upscaler_1_1- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        // 40 ifd_segmap_cas_1_4- inner node disablement
        // 41 smurf_cas_1_0- inner node disablement
        // 42 cas_1_1- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFE0180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_gmv_1_4- inner node disablement
        // 18 ifd_segmap_bnlm_1_4- inner node disablement
        // 19 smurf_bnlm_1_0- inner node disablement
        // 20 bnlm_3_4- inner node disablement
        // 21 bxt_demosaic- inner node disablement
        // 22 vcsc_2_0_b- inner node disablement
        // 23 gltm_2_0- inner node disablement
        // 24 ifd_segmap_xnr_1_4- inner node disablement
        // 25 smurf_xnr_1_0- inner node disablement
        // 26 xnr_5_4- inner node disablement
        // 27 vcr_3_1- inner node disablement
        // 28 glim_2_0- inner node disablement
        // 29 ifd_segmap_acm_1_4- inner node disablement
        // 30 smurf_acm_1_0- inner node disablement
        // 31 acm_1_2- inner node disablement
        // 32 gammatm_v4- inner node disablement
        // 33 csc_1_1- inner node disablement
        // 34 b2i_ds_1_1- inner node disablement
        // 35 lbff_crop_espa_1_4- inner node disablement
        // 36 image_upscaler_1_1- inner node disablement
        // 37 gmv_statistics_1_1- inner node disablement
        // 38 odr_gmv_feature_1_4- inner node disablement
        // 39 odr_gmv_match_1_4- inner node disablement
        // 40 ifd_segmap_cas_1_4- inner node disablement
        // 41 smurf_cas_1_0- inner node disablement
        // 42 cas_1_1- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED9BF1F1
        bitmaps.deb[0] = 0xED9BF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0321E9F
        bitmaps.teb[0] = 0xF0321E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FE7
        bitmaps.reb[0] = 0x12F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerWithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFE0180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F1000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerNoGmvWithTnrWithOpacityOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13FFFF0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFFF0F9CE;
        bitmaps.deb[2] = 0xE13F;
        // TEB - 0x000000063FC0009F
        bitmaps.teb[0] = 0x3FC0009F;
        bitmaps.teb[1] = 0x6;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C380000;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13FFFF0F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xFFF0F9CE;
        bitmaps.deb[2] = 0xC13F;
        // TEB - 0x000000062FC01E9F
        bitmaps.teb[0] = 0x2FC01E9F;
        bitmaps.teb[1] = 0x6;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C13FFFF0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFFF0F9CE;
        bitmaps.deb[2] = 0xC13F;
        // TEB - 0x000000062FC0009F
        bitmaps.teb[0] = 0x2FC0009F;
        bitmaps.teb[1] = 0x6;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40007C380000;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213FFFF0F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xFFF0F9CE;
        bitmaps.deb[2] = 0x213F;
        // TEB - 0x000000061FC01E9F
        bitmaps.teb[0] = 0x1FC01E9F;
        bitmaps.teb[1] = 0x6;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x000000000000213FFFF0F9CE8D8001F1
        bitmaps.deb[0] = 0x8D8001F1;
        bitmaps.deb[1] = 0xFFF0F9CE;
        bitmaps.deb[2] = 0x213F;
        // TEB - 0x000000061FC0009F
        bitmaps.teb[0] = 0x1FC0009F;
        bitmaps.teb[1] = 0x6;
        // REB - 0x00000000000000000000001FF2F607E7
        bitmaps.reb[0] = 0xF2F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180007C380000;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019BF1F1
        bitmaps.deb[0] = 0x19BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000002007FE7
        bitmaps.reb[0] = 0x2007FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 31 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 32 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 33 tnr7_ims_1_2- inner node disablement
        // 34 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 35 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 36 smurf_tnr_bc_1_0- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 40 smurf_tnr_blend_1_0- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFF83C7FF80;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 bnlm_3_4- inner node disablement
        // 10 bxt_demosaic- inner node disablement
        // 11 vcsc_2_0_b- inner node disablement
        // 12 gltm_2_0- inner node disablement
        // 13 xnr_5_4- inner node disablement
        // 14 vcr_3_1- inner node disablement
        // 15 glim_2_0- inner node disablement
        // 16 acm_1_2- inner node disablement
        // 17 gammatm_v4- inner node disablement
        // 18 csc_1_1- inner node disablement
        // 19 rgbs_grid_1_1- inner node disablement
        // 20 ccm_3a_2_0- inner node disablement
        // 21 fr_grid_1_0- inner node disablement
        // 22 b2i_ds_1_1- inner node disablement
        // 23 lbff_crop_espa_1_4- inner node disablement
        // 24 tnr7_spatial_1_1- inner node disablement
        // 25 tnr_scaler_lb_1_1- inner node disablement
        // 26 odr_awb_std_1_4- inner node disablement
        // 27 odr_awb_sat_1_4- inner node disablement
        // 28 aestatistics_2_1- inner node disablement
        // 29 odr_ae_1_4- inner node disablement
        // 30 odr_af_std_1_4- inner node disablement
        // 31 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 32 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 33 tnr7_ims_1_2- inner node disablement
        // 34 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 35 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 36 smurf_tnr_bc_1_0- inner node disablement
        // 37 tnr7_bc_1_2- inner node disablement
        // 38 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 39 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 40 smurf_tnr_blend_1_0- inner node disablement
        // 41 tnr7_blend_1_1- inner node disablement
        // 42 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 43 tnr_scaler_fp_1_1- inner node disablement
        // 44 image_upscaler_1_1- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        // 49 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E13FFFF0F9CE8D9BF1F1
        bitmaps.deb[0] = 0x8D9BF1F1;
        bitmaps.deb[1] = 0xFFF0F9CE;
        bitmaps.deb[2] = 0xE13F;
        // TEB - 0x000000063FC01E9F
        bitmaps.teb[0] = 0x3FC01E9F;
        bitmaps.teb[1] = 0x6;
        // REB - 0x00000000000000000000001FF2F67FE7
        bitmaps.reb[0] = 0xF2F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerNoGmvWithTnrWithOpacityOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFF83C7FF80;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F00000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2NoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F000009F
        bitmaps.teb[0] = 0xF000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044019D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x44019D;
        // DEB - 0x000000000000C1E00000FFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0003F9F
        bitmaps.teb[0] = 0xE0003F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E000009F
        bitmaps.teb[0] = 0xE000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024019D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x24019D;
        // DEB - 0x00000000000021E00000FFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0003F9F
        bitmaps.teb[0] = 0xD0003F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x300000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D000009F
        bitmaps.teb[0] = 0xD000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 ifd_segmap_cas_1_4- inner node disablement
        // 41 smurf_cas_1_0- inner node disablement
        // 42 cas_1_1- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFE00180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 ifd_segmap_cas_1_4- inner node disablement
        // 41 smurf_cas_1_0- inner node disablement
        // 42 cas_1_1- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064019D501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x64019D;
        // DEB - 0x000000000000E1E00000FFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0003F9F
        bitmaps.teb[0] = 0xF0003F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2NoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFE00180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F8000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf2WithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F032009F
        bitmaps.teb[0] = 0xF032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004401BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x4401BD;
        // DEB - 0x000000000000C1E0000FFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0323F9F
        bitmaps.teb[0] = 0xE0323F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E032009F
        bitmaps.teb[0] = 0xE032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002401BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x2401BD;
        // DEB - 0x00000000000021E0000FFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0323F9F
        bitmaps.teb[0] = 0xD0323F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D032009F
        bitmaps.teb[0] = 0xD032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607E7
        bitmaps.reb[0] = 0x12F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x30000001FFE00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180001E6811
        bitmaps.rbm[0] = 0x1E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFFF1
        bitmaps.deb[0] = 0x1DBFFF1;
        // TEB - 0x0000000000003F97
        bitmaps.teb[0] = 0x3F97;
        // REB - 0x00000000000000000000000006017FE7
        bitmaps.reb[0] = 0x6017FE7;

        // Kernels disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 gmv_statistics_1_1- inner node disablement
        // 42 odr_gmv_feature_1_4- inner node disablement
        // 43 odr_gmv_match_1_4- inner node disablement
        // 44 ifd_segmap_cas_1_4- inner node disablement
        // 45 smurf_cas_1_0- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFE00180;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgb_ir_2_0- inner node disablement
        // 5 ifd_lsc_1_4- inner node disablement
        // 6 lsc_1_2- inner node disablement
        // 7 gd_2_2- inner node disablement
        // 8 wb_1_1- inner node disablement
        // 9 rgbs_grid_1_1- inner node disablement
        // 10 ccm_3a_2_0- inner node disablement
        // 11 fr_grid_1_0- inner node disablement
        // 12 odr_awb_std_1_4- inner node disablement
        // 13 odr_awb_sat_1_4- inner node disablement
        // 14 aestatistics_2_1- inner node disablement
        // 15 odr_ae_1_4- inner node disablement
        // 16 odr_af_std_1_4- inner node disablement
        // 17 ifd_pdaf_1_4- inner node disablement
        // 18 pext_1_0- inner node disablement
        // 19 pafstatistics_1_2- inner node disablement
        // 20 odr_pdaf_1_4- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 gmv_statistics_1_1- inner node disablement
        // 42 odr_gmv_feature_1_4- inner node disablement
        // 43 odr_gmv_match_1_4- inner node disablement
        // 44 ifd_segmap_cas_1_4- inner node disablement
        // 45 smurf_cas_1_0- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006401BD501F6811
        bitmaps.rbm[0] = 0x501F6811;
        bitmaps.rbm[1] = 0x6401BD;
        // DEB - 0x000000000000E1E0000FFFFEEDDBFFF1
        bitmaps.deb[0] = 0xEDDBFFF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0323F9F
        bitmaps.teb[0] = 0xF0323F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F77FE7
        bitmaps.reb[0] = 0x16F77FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf2WithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[4].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFE00180;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F10000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3NoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 45; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F000009F
        bitmaps.teb[0] = 0xF000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044019D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x44019D;
        // DEB - 0x000000000000C1E00000FFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0003E9F
        bitmaps.teb[0] = 0xE0003E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E000009F
        bitmaps.teb[0] = 0xE000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024019D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x24019D;
        // DEB - 0x00000000000021E00000FFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0003E9F
        bitmaps.teb[0] = 0xD0003E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D000009F
        bitmaps.teb[0] = 0xD000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 ifd_segmap_cas_1_4- inner node disablement
        // 40 smurf_cas_1_0- inner node disablement
        // 41 cas_1_1- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFF00C00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 ifd_segmap_cas_1_4- inner node disablement
        // 40 smurf_cas_1_0- inner node disablement
        // 41 cas_1_1- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064019D581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x64019D;
        // DEB - 0x000000000000E1E00000FFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0003E9F
        bitmaps.teb[0] = 0xF0003E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3NoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 45; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFFF00C00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1FC000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3WithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F032009F
        bitmaps.teb[0] = 0xF032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004401BD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x4401BD;
        // DEB - 0x000000000000C1E0000FFFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0323E9F
        bitmaps.teb[0] = 0xE0323E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E032009F
        bitmaps.teb[0] = 0xE032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002401BD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x2401BD;
        // DEB - 0x00000000000021E0000FFFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0323E9F
        bitmaps.teb[0] = 0xD0323E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD58016811
        bitmaps.rbm[0] = 0x58016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D032009F
        bitmaps.teb[0] = 0xD032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F787E7
        bitmaps.reb[0] = 0x16F787E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 pext_1_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000FF0D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180081E6811
        bitmaps.rbm[0] = 0x81E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001DBFDF1
        bitmaps.deb[0] = 0x1DBFDF1;
        // TEB - 0x0000000000003E97
        bitmaps.teb[0] = 0x3E97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        // 43 ifd_segmap_cas_1_4- inner node disablement
        // 44 smurf_cas_1_0- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFF00C00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 pext_1_0- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 pafstatistics_1_2- inner node disablement
        // 7 odr_pdaf_1_4- inner node disablement
        // 8 ifd_lsc_1_4- inner node disablement
        // 9 lsc_1_2- inner node disablement
        // 10 gd_2_2- inner node disablement
        // 11 wb_1_1- inner node disablement
        // 12 rgbs_grid_1_1- inner node disablement
        // 13 ccm_3a_2_0- inner node disablement
        // 14 fr_grid_1_0- inner node disablement
        // 15 odr_awb_std_1_4- inner node disablement
        // 16 odr_awb_sat_1_4- inner node disablement
        // 17 aestatistics_2_1- inner node disablement
        // 18 odr_ae_1_4- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        // 43 ifd_segmap_cas_1_4- inner node disablement
        // 44 smurf_cas_1_0- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006401BD581F6811
        bitmaps.rbm[0] = 0x581F6811;
        bitmaps.rbm[1] = 0x6401BD;
        // DEB - 0x000000000000E1E0000FFFFEEDDBFDF1
        bitmaps.deb[0] = 0xEDDBFDF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0323E9F
        bitmaps.teb[0] = 0xF0323E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3WithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFFFF00C00;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F88000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void IsysDolWithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysDolWithCvOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

void LbffDol2InputsNoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 45; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F00000BF
        bitmaps.teb[0] = 0xF00000BF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0041EBF
        bitmaps.teb[0] = 0xE0041EBF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E00000BF
        bitmaps.teb[0] = 0xE00000BF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0041EBF
        bitmaps.teb[0] = 0xD0041EBF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D00000BF
        bitmaps.teb[0] = 0xD00000BF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 ifd_segmap_cas_1_4- inner node disablement
        // 40 smurf_cas_1_0- inner node disablement
        // 41 cas_1_1- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFF30000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 ifd_segmap_cas_1_4- inner node disablement
        // 40 smurf_cas_1_0- inner node disablement
        // 41 cas_1_1- inner node disablement
        // 42 odr_ofs_mp_1_4- inner node disablement
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0041EBF
        bitmaps.teb[0] = 0xF0041EBF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsNoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 45; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFFF30000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1FC000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol2InputsWithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F03200BF
        bitmaps.teb[0] = 0xF03200BF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0361EBF
        bitmaps.teb[0] = 0xE0361EBF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E03200BF
        bitmaps.teb[0] = 0xE03200BF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0361EBF
        bitmaps.teb[0] = 0xD0361EBF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D03200BF
        bitmaps.teb[0] = 0xD03200BF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        // 43 ifd_segmap_cas_1_4- inner node disablement
        // 44 smurf_cas_1_0- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFF30000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 gmv_statistics_1_1- inner node disablement
        // 41 odr_gmv_feature_1_4- inner node disablement
        // 42 odr_gmv_match_1_4- inner node disablement
        // 43 ifd_segmap_cas_1_4- inner node disablement
        // 44 smurf_cas_1_0- inner node disablement
        // 45 cas_1_1- inner node disablement
        // 46 odr_ofs_mp_1_4- inner node disablement
        // 47 b2i_ds_output_1_1- inner node disablement
        // 48 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0361EBF
        bitmaps.teb[0] = 0xF0361EBF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsWithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 49; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFFFF30000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1F88000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol2InputsNoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 61; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC000BF
        bitmaps.teb[0] = 0xFFC000BF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC41EBF
        bitmaps.teb[0] = 0xEFC41EBF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC000BF
        bitmaps.teb[0] = 0xEFC000BF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC41EBF
        bitmaps.teb[0] = 0xDFC41EBF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC000BF
        bitmaps.teb[0] = 0xDFC000BF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 45 smurf_tnr_bc_1_0- inner node disablement
        // 46 tnr7_bc_1_2- inner node disablement
        // 47 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 48 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 49 smurf_tnr_blend_1_0- inner node disablement
        // 50 tnr7_blend_1_1- inner node disablement
        // 51 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 52 tnr_scaler_fp_1_1- inner node disablement
        // 53 image_upscaler_1_1- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 55 ifd_segmap_cas_1_4- inner node disablement
        // 56 smurf_cas_1_0- inner node disablement
        // 57 cas_1_1- inner node disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFF30000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 45 smurf_tnr_bc_1_0- inner node disablement
        // 46 tnr7_bc_1_2- inner node disablement
        // 47 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 48 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 49 smurf_tnr_blend_1_0- inner node disablement
        // 50 tnr7_blend_1_1- inner node disablement
        // 51 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 52 tnr_scaler_fp_1_1- inner node disablement
        // 53 image_upscaler_1_1- inner node disablement
        // 54 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 55 ifd_segmap_cas_1_4- inner node disablement
        // 56 smurf_cas_1_0- inner node disablement
        // 57 cas_1_1- inner node disablement
        // 58 odr_ofs_mp_1_4- inner node disablement
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC41EBF
        bitmaps.teb[0] = 0xFFC41EBF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsNoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 61; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x1FFFFFFFFFF30000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x1FA0000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol2InputsWithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 65; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF200BF
        bitmaps.teb[0] = 0xFFF200BF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC3EC0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF61EBF
        bitmaps.teb[0] = 0xEFF61EBF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF200BF
        bitmaps.teb[0] = 0xEFF200BF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000C3EC0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF61EBF
        bitmaps.teb[0] = 0xDFF61EBF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000000000;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001FB
        bitmaps.deb[0] = 0xED8001FB;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF200BF
        bitmaps.teb[0] = 0xDFF200BF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000000C3EC0;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FB
        bitmaps.deb[0] = 0x19FF1FB;
        // TEB - 0x0000000000041EBF
        bitmaps.teb[0] = 0x41EBF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 gmv_statistics_1_1- inner node disablement
        // 46 odr_gmv_feature_1_4- inner node disablement
        // 47 odr_gmv_match_1_4- inner node disablement
        // 48 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 49 smurf_tnr_bc_1_0- inner node disablement
        // 50 tnr7_bc_1_2- inner node disablement
        // 51 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 52 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 53 smurf_tnr_blend_1_0- inner node disablement
        // 54 tnr7_blend_1_1- inner node disablement
        // 55 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 56 tnr_scaler_fp_1_1- inner node disablement
        // 57 image_upscaler_1_1- inner node disablement
        // 58 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 59 ifd_segmap_cas_1_4- inner node disablement
        // 60 smurf_cas_1_0- inner node disablement
        // 61 cas_1_1- inner node disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFF30000;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 dol_lite_1_2- inner node disablement
        // 3 bxt_blc- inner node disablement
        // 4 linearization2_0- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 rgbs_grid_1_1- inner node disablement
        // 7 ccm_3a_2_0- inner node disablement
        // 8 rgb_ir_2_0- inner node disablement
        // 9 odr_awb_std_1_4- inner node disablement
        // 10 odr_awb_sve_1_4- inner node disablement
        // 11 odr_awb_sat_1_4- inner node disablement
        // 12 aestatistics_2_1- inner node disablement
        // 13 odr_ae_1_4- inner node disablement
        // 14 ifd_lsc_1_4- inner node disablement
        // 15 lsc_1_2- inner node disablement
        // 16 gd_2_2- inner node disablement
        // 17 wb_1_1- inner node disablement
        // 18 fr_grid_1_0- inner node disablement
        // 19 odr_af_std_1_4- inner node disablement
        // 20 ifd_gmv_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 gmv_statistics_1_1- inner node disablement
        // 46 odr_gmv_feature_1_4- inner node disablement
        // 47 odr_gmv_match_1_4- inner node disablement
        // 48 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 49 smurf_tnr_bc_1_0- inner node disablement
        // 50 tnr7_bc_1_2- inner node disablement
        // 51 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 52 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 53 smurf_tnr_blend_1_0- inner node disablement
        // 54 tnr7_blend_1_1- inner node disablement
        // 55 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 56 tnr_scaler_fp_1_1- inner node disablement
        // 57 image_upscaler_1_1- inner node disablement
        // 58 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 59 ifd_segmap_cas_1_4- inner node disablement
        // 60 smurf_cas_1_0- inner node disablement
        // 61 cas_1_1- inner node disablement
        // 62 odr_ofs_mp_1_4- inner node disablement
        // 63 b2i_ds_output_1_1- inner node disablement
        // 64 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x1;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED9FF1FB
        bitmaps.deb[0] = 0xED9FF1FB;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF61EBF
        bitmaps.teb[0] = 0xFFF61EBF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol2InputsWithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 65; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[8].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[17].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFF30000;
            disabledRunKernelsBitmap[1] |= 0x1;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xFA00000000000000;
            disabledRunKernelsBitmap[1] |= 0x1;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsNoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F00000FF
        bitmaps.teb[0] = 0xF00000FF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0041EFF
        bitmaps.teb[0] = 0xE0041EFF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E00000FF
        bitmaps.teb[0] = 0xE00000FF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x80000187D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0041EFF
        bitmaps.teb[0] = 0xD0041EFF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x300000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D00000FF
        bitmaps.teb[0] = 0xD00000FF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x300000187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 ifd_segmap_cas_1_4- inner node disablement
        // 41 smurf_cas_1_0- inner node disablement
        // 42 cas_1_1- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFE60000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 21 ifd_segmap_bnlm_1_4- inner node disablement
        // 22 smurf_bnlm_1_0- inner node disablement
        // 23 bnlm_3_4- inner node disablement
        // 24 bxt_demosaic- inner node disablement
        // 25 vcsc_2_0_b- inner node disablement
        // 26 gltm_2_0- inner node disablement
        // 27 ifd_segmap_xnr_1_4- inner node disablement
        // 28 smurf_xnr_1_0- inner node disablement
        // 29 xnr_5_4- inner node disablement
        // 30 vcr_3_1- inner node disablement
        // 31 glim_2_0- inner node disablement
        // 32 ifd_segmap_acm_1_4- inner node disablement
        // 33 smurf_acm_1_0- inner node disablement
        // 34 acm_1_2- inner node disablement
        // 35 gammatm_v4- inner node disablement
        // 36 csc_1_1- inner node disablement
        // 37 b2i_ds_1_1- inner node disablement
        // 38 lbff_crop_espa_1_4- inner node disablement
        // 39 image_upscaler_1_1- inner node disablement
        // 40 ifd_segmap_cas_1_4- inner node disablement
        // 41 smurf_cas_1_0- inner node disablement
        // 42 cas_1_1- inner node disablement
        // 43 odr_ofs_mp_1_4- inner node disablement
        // 44 b2i_ds_output_1_1- inner node disablement
        // 45 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064009D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0041EFF
        bitmaps.teb[0] = 0xF0041EFF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsNoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 46; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFE60000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F8000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsWithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F03200FF
        bitmaps.teb[0] = 0xF03200FF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0361EFF
        bitmaps.teb[0] = 0xE0361EFF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E03200FF
        bitmaps.teb[0] = 0xE03200FF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000187D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0361EFF
        bitmaps.teb[0] = 0xD0361EFF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D03200FF
        bitmaps.teb[0] = 0xD03200FF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F607F7
        bitmaps.reb[0] = 0x12F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 gmv_statistics_1_1- inner node disablement
        // 42 odr_gmv_feature_1_4- inner node disablement
        // 43 odr_gmv_match_1_4- inner node disablement
        // 44 ifd_segmap_cas_1_4- inner node disablement
        // 45 smurf_cas_1_0- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFE60000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 gmv_statistics_1_1- inner node disablement
        // 42 odr_gmv_feature_1_4- inner node disablement
        // 43 odr_gmv_match_1_4- inner node disablement
        // 44 ifd_segmap_cas_1_4- inner node disablement
        // 45 smurf_cas_1_0- inner node disablement
        // 46 cas_1_1- inner node disablement
        // 47 odr_ofs_mp_1_4- inner node disablement
        // 48 b2i_ds_output_1_1- inner node disablement
        // 49 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400BD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0361EFF
        bitmaps.teb[0] = 0xF0361EFF;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F67FF7
        bitmaps.reb[0] = 0x12F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsWithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 50; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFE60000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F10000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsNoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 62; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC000FF
        bitmaps.teb[0] = 0xFFC000FF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC41EFF
        bitmaps.teb[0] = 0xEFC41EFF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC000FF
        bitmaps.teb[0] = 0xEFC000FF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x800000000187D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC41EFF
        bitmaps.teb[0] = 0xDFC41EFF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC000FF
        bitmaps.teb[0] = 0xDFC000FF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3000000000187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 46 smurf_tnr_bc_1_0- inner node disablement
        // 47 tnr7_bc_1_2- inner node disablement
        // 48 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 49 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 50 smurf_tnr_blend_1_0- inner node disablement
        // 51 tnr7_blend_1_1- inner node disablement
        // 52 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 53 tnr_scaler_fp_1_1- inner node disablement
        // 54 image_upscaler_1_1- inner node disablement
        // 55 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 56 ifd_segmap_cas_1_4- inner node disablement
        // 57 smurf_cas_1_0- inner node disablement
        // 58 cas_1_1- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFE60000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 23 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 24 ifd_segmap_bnlm_1_4- inner node disablement
        // 25 smurf_bnlm_1_0- inner node disablement
        // 26 bnlm_3_4- inner node disablement
        // 27 bxt_demosaic- inner node disablement
        // 28 vcsc_2_0_b- inner node disablement
        // 29 gltm_2_0- inner node disablement
        // 30 ifd_segmap_xnr_1_4- inner node disablement
        // 31 smurf_xnr_1_0- inner node disablement
        // 32 xnr_5_4- inner node disablement
        // 33 vcr_3_1- inner node disablement
        // 34 glim_2_0- inner node disablement
        // 35 ifd_segmap_acm_1_4- inner node disablement
        // 36 smurf_acm_1_0- inner node disablement
        // 37 acm_1_2- inner node disablement
        // 38 gammatm_v4- inner node disablement
        // 39 csc_1_1- inner node disablement
        // 40 b2i_ds_1_1- inner node disablement
        // 41 lbff_crop_espa_1_4- inner node disablement
        // 42 tnr7_spatial_1_1- inner node disablement
        // 43 tnr_scaler_lb_1_1- inner node disablement
        // 44 tnr7_ims_1_2- inner node disablement
        // 45 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 46 smurf_tnr_bc_1_0- inner node disablement
        // 47 tnr7_bc_1_2- inner node disablement
        // 48 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 49 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 50 smurf_tnr_blend_1_0- inner node disablement
        // 51 tnr7_blend_1_1- inner node disablement
        // 52 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 53 tnr_scaler_fp_1_1- inner node disablement
        // 54 image_upscaler_1_1- inner node disablement
        // 55 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 56 ifd_segmap_cas_1_4- inner node disablement
        // 57 smurf_cas_1_0- inner node disablement
        // 58 cas_1_1- inner node disablement
        // 59 odr_ofs_mp_1_4- inner node disablement
        // 60 b2i_ds_output_1_1- inner node disablement
        // 61 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC9D52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC41EFF
        bitmaps.teb[0] = 0xFFC41EFF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsNoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 62; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x3FFFFFFFFFE60000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x3F40000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffDol3InputsWithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 66; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF200FF
        bitmaps.teb[0] = 0xFFF200FF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x187D80;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF61EFF
        bitmaps.teb[0] = 0xEFF61EFF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF200FF
        bitmaps.teb[0] = 0xEFF200FF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x8000000000187D80;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF61EFF
        bitmaps.teb[0] = 0xDFF61EFF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016816
        bitmaps.rbm[0] = 0x50016816;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001FF
        bitmaps.deb[0] = 0xED8001FF;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF200FF
        bitmaps.teb[0] = 0xDFF200FF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F607F7
        bitmaps.reb[0] = 0xF2F607F7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x187D80;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000008002526E16
        bitmaps.rbm[0] = 0x2526E16;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1FF
        bitmaps.deb[0] = 0x19FF1FF;
        // TEB - 0x0000000000041EFF
        bitmaps.teb[0] = 0x41EFF;
        // REB - 0x00000000000000000000000002007FF7
        bitmaps.reb[0] = 0x2007FF7;

        // Kernels disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 gmv_statistics_1_1- inner node disablement
        // 47 odr_gmv_feature_1_4- inner node disablement
        // 48 odr_gmv_match_1_4- inner node disablement
        // 49 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 50 smurf_tnr_bc_1_0- inner node disablement
        // 51 tnr7_bc_1_2- inner node disablement
        // 52 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 53 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 54 smurf_tnr_blend_1_0- inner node disablement
        // 55 tnr7_blend_1_1- inner node disablement
        // 56 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 57 tnr_scaler_fp_1_1- inner node disablement
        // 58 image_upscaler_1_1- inner node disablement
        // 59 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 60 ifd_segmap_cas_1_4- inner node disablement
        // 61 smurf_cas_1_0- inner node disablement
        // 62 cas_1_1- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFE60000;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 ifd_pipe_long_1_4- inner node disablement
        // 2 ifd_pipe_short_smth_1_4- inner node disablement
        // 3 dol_lite_1_2- inner node disablement
        // 4 bxt_blc- inner node disablement
        // 5 linearization2_0- inner node disablement
        // 6 dpc_2_2- inner node disablement
        // 7 rgbs_grid_1_1- inner node disablement
        // 8 ccm_3a_2_0- inner node disablement
        // 9 rgb_ir_2_0- inner node disablement
        // 10 odr_awb_std_1_4- inner node disablement
        // 11 odr_awb_sve_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 ifd_lsc_1_4- inner node disablement
        // 16 lsc_1_2- inner node disablement
        // 17 gd_2_2- inner node disablement
        // 18 wb_1_1- inner node disablement
        // 19 fr_grid_1_0- inner node disablement
        // 20 odr_af_std_1_4- inner node disablement
        // 21 ifd_gmv_1_4- inner node disablement
        // 22 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 23 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 24 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 25 ifd_segmap_bnlm_1_4- inner node disablement
        // 26 smurf_bnlm_1_0- inner node disablement
        // 27 bnlm_3_4- inner node disablement
        // 28 bxt_demosaic- inner node disablement
        // 29 vcsc_2_0_b- inner node disablement
        // 30 gltm_2_0- inner node disablement
        // 31 ifd_segmap_xnr_1_4- inner node disablement
        // 32 smurf_xnr_1_0- inner node disablement
        // 33 xnr_5_4- inner node disablement
        // 34 vcr_3_1- inner node disablement
        // 35 glim_2_0- inner node disablement
        // 36 ifd_segmap_acm_1_4- inner node disablement
        // 37 smurf_acm_1_0- inner node disablement
        // 38 acm_1_2- inner node disablement
        // 39 gammatm_v4- inner node disablement
        // 40 csc_1_1- inner node disablement
        // 41 b2i_ds_1_1- inner node disablement
        // 42 lbff_crop_espa_1_4- inner node disablement
        // 43 tnr7_spatial_1_1- inner node disablement
        // 44 tnr_scaler_lb_1_1- inner node disablement
        // 45 tnr7_ims_1_2- inner node disablement
        // 46 gmv_statistics_1_1- inner node disablement
        // 47 odr_gmv_feature_1_4- inner node disablement
        // 48 odr_gmv_match_1_4- inner node disablement
        // 49 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 50 smurf_tnr_bc_1_0- inner node disablement
        // 51 tnr7_bc_1_2- inner node disablement
        // 52 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 53 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 54 smurf_tnr_blend_1_0- inner node disablement
        // 55 tnr7_blend_1_1- inner node disablement
        // 56 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 57 tnr_scaler_fp_1_1- inner node disablement
        // 58 image_upscaler_1_1- inner node disablement
        // 59 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 60 ifd_segmap_cas_1_4- inner node disablement
        // 61 smurf_cas_1_0- inner node disablement
        // 62 cas_1_1- inner node disablement
        // 63 odr_ofs_mp_1_4- inner node disablement
        // 64 b2i_ds_output_1_1- inner node disablement
        // 65 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
        disabledRunKernelsBitmap[1] = 0x3;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCBD52536E16
        bitmaps.rbm[0] = 0x52536E16;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED9FF1FF
        bitmaps.deb[0] = 0xED9FF1FF;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF61EFF
        bitmaps.teb[0] = 0xFFF61EFF;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF2F67FF7
        bitmaps.reb[0] = 0xF2F67FF7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffDol3InputsWithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 66; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[9].run_kernel.enable = 0; // rgb_ir_2_0
    nodeKernels.kernelList[18].run_kernel.enable = 0; // wb_1_1

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFE60000;
            disabledRunKernelsBitmap[1] |= 0x3;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xF400000000000000;
            disabledRunKernelsBitmap[1] |= 0x3;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrNoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 44; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400DD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400DD;
        // DEB - 0x000000000000E1E00000FFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F000409F
        bitmaps.teb[0] = 0xF000409F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0041E9F
        bitmaps.teb[0] = 0xF0041E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F000009F
        bitmaps.teb[0] = 0xF000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400DD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x4400DD;
        // DEB - 0x000000000000C1E00000FFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0045E9F
        bitmaps.teb[0] = 0xE0045E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400DD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400DD;
        // DEB - 0x000000000000C1E00000FFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E000409F
        bitmaps.teb[0] = 0xE000409F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000007C390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0041E9F
        bitmaps.teb[0] = 0xE0041E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E000009F
        bitmaps.teb[0] = 0xE000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400DD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x2400DD;
        // DEB - 0x00000000000021E00000FFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0045E9F
        bitmaps.teb[0] = 0xD0045E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400DD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400DD;
        // DEB - 0x00000000000021E00000FFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D000409F
        bitmaps.teb[0] = 0xD000409F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000007C390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0041E9F
        bitmaps.teb[0] = 0xD0041E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D000009F
        bitmaps.teb[0] = 0xD000009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_segmap_bnlm_1_4- inner node disablement
        // 20 smurf_bnlm_1_0- inner node disablement
        // 21 bnlm_3_4- inner node disablement
        // 22 bxt_demosaic- inner node disablement
        // 23 vcsc_2_0_b- inner node disablement
        // 24 gltm_2_0- inner node disablement
        // 25 ifd_segmap_xnr_1_4- inner node disablement
        // 26 smurf_xnr_1_0- inner node disablement
        // 27 xnr_5_4- inner node disablement
        // 28 vcr_3_1- inner node disablement
        // 29 glim_2_0- inner node disablement
        // 30 ifd_segmap_acm_1_4- inner node disablement
        // 31 smurf_acm_1_0- inner node disablement
        // 32 acm_1_2- inner node disablement
        // 33 gammatm_v4- inner node disablement
        // 34 csc_1_1- inner node disablement
        // 35 b2i_ds_1_1- inner node disablement
        // 36 lbff_crop_espa_1_4- inner node disablement
        // 37 image_upscaler_1_1- inner node disablement
        // 38 ifd_segmap_cas_1_4- inner node disablement
        // 39 smurf_cas_1_0- inner node disablement
        // 40 cas_1_1- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_segmap_bnlm_1_4- inner node disablement
        // 20 smurf_bnlm_1_0- inner node disablement
        // 21 bnlm_3_4- inner node disablement
        // 22 bxt_demosaic- inner node disablement
        // 23 vcsc_2_0_b- inner node disablement
        // 24 gltm_2_0- inner node disablement
        // 25 ifd_segmap_xnr_1_4- inner node disablement
        // 26 smurf_xnr_1_0- inner node disablement
        // 27 xnr_5_4- inner node disablement
        // 28 vcr_3_1- inner node disablement
        // 29 glim_2_0- inner node disablement
        // 30 ifd_segmap_acm_1_4- inner node disablement
        // 31 smurf_acm_1_0- inner node disablement
        // 32 acm_1_2- inner node disablement
        // 33 gammatm_v4- inner node disablement
        // 34 csc_1_1- inner node disablement
        // 35 b2i_ds_1_1- inner node disablement
        // 36 lbff_crop_espa_1_4- inner node disablement
        // 37 image_upscaler_1_1- inner node disablement
        // 38 ifd_segmap_cas_1_4- inner node disablement
        // 39 smurf_cas_1_0- inner node disablement
        // 40 cas_1_1- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_segmap_bnlm_1_4- inner node disablement
        // 20 smurf_bnlm_1_0- inner node disablement
        // 21 bnlm_3_4- inner node disablement
        // 22 bxt_demosaic- inner node disablement
        // 23 vcsc_2_0_b- inner node disablement
        // 24 gltm_2_0- inner node disablement
        // 25 ifd_segmap_xnr_1_4- inner node disablement
        // 26 smurf_xnr_1_0- inner node disablement
        // 27 xnr_5_4- inner node disablement
        // 28 vcr_3_1- inner node disablement
        // 29 glim_2_0- inner node disablement
        // 30 ifd_segmap_acm_1_4- inner node disablement
        // 31 smurf_acm_1_0- inner node disablement
        // 32 acm_1_2- inner node disablement
        // 33 gammatm_v4- inner node disablement
        // 34 csc_1_1- inner node disablement
        // 35 b2i_ds_1_1- inner node disablement
        // 36 lbff_crop_espa_1_4- inner node disablement
        // 37 image_upscaler_1_1- inner node disablement
        // 38 ifd_segmap_cas_1_4- inner node disablement
        // 39 smurf_cas_1_0- inner node disablement
        // 40 cas_1_1- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_segmap_bnlm_1_4- inner node disablement
        // 20 smurf_bnlm_1_0- inner node disablement
        // 21 bnlm_3_4- inner node disablement
        // 22 bxt_demosaic- inner node disablement
        // 23 vcsc_2_0_b- inner node disablement
        // 24 gltm_2_0- inner node disablement
        // 25 ifd_segmap_xnr_1_4- inner node disablement
        // 26 smurf_xnr_1_0- inner node disablement
        // 27 xnr_5_4- inner node disablement
        // 28 vcr_3_1- inner node disablement
        // 29 glim_2_0- inner node disablement
        // 30 ifd_segmap_acm_1_4- inner node disablement
        // 31 smurf_acm_1_0- inner node disablement
        // 32 acm_1_2- inner node disablement
        // 33 gammatm_v4- inner node disablement
        // 34 csc_1_1- inner node disablement
        // 35 b2i_ds_1_1- inner node disablement
        // 36 lbff_crop_espa_1_4- inner node disablement
        // 37 image_upscaler_1_1- inner node disablement
        // 38 ifd_segmap_cas_1_4- inner node disablement
        // 39 smurf_cas_1_0- inner node disablement
        // 40 cas_1_1- inner node disablement
        // 41 odr_ofs_mp_1_4- inner node disablement
        // 42 b2i_ds_output_1_1- inner node disablement
        // 43 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400DD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x6400DD;
        // DEB - 0x000000000000E1E00000FFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0045E9F
        bitmaps.teb[0] = 0xF0045E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrNoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 44; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFF83000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xFE000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrWithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 48; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400FD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400FD;
        // DEB - 0x000000000000E1E0000FFFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F032409F
        bitmaps.teb[0] = 0xF032409F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0361E9F
        bitmaps.teb[0] = 0xF0361E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F032009F
        bitmaps.teb[0] = 0xF032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400FD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x4400FD;
        // DEB - 0x000000000000C1E0000FFFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0365E9F
        bitmaps.teb[0] = 0xE0365E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400FD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400FD;
        // DEB - 0x000000000000C1E0000FFFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E032409F
        bitmaps.teb[0] = 0xE032409F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000007C390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0361E9F
        bitmaps.teb[0] = 0xE0361E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E032009F
        bitmaps.teb[0] = 0xE032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400FD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x2400FD;
        // DEB - 0x00000000000021E0000FFFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0365E9F
        bitmaps.teb[0] = 0xD0365E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400FD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400FD;
        // DEB - 0x00000000000021E0000FFFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D032409F
        bitmaps.teb[0] = 0xD032409F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000007C390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0361E9F
        bitmaps.teb[0] = 0xD0361E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D032009F
        bitmaps.teb[0] = 0xD032009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F607E7
        bitmaps.reb[0] = 0x13F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        // 42 ifd_segmap_cas_1_4- inner node disablement
        // 43 smurf_cas_1_0- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        // 42 ifd_segmap_cas_1_4- inner node disablement
        // 43 smurf_cas_1_0- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        // 42 ifd_segmap_cas_1_4- inner node disablement
        // 43 smurf_cas_1_0- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 ifd_segmap_acm_1_4- inner node disablement
        // 32 smurf_acm_1_0- inner node disablement
        // 33 acm_1_2- inner node disablement
        // 34 gammatm_v4- inner node disablement
        // 35 csc_1_1- inner node disablement
        // 36 b2i_ds_1_1- inner node disablement
        // 37 lbff_crop_espa_1_4- inner node disablement
        // 38 image_upscaler_1_1- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        // 42 ifd_segmap_cas_1_4- inner node disablement
        // 43 smurf_cas_1_0- inner node disablement
        // 44 cas_1_1- inner node disablement
        // 45 odr_ofs_mp_1_4- inner node disablement
        // 46 b2i_ds_output_1_1- inner node disablement
        // 47 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006400FD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x6400FD;
        // DEB - 0x000000000000E1E0000FFFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0365E9F
        bitmaps.teb[0] = 0xF0365E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F13F67FEF
        bitmaps.reb[0] = 0x13F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrWithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 48; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFF83000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xFC4000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrNoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 60; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCDD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCDD;
        // DEB - 0x000000000000E1FFFFF0FFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC0409F
        bitmaps.teb[0] = 0xFFC0409F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC41E9F
        bitmaps.teb[0] = 0xFFC41E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FC9D;
        // DEB - 0x000000000000E1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC0009F
        bitmaps.teb[0] = 0xFFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCDD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FCDD;
        // DEB - 0x000000000000C1FFFFF0FFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC45E9F
        bitmaps.teb[0] = 0xEFC45E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCDD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCDD;
        // DEB - 0x000000000000C1FFFFF0FFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC0409F
        bitmaps.teb[0] = 0xEFC0409F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000007C390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC41E9F
        bitmaps.teb[0] = 0xEFC41E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FC9D;
        // DEB - 0x000000000000C1FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC0009F
        bitmaps.teb[0] = 0xEFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x20000000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCDD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FCDD;
        // DEB - 0x00000000000021FFFFF0FFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC45E9F
        bitmaps.teb[0] = 0xDFC45E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCDD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCDD;
        // DEB - 0x00000000000021FFFFF0FFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC0409F
        bitmaps.teb[0] = 0xDFC0409F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000007C390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC41E9F
        bitmaps.teb[0] = 0xDFC41E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC9D50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FC9D;
        // DEB - 0x00000000000021FFFFF0FFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC0009F
        bitmaps.teb[0] = 0xDFC0009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC0000000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 21 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 tnr7_spatial_1_1- inner node disablement
        // 41 tnr_scaler_lb_1_1- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 44 smurf_tnr_bc_1_0- inner node disablement
        // 45 tnr7_bc_1_2- inner node disablement
        // 46 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 47 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 48 smurf_tnr_blend_1_0- inner node disablement
        // 49 tnr7_blend_1_1- inner node disablement
        // 50 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 51 tnr_scaler_fp_1_1- inner node disablement
        // 52 image_upscaler_1_1- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 54 ifd_segmap_cas_1_4- inner node disablement
        // 55 smurf_cas_1_0- inner node disablement
        // 56 cas_1_1- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 21 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 tnr7_spatial_1_1- inner node disablement
        // 41 tnr_scaler_lb_1_1- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 44 smurf_tnr_bc_1_0- inner node disablement
        // 45 tnr7_bc_1_2- inner node disablement
        // 46 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 47 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 48 smurf_tnr_blend_1_0- inner node disablement
        // 49 tnr7_blend_1_1- inner node disablement
        // 50 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 51 tnr_scaler_fp_1_1- inner node disablement
        // 52 image_upscaler_1_1- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 54 ifd_segmap_cas_1_4- inner node disablement
        // 55 smurf_cas_1_0- inner node disablement
        // 56 cas_1_1- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 21 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 tnr7_spatial_1_1- inner node disablement
        // 41 tnr_scaler_lb_1_1- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 44 smurf_tnr_bc_1_0- inner node disablement
        // 45 tnr7_bc_1_2- inner node disablement
        // 46 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 47 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 48 smurf_tnr_blend_1_0- inner node disablement
        // 49 tnr7_blend_1_1- inner node disablement
        // 50 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 51 tnr_scaler_fp_1_1- inner node disablement
        // 52 image_upscaler_1_1- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 54 ifd_segmap_cas_1_4- inner node disablement
        // 55 smurf_cas_1_0- inner node disablement
        // 56 cas_1_1- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 21 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 tnr7_spatial_1_1- inner node disablement
        // 41 tnr_scaler_lb_1_1- inner node disablement
        // 42 tnr7_ims_1_2- inner node disablement
        // 43 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 44 smurf_tnr_bc_1_0- inner node disablement
        // 45 tnr7_bc_1_2- inner node disablement
        // 46 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 47 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 48 smurf_tnr_blend_1_0- inner node disablement
        // 49 tnr7_blend_1_1- inner node disablement
        // 50 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 51 tnr_scaler_fp_1_1- inner node disablement
        // 52 image_upscaler_1_1- inner node disablement
        // 53 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 54 ifd_segmap_cas_1_4- inner node disablement
        // 55 smurf_cas_1_0- inner node disablement
        // 56 cas_1_1- inner node disablement
        // 57 odr_ofs_mp_1_4- inner node disablement
        // 58 b2i_ds_output_1_1- inner node disablement
        // 59 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCDD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FCDD;
        // DEB - 0x000000000000E1FFFFF0FFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC45E9F
        bitmaps.teb[0] = 0xFFC45E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrNoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 60; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFF83000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xFD0000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffRgbIrWithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 64; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noIr | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCFD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCFD;
        // DEB - 0x000000000000E1FFFFFFFFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2409F
        bitmaps.teb[0] = 0xFFF2409F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C390;
    }
    else if (nodeRelevantInnerOptions == (noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF61E9F
        bitmaps.teb[0] = 0xFFF61E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40;
    }
    else if (nodeRelevantInnerOptions == (no3A | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x67FCBD;
        // DEB - 0x000000000000E1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCFD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FCFD;
        // DEB - 0x000000000000C1FFFFFFFFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF65E9F
        bitmaps.teb[0] = 0xEFF65E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCFD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCFD;
        // DEB - 0x000000000000C1FFFFFFFFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2409F
        bitmaps.teb[0] = 0xEFF2409F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000007C390;
    }
    else if (nodeRelevantInnerOptions == (noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF61E9F
        bitmaps.teb[0] = 0xEFF61E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x2000000000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x47FCBD;
        // DEB - 0x000000000000C1FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x200000000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCFD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FCFD;
        // DEB - 0x00000000000021FFFFFFFFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF65E9F
        bitmaps.teb[0] = 0xDFF65E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCFD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCFD;
        // DEB - 0x00000000000021FFFFFFFFFEEF8001F1
        bitmaps.deb[0] = 0xEF8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2409F
        bitmaps.teb[0] = 0xDFF2409F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000007C390;
    }
    else if (nodeRelevantInnerOptions == (noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED9FF1F1
        bitmaps.deb[0] = 0xED9FF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF61E9F
        bitmaps.teb[0] = 0xDFF61E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC000000000000040;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FCBD50016811
        bitmaps.rbm[0] = 0x50016811;
        bitmaps.rbm[1] = 0x27FCBD;
        // DEB - 0x00000000000021FFFFFFFFFEED8001F1
        bitmaps.deb[0] = 0xED8001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F607E7
        bitmaps.reb[0] = 0xF3F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xC00000000007C3D0;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000206071
        bitmaps.rbm[0] = 0x206071;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003871131
        bitmaps.deb[0] = 0x3871131;
        // TEB - 0x0000000000045817
        bitmaps.teb[0] = 0x45817;
        // REB - 0x0000000000000000000000000300118F
        bitmaps.reb[0] = 0x300118F;

        // Kernels disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 gmv_statistics_1_1- inner node disablement
        // 45 odr_gmv_feature_1_4- inner node disablement
        // 46 odr_gmv_match_1_4- inner node disablement
        // 47 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 48 smurf_tnr_bc_1_0- inner node disablement
        // 49 tnr7_bc_1_2- inner node disablement
        // 50 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 51 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 52 smurf_tnr_blend_1_0- inner node disablement
        // 53 tnr7_blend_1_1- inner node disablement
        // 54 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 55 tnr_scaler_fp_1_1- inner node disablement
        // 56 image_upscaler_1_1- inner node disablement
        // 57 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 58 ifd_segmap_cas_1_4- inner node disablement
        // 59 smurf_cas_1_0- inner node disablement
        // 60 cas_1_1- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFC00;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000004000006011
        bitmaps.rbm[0] = 0x6011;
        bitmaps.rbm[1] = 0x40;
        // DEB - 0x00000000000000000000000003800131
        bitmaps.deb[0] = 0x3800131;
        // TEB - 0x0000000000004017
        bitmaps.teb[0] = 0x4017;
        // REB - 0x00000000000000000000000003000187
        bitmaps.reb[0] = 0x3000187;

        // Kernels disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 gmv_statistics_1_1- inner node disablement
        // 45 odr_gmv_feature_1_4- inner node disablement
        // 46 odr_gmv_match_1_4- inner node disablement
        // 47 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 48 smurf_tnr_bc_1_0- inner node disablement
        // 49 tnr7_bc_1_2- inner node disablement
        // 50 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 51 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 52 smurf_tnr_blend_1_0- inner node disablement
        // 53 tnr7_blend_1_1- inner node disablement
        // 54 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 55 tnr_scaler_fp_1_1- inner node disablement
        // 56 image_upscaler_1_1- inner node disablement
        // 57 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 58 ifd_segmap_cas_1_4- inner node disablement
        // 59 smurf_cas_1_0- inner node disablement
        // 60 cas_1_1- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFF90;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000200061
        bitmaps.rbm[0] = 0x200061;
        // DEB - 0x00000000000000000000000000071031
        bitmaps.deb[0] = 0x71031;
        // TEB - 0x0000000000041817
        bitmaps.teb[0] = 0x41817;
        // REB - 0x0000000000000000000000000000100F
        bitmaps.reb[0] = 0x100F;

        // Kernels disablement
        // 3 dpc_2_2- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 gmv_statistics_1_1- inner node disablement
        // 45 odr_gmv_feature_1_4- inner node disablement
        // 46 odr_gmv_match_1_4- inner node disablement
        // 47 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 48 smurf_tnr_bc_1_0- inner node disablement
        // 49 tnr7_bc_1_2- inner node disablement
        // 50 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 51 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 52 smurf_tnr_blend_1_0- inner node disablement
        // 53 tnr7_blend_1_1- inner node disablement
        // 54 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 55 tnr_scaler_fp_1_1- inner node disablement
        // 56 image_upscaler_1_1- inner node disablement
        // 57 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 58 ifd_segmap_cas_1_4- inner node disablement
        // 59 smurf_cas_1_0- inner node disablement
        // 60 cas_1_1- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFC68;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp | noIr))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 rgbs_grid_1_1- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 odr_ir_1_4- inner node disablement
        // 7 odr_awb_std_1_4- inner node disablement
        // 8 odr_awb_sve_1_4- inner node disablement
        // 9 odr_awb_sat_1_4- inner node disablement
        // 10 ifd_lsc_1_4- inner node disablement
        // 11 lsc_1_2- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- inner node disablement
        // 14 ccm_3a_2_0- inner node disablement
        // 15 fr_grid_1_0- inner node disablement
        // 16 aestatistics_2_1- inner node disablement
        // 17 odr_ae_1_4- inner node disablement
        // 18 odr_af_std_1_4- inner node disablement
        // 19 ifd_gmv_1_4- inner node disablement
        // 20 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 21 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 22 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 tnr7_spatial_1_1- inner node disablement
        // 42 tnr_scaler_lb_1_1- inner node disablement
        // 43 tnr7_ims_1_2- inner node disablement
        // 44 gmv_statistics_1_1- inner node disablement
        // 45 odr_gmv_feature_1_4- inner node disablement
        // 46 odr_gmv_match_1_4- inner node disablement
        // 47 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 48 smurf_tnr_bc_1_0- inner node disablement
        // 49 tnr7_bc_1_2- inner node disablement
        // 50 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 51 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 52 smurf_tnr_blend_1_0- inner node disablement
        // 53 tnr7_blend_1_1- inner node disablement
        // 54 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 55 tnr_scaler_fp_1_1- inner node disablement
        // 56 image_upscaler_1_1- inner node disablement
        // 57 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 58 ifd_segmap_cas_1_4- inner node disablement
        // 59 smurf_cas_1_0- inner node disablement
        // 60 cas_1_1- inner node disablement
        // 61 odr_ofs_mp_1_4- inner node disablement
        // 62 b2i_ds_output_1_1- inner node disablement
        // 63 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFFFFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FCFD503B6871
        bitmaps.rbm[0] = 0x503B6871;
        bitmaps.rbm[1] = 0x67FCFD;
        // DEB - 0x000000000000E1FFFFFFFFFEEF9FF1F1
        bitmaps.deb[0] = 0xEF9FF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF65E9F
        bitmaps.teb[0] = 0xFFF65E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF3F67FEF
        bitmaps.reb[0] = 0xF3F67FEF;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffRgbIrWithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 64; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0xFFFFFFFFFFF83000;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0xFD00000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrNoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 39; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[19].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[27].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1E00000F9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xF9FE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000008F000009F
        bitmaps.teb[0] = 0xF000009F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1E00000F9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xF9FE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000008E0001E9F
        bitmaps.teb[0] = 0xE0001E9F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 36 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1E00000F9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xF9FE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000008E000009F
        bitmaps.teb[0] = 0xE000009F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 36 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x100000FF00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021E00000F9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xF9FE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000008D0001E9F
        bitmaps.teb[0] = 0xD0001E9F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 37 b2i_ds_output_1_1- inner node disablement
        // 38 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021E00000F9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xF9FE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000008D000009F
        bitmaps.teb[0] = 0xD000009F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 37 b2i_ds_output_1_1- inner node disablement
        // 38 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x600000FF00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 16 ifd_segmap_bnlm_1_4- inner node disablement
        // 17 smurf_bnlm_1_0- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 ifd_segmap_xnr_1_4- inner node disablement
        // 23 smurf_xnr_1_0- inner node disablement
        // 24 xnr_5_4- inner node disablement
        // 25 vcr_3_1- inner node disablement
        // 26 glim_2_0- inner node disablement
        // 27 acm_1_2- inner node disablement
        // 28 gammatm_v4- inner node disablement
        // 29 csc_1_1- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 image_upscaler_1_1- inner node disablement
        // 33 ifd_segmap_cas_1_4- inner node disablement
        // 34 smurf_cas_1_0- inner node disablement
        // 35 cas_1_1- inner node disablement
        // 36 odr_ofs_mp_1_4- inner node disablement
        // 37 b2i_ds_output_1_1- inner node disablement
        // 38 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFF00C0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 16 ifd_segmap_bnlm_1_4- inner node disablement
        // 17 smurf_bnlm_1_0- inner node disablement
        // 18 bnlm_3_4- inner node disablement
        // 19 bxt_demosaic- inner node disablement
        // 20 vcsc_2_0_b- inner node disablement
        // 21 gltm_2_0- inner node disablement
        // 22 ifd_segmap_xnr_1_4- inner node disablement
        // 23 smurf_xnr_1_0- inner node disablement
        // 24 xnr_5_4- inner node disablement
        // 25 vcr_3_1- inner node disablement
        // 26 glim_2_0- inner node disablement
        // 27 acm_1_2- inner node disablement
        // 28 gammatm_v4- inner node disablement
        // 29 csc_1_1- inner node disablement
        // 30 b2i_ds_1_1- inner node disablement
        // 31 lbff_crop_espa_1_4- inner node disablement
        // 32 image_upscaler_1_1- inner node disablement
        // 33 ifd_segmap_cas_1_4- inner node disablement
        // 34 smurf_cas_1_0- inner node disablement
        // 35 cas_1_1- inner node disablement
        // 36 odr_ofs_mp_1_4- inner node disablement
        // 37 b2i_ds_output_1_1- inner node disablement
        // 38 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1E00000F9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xF9FE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000008F0001E9F
        bitmaps.teb[0] = 0xF0001E9F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrNoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 39; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[19].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[27].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFF00C0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7F00000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrWithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 43; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[20].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[28].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x64003D;
        // DEB - 0x000000000000E1E0000FF9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFF9FE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000008F032009F
        bitmaps.teb[0] = 0xF032009F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x44003D;
        // DEB - 0x000000000000C1E0000FF9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFF9FE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000008E0321E9F
        bitmaps.teb[0] = 0xE0321E9F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x44003D;
        // DEB - 0x000000000000C1E0000FF9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFF9FE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000008E032009F
        bitmaps.teb[0] = 0xE032009F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000FF00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x24003D;
        // DEB - 0x00000000000021E0000FF9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFF9FE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000008D0321E9F
        bitmaps.teb[0] = 0xD0321E9F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x24003D;
        // DEB - 0x00000000000021E0000FF9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFF9FE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000008D032009F
        bitmaps.teb[0] = 0xD032009F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F607E7
        bitmaps.reb[0] = 0x10F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000FF00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 16 ifd_gmv_1_4- inner node disablement
        // 17 ifd_segmap_bnlm_1_4- inner node disablement
        // 18 smurf_bnlm_1_0- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 ifd_segmap_xnr_1_4- inner node disablement
        // 24 smurf_xnr_1_0- inner node disablement
        // 25 xnr_5_4- inner node disablement
        // 26 vcr_3_1- inner node disablement
        // 27 glim_2_0- inner node disablement
        // 28 acm_1_2- inner node disablement
        // 29 gammatm_v4- inner node disablement
        // 30 csc_1_1- inner node disablement
        // 31 b2i_ds_1_1- inner node disablement
        // 32 lbff_crop_espa_1_4- inner node disablement
        // 33 image_upscaler_1_1- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        // 37 ifd_segmap_cas_1_4- inner node disablement
        // 38 smurf_cas_1_0- inner node disablement
        // 39 cas_1_1- inner node disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFF00C0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 16 ifd_gmv_1_4- inner node disablement
        // 17 ifd_segmap_bnlm_1_4- inner node disablement
        // 18 smurf_bnlm_1_0- inner node disablement
        // 19 bnlm_3_4- inner node disablement
        // 20 bxt_demosaic- inner node disablement
        // 21 vcsc_2_0_b- inner node disablement
        // 22 gltm_2_0- inner node disablement
        // 23 ifd_segmap_xnr_1_4- inner node disablement
        // 24 smurf_xnr_1_0- inner node disablement
        // 25 xnr_5_4- inner node disablement
        // 26 vcr_3_1- inner node disablement
        // 27 glim_2_0- inner node disablement
        // 28 acm_1_2- inner node disablement
        // 29 gammatm_v4- inner node disablement
        // 30 csc_1_1- inner node disablement
        // 31 b2i_ds_1_1- inner node disablement
        // 32 lbff_crop_espa_1_4- inner node disablement
        // 33 image_upscaler_1_1- inner node disablement
        // 34 gmv_statistics_1_1- inner node disablement
        // 35 odr_gmv_feature_1_4- inner node disablement
        // 36 odr_gmv_match_1_4- inner node disablement
        // 37 ifd_segmap_cas_1_4- inner node disablement
        // 38 smurf_cas_1_0- inner node disablement
        // 39 cas_1_1- inner node disablement
        // 40 odr_ofs_mp_1_4- inner node disablement
        // 41 b2i_ds_output_1_1- inner node disablement
        // 42 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x64003D;
        // DEB - 0x000000000000E1E0000FF9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFF9FE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000008F0321E9F
        bitmaps.teb[0] = 0xF0321E9F;
        bitmaps.teb[1] = 0x8;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrWithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 43; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[20].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[28].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFFF00C0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7E200000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrNoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 55; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[22].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[30].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E1FFFFF0F9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFF0F9FE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000EFFC0009F
        bitmaps.teb[0] = 0xFFC0009F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C1FFFFF0F9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFF0F9FE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000EEFC01E9F
        bitmaps.teb[0] = 0xEFC01E9F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 52 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C1FFFFF0F9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFF0F9FE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000EEFC0009F
        bitmaps.teb[0] = 0xEFC0009F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 52 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000000FF00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x00000000000021FFFFF0F9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFF0F9FE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000EDFC01E9F
        bitmaps.teb[0] = 0xDFC01E9F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 53 b2i_ds_output_1_1- inner node disablement
        // 54 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x00000000000021FFFFF0F9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFF0F9FE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000EDFC0009F
        bitmaps.teb[0] = 0xDFC0009F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 53 b2i_ds_output_1_1- inner node disablement
        // 54 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000000FF00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 16 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 17 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 18 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 19 ifd_segmap_bnlm_1_4- inner node disablement
        // 20 smurf_bnlm_1_0- inner node disablement
        // 21 bnlm_3_4- inner node disablement
        // 22 bxt_demosaic- inner node disablement
        // 23 vcsc_2_0_b- inner node disablement
        // 24 gltm_2_0- inner node disablement
        // 25 ifd_segmap_xnr_1_4- inner node disablement
        // 26 smurf_xnr_1_0- inner node disablement
        // 27 xnr_5_4- inner node disablement
        // 28 vcr_3_1- inner node disablement
        // 29 glim_2_0- inner node disablement
        // 30 acm_1_2- inner node disablement
        // 31 gammatm_v4- inner node disablement
        // 32 csc_1_1- inner node disablement
        // 33 b2i_ds_1_1- inner node disablement
        // 34 lbff_crop_espa_1_4- inner node disablement
        // 35 tnr7_spatial_1_1- inner node disablement
        // 36 tnr_scaler_lb_1_1- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 39 smurf_tnr_bc_1_0- inner node disablement
        // 40 tnr7_bc_1_2- inner node disablement
        // 41 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 42 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 43 smurf_tnr_blend_1_0- inner node disablement
        // 44 tnr7_blend_1_1- inner node disablement
        // 45 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 46 tnr_scaler_fp_1_1- inner node disablement
        // 47 image_upscaler_1_1- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 49 ifd_segmap_cas_1_4- inner node disablement
        // 50 smurf_cas_1_0- inner node disablement
        // 51 cas_1_1- inner node disablement
        // 52 odr_ofs_mp_1_4- inner node disablement
        // 53 b2i_ds_output_1_1- inner node disablement
        // 54 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFF00C0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 16 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 17 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 18 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 19 ifd_segmap_bnlm_1_4- inner node disablement
        // 20 smurf_bnlm_1_0- inner node disablement
        // 21 bnlm_3_4- inner node disablement
        // 22 bxt_demosaic- inner node disablement
        // 23 vcsc_2_0_b- inner node disablement
        // 24 gltm_2_0- inner node disablement
        // 25 ifd_segmap_xnr_1_4- inner node disablement
        // 26 smurf_xnr_1_0- inner node disablement
        // 27 xnr_5_4- inner node disablement
        // 28 vcr_3_1- inner node disablement
        // 29 glim_2_0- inner node disablement
        // 30 acm_1_2- inner node disablement
        // 31 gammatm_v4- inner node disablement
        // 32 csc_1_1- inner node disablement
        // 33 b2i_ds_1_1- inner node disablement
        // 34 lbff_crop_espa_1_4- inner node disablement
        // 35 tnr7_spatial_1_1- inner node disablement
        // 36 tnr_scaler_lb_1_1- inner node disablement
        // 37 tnr7_ims_1_2- inner node disablement
        // 38 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 39 smurf_tnr_bc_1_0- inner node disablement
        // 40 tnr7_bc_1_2- inner node disablement
        // 41 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 42 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 43 smurf_tnr_blend_1_0- inner node disablement
        // 44 tnr7_blend_1_1- inner node disablement
        // 45 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 46 tnr_scaler_fp_1_1- inner node disablement
        // 47 image_upscaler_1_1- inner node disablement
        // 48 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 49 ifd_segmap_cas_1_4- inner node disablement
        // 50 smurf_cas_1_0- inner node disablement
        // 51 cas_1_1- inner node disablement
        // 52 odr_ofs_mp_1_4- inner node disablement
        // 53 b2i_ds_output_1_1- inner node disablement
        // 54 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E1FFFFF0F9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFF0F9FE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000EFFC01E9F
        bitmaps.teb[0] = 0xFFC01E9F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrNoGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 55; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[22].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[30].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFFFFFF00C0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7E800000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrWithGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 59; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[23].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[31].run_kernel.enable = 0; // acm_1_2

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000067FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x67FC3D;
        // DEB - 0x000000000000E1FFFFFFF9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFF9FE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000EFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0xFF00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x47FC3D;
        // DEB - 0x000000000000C1FFFFFFF9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFF9FE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000EEFF21E9F
        bitmaps.teb[0] = 0xEFF21E9F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 56 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x100000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x47FC3D;
        // DEB - 0x000000000000C1FFFFFFF9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFF9FE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000EEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 56 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000000000FF00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x27FC3D;
        // DEB - 0x00000000000021FFFFFFF9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFF9FE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000EDFF21E9F
        bitmaps.teb[0] = 0xDFF21E9F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 57 b2i_ds_output_1_1- inner node disablement
        // 58 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x600000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x27FC3D;
        // DEB - 0x00000000000021FFFFFFF9FEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFF9FE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000EDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F607E7
        bitmaps.reb[0] = 0xF0F607E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 57 b2i_ds_output_1_1- inner node disablement
        // 58 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000000000FF00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000000001E9009
        bitmaps.rbm[0] = 0x1E9009;
        // DEB - 0x000000000000000000000000001BF1F1
        bitmaps.deb[0] = 0x1BF1F1;
        // TEB - 0x0000000000001E97
        bitmaps.teb[0] = 0x1E97;
        // REB - 0x00000000000000000000000000007FE7
        bitmaps.reb[0] = 0x7FE7;

        // Kernels disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 16 ifd_gmv_1_4- inner node disablement
        // 17 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 18 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 19 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 acm_1_2- inner node disablement
        // 32 gammatm_v4- inner node disablement
        // 33 csc_1_1- inner node disablement
        // 34 b2i_ds_1_1- inner node disablement
        // 35 lbff_crop_espa_1_4- inner node disablement
        // 36 tnr7_spatial_1_1- inner node disablement
        // 37 tnr_scaler_lb_1_1- inner node disablement
        // 38 tnr7_ims_1_2- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        // 42 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 43 smurf_tnr_bc_1_0- inner node disablement
        // 44 tnr7_bc_1_2- inner node disablement
        // 45 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 46 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 47 smurf_tnr_blend_1_0- inner node disablement
        // 48 tnr7_blend_1_1- inner node disablement
        // 49 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 50 tnr_scaler_fp_1_1- inner node disablement
        // 51 image_upscaler_1_1- inner node disablement
        // 52 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 53 ifd_segmap_cas_1_4- inner node disablement
        // 54 smurf_cas_1_0- inner node disablement
        // 55 cas_1_1- inner node disablement
        // 56 odr_ofs_mp_1_4- inner node disablement
        // 57 b2i_ds_output_1_1- inner node disablement
        // 58 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFF00C0;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 ifd_lsc_1_4- inner node disablement
        // 4 lsc_1_2- inner node disablement
        // 5 dpc_2_2- inner node disablement
        // 6 gd_2_2- inner node disablement
        // 7 wb_1_1- inner node disablement
        // 8 rgbs_grid_1_1- inner node disablement
        // 9 ccm_3a_2_0- inner node disablement
        // 10 fr_grid_1_0- inner node disablement
        // 11 odr_awb_std_1_4- inner node disablement
        // 12 odr_awb_sat_1_4- inner node disablement
        // 13 aestatistics_2_1- inner node disablement
        // 14 odr_ae_1_4- inner node disablement
        // 15 odr_af_std_1_4- inner node disablement
        // 16 ifd_gmv_1_4- inner node disablement
        // 17 ifd_tnr_sp_bc_yuv4nm1_1_4- inner node disablement
        // 18 ifd_tnr_sp_bc_rs4nm1_1_4- inner node disablement
        // 19 ifd_tnr_fp_blend_yuvnm1_1_4- inner node disablement
        // 20 ifd_segmap_bnlm_1_4- inner node disablement
        // 21 smurf_bnlm_1_0- inner node disablement
        // 22 bnlm_3_4- inner node disablement
        // 23 bxt_demosaic- inner node disablement
        // 24 vcsc_2_0_b- inner node disablement
        // 25 gltm_2_0- inner node disablement
        // 26 ifd_segmap_xnr_1_4- inner node disablement
        // 27 smurf_xnr_1_0- inner node disablement
        // 28 xnr_5_4- inner node disablement
        // 29 vcr_3_1- inner node disablement
        // 30 glim_2_0- inner node disablement
        // 31 acm_1_2- inner node disablement
        // 32 gammatm_v4- inner node disablement
        // 33 csc_1_1- inner node disablement
        // 34 b2i_ds_1_1- inner node disablement
        // 35 lbff_crop_espa_1_4- inner node disablement
        // 36 tnr7_spatial_1_1- inner node disablement
        // 37 tnr_scaler_lb_1_1- inner node disablement
        // 38 tnr7_ims_1_2- inner node disablement
        // 39 gmv_statistics_1_1- inner node disablement
        // 40 odr_gmv_feature_1_4- inner node disablement
        // 41 odr_gmv_match_1_4- inner node disablement
        // 42 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 43 smurf_tnr_bc_1_0- inner node disablement
        // 44 tnr7_bc_1_2- inner node disablement
        // 45 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 46 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 47 smurf_tnr_blend_1_0- inner node disablement
        // 48 tnr7_blend_1_1- inner node disablement
        // 49 odr_tnr_fp_yuvn_1_4- inner node disablement
        // 50 tnr_scaler_fp_1_1- inner node disablement
        // 51 image_upscaler_1_1- inner node disablement
        // 52 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 53 ifd_segmap_cas_1_4- inner node disablement
        // 54 smurf_cas_1_0- inner node disablement
        // 55 cas_1_1- inner node disablement
        // 56 odr_ofs_mp_1_4- inner node disablement
        // 57 b2i_ds_output_1_1- inner node disablement
        // 58 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000067FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x67FC3D;
        // DEB - 0x000000000000E1FFFFFFF9FEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFF9FE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000EFFF21E9F
        bitmaps.teb[0] = 0xFFF21E9F;
        bitmaps.teb[1] = 0xE;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffIrWithGmvWithTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 59; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[7].run_kernel.enable = 0; // wb_1_1
    nodeKernels.kernelList[23].run_kernel.enable = 0; // bxt_demosaic
    nodeKernels.kernelList[31].run_kernel.enable = 0; // acm_1_2

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFFFFFFF00C0;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7E8000000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 47; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F008009F
        bitmaps.teb[0] = 0xF008009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0081E9F
        bitmaps.teb[0] = 0xF0081E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000064009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x64009D;
        // DEB - 0x000000000000E1E00000FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F008009F
        bitmaps.teb[0] = 0xF008009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044019D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x44019D;
        // DEB - 0x000000000000C1E00000FFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0083F9F
        bitmaps.teb[0] = 0xE0083F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x100000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E008009F
        bitmaps.teb[0] = 0xE008009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0081E9F
        bitmaps.teb[0] = 0xE0081E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000003C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000044009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x44009D;
        // DEB - 0x000000000000C1E00000FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E008009F
        bitmaps.teb[0] = 0xE008009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024019D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x24019D;
        // DEB - 0x00000000000021E00000FFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0083F9F
        bitmaps.teb[0] = 0xD0083F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x600000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D008009F
        bitmaps.teb[0] = 0xD008009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0081E9F
        bitmaps.teb[0] = 0xD0081E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000003C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000024009D54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x24009D;
        // DEB - 0x00000000000021E00000FFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D008009F
        bitmaps.teb[0] = 0xD008009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 ifd_segmap_cas_1_4- inner node disablement
        // 42 smurf_cas_1_0- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFC00300;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 ifd_segmap_cas_1_4- inner node disablement
        // 42 smurf_cas_1_0- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 ifd_segmap_cas_1_4- inner node disablement
        // 42 smurf_cas_1_0- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFC0300;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_segmap_bnlm_1_4- inner node disablement
        // 23 smurf_bnlm_1_0- inner node disablement
        // 24 bnlm_3_4- inner node disablement
        // 25 bxt_demosaic- inner node disablement
        // 26 vcsc_2_0_b- inner node disablement
        // 27 gltm_2_0- inner node disablement
        // 28 ifd_segmap_xnr_1_4- inner node disablement
        // 29 smurf_xnr_1_0- inner node disablement
        // 30 xnr_5_4- inner node disablement
        // 31 vcr_3_1- inner node disablement
        // 32 glim_2_0- inner node disablement
        // 33 ifd_segmap_acm_1_4- inner node disablement
        // 34 smurf_acm_1_0- inner node disablement
        // 35 acm_1_2- inner node disablement
        // 36 gammatm_v4- inner node disablement
        // 37 csc_1_1- inner node disablement
        // 38 b2i_ds_1_1- inner node disablement
        // 39 lbff_crop_espa_1_4- inner node disablement
        // 40 image_upscaler_1_1- inner node disablement
        // 41 ifd_segmap_cas_1_4- inner node disablement
        // 42 smurf_cas_1_0- inner node disablement
        // 43 cas_1_1- inner node disablement
        // 44 odr_ofs_mp_1_4- inner node disablement
        // 45 b2i_ds_output_1_1- inner node disablement
        // 46 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x00000000000000000064019D541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x64019D;
        // DEB - 0x000000000000E1E00000FFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0083F9F
        bitmaps.teb[0] = 0xF0083F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 47; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFFC00300;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7F0000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 51; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    const InnerNodeOptionsFlags nodeRelevantInnerOptions = nodeInnerOptions & (no3A | noPdaf | noMp | noDp);
    bitmaps = HwBitmaps(); // reset HW bitmaps
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};
    if (nodeRelevantInnerOptions == (no3A))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F03A009F
        bitmaps.teb[0] = 0xF03A009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F03A1E9F
        bitmaps.teb[0] = 0xF03A1E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000006400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x6400BD;
        // DEB - 0x000000000000E1E0000FFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F03A009F
        bitmaps.teb[0] = 0xF03A009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x3FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004401BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x4401BD;
        // DEB - 0x000000000000C1E0000FFFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E03A3F9F
        bitmaps.teb[0] = 0xE03A3F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E03A009F
        bitmaps.teb[0] = 0xE03A009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E03A1E9F
        bitmaps.teb[0] = 0xE03A1E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000003C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000004400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x4400BD;
        // DEB - 0x000000000000C1E0000FFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E03A009F
        bitmaps.teb[0] = 0xE03A009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x10000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002401BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x2401BD;
        // DEB - 0x00000000000021E0000FFFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D03A3F9F
        bitmaps.teb[0] = 0xD03A3F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x6000000000000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D03A009F
        bitmaps.teb[0] = 0xD03A009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEEDBBF1F1
        bitmaps.deb[0] = 0xEDBBF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D03A1E9F
        bitmaps.teb[0] = 0xD03A1E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F6FFE7
        bitmaps.reb[0] = 0x12F6FFE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000003C0000;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noDp))
    {
        // HW bitmaps
        // RBM - 0x0000000000000000002400BD54016811
        bitmaps.rbm[0] = 0x54016811;
        bitmaps.rbm[1] = 0x2400BD;
        // DEB - 0x00000000000021E0000FFFFEEDA001F1
        bitmaps.deb[0] = 0xEDA001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D03A009F
        bitmaps.teb[0] = 0xD03A009F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F12F687E7
        bitmaps.reb[0] = 0x12F687E7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x60000003FFC00;
    }
    else if (nodeRelevantInnerOptions == (noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000180041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x180;
        // DEB - 0x00000000000000000000000001FBFFF1
        bitmaps.deb[0] = 0x1FBFFF1;
        // TEB - 0x0000000000083F97
        bitmaps.teb[0] = 0x83F97;
        // REB - 0x0000000000000000000000000601FFE7
        bitmaps.reb[0] = 0x601FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 image_upscaler_1_1- inner node disablement
        // 42 gmv_statistics_1_1- inner node disablement
        // 43 odr_gmv_feature_1_4- inner node disablement
        // 44 odr_gmv_match_1_4- inner node disablement
        // 45 ifd_segmap_cas_1_4- inner node disablement
        // 46 smurf_cas_1_0- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFC00300;
    }
    else if (nodeRelevantInnerOptions == (no3A | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 image_upscaler_1_1- inner node disablement
        // 42 gmv_statistics_1_1- inner node disablement
        // 43 odr_gmv_feature_1_4- inner node disablement
        // 44 odr_gmv_match_1_4- inner node disablement
        // 45 ifd_segmap_cas_1_4- inner node disablement
        // 46 smurf_cas_1_0- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFF;
    }
    else if (nodeRelevantInnerOptions == (noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x000000000000000000000080041E6811
        bitmaps.rbm[0] = 0x41E6811;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x00000000000000000000000001BBF1F1
        bitmaps.deb[0] = 0x1BBF1F1;
        // TEB - 0x0000000000081E97
        bitmaps.teb[0] = 0x81E97;
        // REB - 0x0000000000000000000000000200FFE7
        bitmaps.reb[0] = 0x200FFE7;

        // Kernels disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 image_upscaler_1_1- inner node disablement
        // 42 gmv_statistics_1_1- inner node disablement
        // 43 odr_gmv_feature_1_4- inner node disablement
        // 44 odr_gmv_match_1_4- inner node disablement
        // 45 ifd_segmap_cas_1_4- inner node disablement
        // 46 smurf_cas_1_0- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFC0300;
    }
    else if (nodeRelevantInnerOptions == (no3A | noPdaf | noMp | noDp))
    {
        // HW bitmaps
        // RBM - 0x00000000000000000000000000000000
        // DEB - 0x00000000000000000000000000000000
        // TEB - 0x0000000000000000
        // REB - 0x00000000000000000000000000000000

        // Kernels disablement
        // 0 ifd_pipe_1_4- inner node disablement
        // 1 bxt_blc- inner node disablement
        // 2 linearization2_0- inner node disablement
        // 3 dpc_2_2- inner node disablement
        // 4 odr_dpc_pdaf_1_4- inner node disablement
        // 5 rgb_ir_2_0- inner node disablement
        // 6 ifd_lsc_1_4- inner node disablement
        // 7 lsc_1_2- inner node disablement
        // 8 gd_2_2- inner node disablement
        // 9 wb_1_1- inner node disablement
        // 10 rgbs_grid_1_1- inner node disablement
        // 11 ccm_3a_2_0- inner node disablement
        // 12 fr_grid_1_0- inner node disablement
        // 13 odr_awb_std_1_4- inner node disablement
        // 14 odr_awb_sat_1_4- inner node disablement
        // 15 aestatistics_2_1- inner node disablement
        // 16 odr_ae_1_4- inner node disablement
        // 17 odr_af_std_1_4- inner node disablement
        // 18 ifd_pdaf_1_4- inner node disablement
        // 19 pext_1_0- inner node disablement
        // 20 pafstatistics_1_2- inner node disablement
        // 21 odr_pdaf_1_4- inner node disablement
        // 22 ifd_gmv_1_4- inner node disablement
        // 23 ifd_segmap_bnlm_1_4- inner node disablement
        // 24 smurf_bnlm_1_0- inner node disablement
        // 25 bnlm_3_4- inner node disablement
        // 26 bxt_demosaic- inner node disablement
        // 27 vcsc_2_0_b- inner node disablement
        // 28 gltm_2_0- inner node disablement
        // 29 ifd_segmap_xnr_1_4- inner node disablement
        // 30 smurf_xnr_1_0- inner node disablement
        // 31 xnr_5_4- inner node disablement
        // 32 vcr_3_1- inner node disablement
        // 33 glim_2_0- inner node disablement
        // 34 ifd_segmap_acm_1_4- inner node disablement
        // 35 smurf_acm_1_0- inner node disablement
        // 36 acm_1_2- inner node disablement
        // 37 gammatm_v4- inner node disablement
        // 38 csc_1_1- inner node disablement
        // 39 b2i_ds_1_1- inner node disablement
        // 40 lbff_crop_espa_1_4- inner node disablement
        // 41 image_upscaler_1_1- inner node disablement
        // 42 gmv_statistics_1_1- inner node disablement
        // 43 odr_gmv_feature_1_4- inner node disablement
        // 44 odr_gmv_match_1_4- inner node disablement
        // 45 ifd_segmap_cas_1_4- inner node disablement
        // 46 smurf_cas_1_0- inner node disablement
        // 47 cas_1_1- inner node disablement
        // 48 odr_ofs_mp_1_4- inner node disablement
        // 49 b2i_ds_output_1_1- inner node disablement
        // 50 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x7FFFFFFFFFFFF;
    }
    else // default inner node
    {
        // RBM - 0x0000000000000000006401BD541F6811
        bitmaps.rbm[0] = 0x541F6811;
        bitmaps.rbm[1] = 0x6401BD;
        // DEB - 0x000000000000E1E0000FFFFEEDFBFFF1
        bitmaps.deb[0] = 0xEDFBFFF1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F03A3F9F
        bitmaps.teb[0] = 0xF03A3F9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F16F7FFE7
        bitmaps.reb[0] = 0x16F7FFE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);

}

void LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    // Kernel default enablement
    for (uint8_t i = 0; i < 51; ++i)
    {
        nodeKernels.kernelList[i].run_kernel.enable = 1;
    }

    // Pass-through kernels
    nodeKernels.kernelList[5].run_kernel.enable = 0; // rgb_ir_2_0

    // Kernel current inner node enablement
    uint64_t disabledRunKernelsBitmap[2];
    disabledRunKernelsBitmap[0] = disabledRunKernelsBitmapNotVanished[0];
    disabledRunKernelsBitmap[1] = disabledRunKernelsBitmapNotVanished[1];

    switch (vanishStatus)
    {
        case VanishOption::Full:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0xFFFFFFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0xFFFFFFFF;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0xFFFFFFFF;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0xFFFFFFFF;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0xFFFFFFFF;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0xFFFFFFFF;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0xFFFFFFFF;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0xFFFFFFFF;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xFFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0xFFFFFFFF;

            break;
        }
        case VanishOption::AfterStats:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0x8FFEFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3C0;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0x3FFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0x0;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x0;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xF09FFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x0;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xC7FFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x0;
            disabledRunKernelsBitmap[0] |= 0x7FFFFFFC00300;

            break;
        }
        case VanishOption::AfterTnr:
        {
            bitmaps.rbm[0] = bitmapsNotVanished.rbm[0] & 0xFFFFFFFF;
            bitmaps.rbm[1] = bitmapsNotVanished.rbm[1] & 0x3FFFF;
            bitmaps.rbm[2] = bitmapsNotVanished.rbm[2] & 0x0;
            bitmaps.rbm[3] = bitmapsNotVanished.rbm[3] & 0x0;
            bitmaps.deb[0] = bitmapsNotVanished.deb[0] & 0xFFFFFFFF;
            bitmaps.deb[1] = bitmapsNotVanished.deb[1] & 0xFFFFFFFF;
            bitmaps.deb[2] = bitmapsNotVanished.deb[2] & 0x1F;
            bitmaps.deb[3] = bitmapsNotVanished.deb[3] & 0x0;
            bitmaps.reb[0] = bitmapsNotVanished.reb[0] & 0xFFFFFFFF;
            bitmaps.reb[1] = bitmapsNotVanished.reb[1] & 0x3;
            bitmaps.reb[2] = bitmapsNotVanished.reb[2] & 0x0;
            bitmaps.reb[3] = bitmapsNotVanished.reb[3] & 0x0;
            bitmaps.teb[0] = bitmapsNotVanished.teb[0] & 0xCFFFFFFF;
            bitmaps.teb[1] = bitmapsNotVanished.teb[1] & 0x7;
            disabledRunKernelsBitmap[0] |= 0x7E20000000000;

            break;
        }
    }

    // Set Kernel enablement for inner node + vanish status
    SetDisabledKernels(disabledRunKernelsBitmap);
}

void WithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions)
{

    // No inner nodes
    (void)nodeInnerOptions;
}

void WithCvOuterNode::configVanishStatus(VanishOption vanishStatus)
{
    (void)vanishStatus;
    return;
}

/*
 * Graph 100000
 */
StaticGraph100000::StaticGraph100000(GraphConfiguration100000* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100000, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 9; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100000::~StaticGraph100000()
{
}

StaticGraphStatus imageSubGraphTopology100000::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[7]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[8]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 9; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100001
 */
StaticGraph100001::StaticGraph100001(GraphConfiguration100001* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100001, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 14; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100001::~StaticGraph100001()
{
}

StaticGraphStatus imageSubGraphTopology100001::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[9]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[10]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 14; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffBayerWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100002
 */
StaticGraph100002::StaticGraph100002(GraphConfiguration100002* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100002, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 12; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100002::~StaticGraph100002()
{
}

StaticGraphStatus imageSubGraphTopology100002::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 12; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[8]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[9]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100003
 */
StaticGraph100003::StaticGraph100003(GraphConfiguration100003* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100003, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100003::~StaticGraph100003()
{
}

StaticGraphStatus imageSubGraphTopology100003::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[9]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100137
 */
StaticGraph100137::StaticGraph100137(GraphConfiguration100137* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100137, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 28; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerWithGmvWithTnrWithSapOuterNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerWithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100137::~StaticGraph100137()
{
}

StaticGraphStatus imageSubGraphTopology100137::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[21]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 28; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[18]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[19]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[20]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100137::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000; // Run kernel ids 21 (ifd_segmap_bnlm_1_4) and 22 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000; // Run kernel ids 27 (ifd_segmap_xnr_1_4) and 28 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_acm_1_4) and 33 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000000; // Run kernel ids 56 (ifd_segmap_cas_1_4) and 57 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_bc_1_4) and 46 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_blend_1_4) and 50 (smurf_tnr_blend_1_0)
    }

    lbffBayerWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100079
 */
StaticGraph100079::StaticGraph100079(GraphConfiguration100079* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100079, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100079::~StaticGraph100079()
{
}

StaticGraphStatus imageSubGraphTopology100079::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[11]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[8]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[9]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100080
 */
StaticGraph100080::StaticGraph100080(GraphConfiguration100080* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100080, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100080::~StaticGraph100080()
{
}

StaticGraphStatus imageSubGraphTopology100080::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[11]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[8]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[9]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100138
 */
StaticGraph100138::StaticGraph100138(GraphConfiguration100138* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100138, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 26; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithSapOuterNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100138::~StaticGraph100138()
{
}

StaticGraphStatus imageSubGraphTopology100138::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[20]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[22]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 26; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[17]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[18]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100138::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000000; // Run kernel ids 52 (ifd_segmap_cas_1_4) and 53 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000; // Run kernel ids 41 (ifd_segmap_tnr_bc_1_4) and 42 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_blend_1_4) and 46 (smurf_tnr_blend_1_0)
    }

    lbffBayerNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100142
 */
StaticGraph100142::StaticGraph100142(GraphConfiguration100142* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100142, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 29; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100142::~StaticGraph100142()
{
}

StaticGraphStatus imageSubGraphTopology100142::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 29; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100142::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000000; // Run kernel ids 56 (ifd_segmap_cas_1_4) and 57 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_bc_1_4) and 46 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_blend_1_4) and 50 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100162
 */
StaticGraph100162::StaticGraph100162(GraphConfiguration100162* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100162, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2WithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithTnrWithSapOuterNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2WithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100162::~StaticGraph100162()
{
}

StaticGraphStatus imageSubGraphTopology100162::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2WithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2WithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf2WithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2WithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100162::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000000; // Run kernel ids 60 (ifd_segmap_cas_1_4) and 61 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_bc_1_4) and 50 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_tnr_blend_1_4) and 54 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2WithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100143
 */
StaticGraph100143::StaticGraph100143(GraphConfiguration100143* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100143, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 27; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100143::~StaticGraph100143()
{
}

StaticGraphStatus imageSubGraphTopology100143::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100143::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000000; // Run kernel ids 55 (ifd_segmap_cas_1_4) and 56 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_tnr_bc_1_4) and 45 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_blend_1_4) and 49 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100144
 */
StaticGraph100144::StaticGraph100144(GraphConfiguration100144* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100144, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 28; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100144::~StaticGraph100144()
{
}

StaticGraphStatus imageSubGraphTopology100144::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 28; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_data_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100144::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000000; // Run kernel ids 57 (ifd_segmap_cas_1_4) and 58 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000; // Run kernel ids 46 (ifd_segmap_tnr_bc_1_4) and 47 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000000; // Run kernel ids 50 (ifd_segmap_tnr_blend_1_4) and 51 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100081
 */
StaticGraph100081::StaticGraph100081(GraphConfiguration100081* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100081, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100081::~StaticGraph100081()
{
}

StaticGraphStatus imageSubGraphTopology100081::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[9]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100004
 */
StaticGraph100004::StaticGraph100004(GraphConfiguration100004* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100004, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 12; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2OuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100004::~StaticGraph100004()
{
}

StaticGraphStatus imageSubGraphTopology100004::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 12; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100005
 */
StaticGraph100005::StaticGraph100005(GraphConfiguration100005* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100005, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2OuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100005::~StaticGraph100005()
{
}

StaticGraphStatus imageSubGraphTopology100005::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100006
 */
StaticGraph100006::StaticGraph100006(GraphConfiguration100006* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100006, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 15; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2OuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100006::~StaticGraph100006()
{
}

StaticGraphStatus imageSubGraphTopology100006::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 15; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100066
 */
StaticGraph100066::StaticGraph100066(GraphConfiguration100066* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100066, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2OuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100066::~StaticGraph100066()
{
}

StaticGraphStatus imageSubGraphTopology100066::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100007
 */
StaticGraph100007::StaticGraph100007(GraphConfiguration100007* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100007, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2OuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100007::~StaticGraph100007()
{
}

StaticGraphStatus imageSubGraphTopology100007::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100067
 */
StaticGraph100067::StaticGraph100067(GraphConfiguration100067* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100067, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 23; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2OuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100067::~StaticGraph100067()
{
}

StaticGraphStatus imageSubGraphTopology100067::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 23; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100139
 */
StaticGraph100139::StaticGraph100139(GraphConfiguration100139* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100139, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[29];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[30];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 31; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100139::~StaticGraph100139()
{
}

StaticGraphStatus imageSubGraphTopology100139::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[24]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[26]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[25]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[27]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 31; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[22]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[23]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100139::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000000; // Run kernel ids 60 (ifd_segmap_cas_1_4) and 61 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_bc_1_4) and 50 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_tnr_blend_1_4) and 54 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100169
 */
StaticGraph100169::StaticGraph100169(GraphConfiguration100169* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100169, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2WithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2WithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithTnrWithSapOuterNode = &_lbffBayerPdaf2WithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2WithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100169::~StaticGraph100169()
{
}

StaticGraphStatus imageSubGraphTopology100169::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2WithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf2WithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2WithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf2WithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2WithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100169::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000000; // Run kernel ids 60 (ifd_segmap_cas_1_4) and 61 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_bc_1_4) and 50 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2WithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_tnr_blend_1_4) and 54 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2WithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100008
 */
StaticGraph100008::StaticGraph100008(GraphConfiguration100008* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100008, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 10; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100008::~StaticGraph100008()
{
}

StaticGraphStatus imageSubGraphTopology100008::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[4]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 10; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100009
 */
StaticGraph100009::StaticGraph100009(GraphConfiguration100009* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100009, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 15; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100009::~StaticGraph100009()
{
}

StaticGraphStatus imageSubGraphTopology100009::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[4]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 15; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100010
 */
StaticGraph100010::StaticGraph100010(GraphConfiguration100010* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100010, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 13; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100010::~StaticGraph100010()
{
}

StaticGraphStatus imageSubGraphTopology100010::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[4]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 13; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100011
 */
StaticGraph100011::StaticGraph100011(GraphConfiguration100011* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100011, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 18; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100011::~StaticGraph100011()
{
}

StaticGraphStatus imageSubGraphTopology100011::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[4]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 18; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[10]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100140
 */
StaticGraph100140::StaticGraph100140(GraphConfiguration100140* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100140, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 29; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100140::~StaticGraph100140()
{
}

StaticGraphStatus imageSubGraphTopology100140::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 29; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100140::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000000; // Run kernel ids 59 (ifd_segmap_cas_1_4) and 60 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_bc_1_4) and 49 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000000; // Run kernel ids 52 (ifd_segmap_tnr_blend_1_4) and 53 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100045
 */
StaticGraph100045::StaticGraph100045(GraphConfiguration100045* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100045, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 18; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100045::~StaticGraph100045()
{
}

StaticGraphStatus imageSubGraphTopology100045::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[4]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 18; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100012
 */
StaticGraph100012::StaticGraph100012(GraphConfiguration100012* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100012, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDol2InputsNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvNoTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvNoTnrNoSapOuterNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsNoGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100012::~StaticGraph100012()
{
}

StaticGraphStatus imageSubGraphTopology100012::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[11]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[13]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100013
 */
StaticGraph100013::StaticGraph100013(GraphConfiguration100013* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100013, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDol2InputsWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDol2InputsWithGmvNoTnrNoSapOuterNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsWithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100013::~StaticGraph100013()
{
}

StaticGraphStatus imageSubGraphTopology100013::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100014
 */
StaticGraph100014::StaticGraph100014(GraphConfiguration100014* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100014, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDol2InputsNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrNoSapOuterNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100014::~StaticGraph100014()
{
}

StaticGraphStatus imageSubGraphTopology100014::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100015
 */
StaticGraph100015::StaticGraph100015(GraphConfiguration100015* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100015, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDol2InputsWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDol2InputsWithGmvWithTnrNoSapOuterNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100015::~StaticGraph100015()
{
}

StaticGraphStatus imageSubGraphTopology100015::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100016
 */
StaticGraph100016::StaticGraph100016(GraphConfiguration100016* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100016, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsNoGmvNoTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsNoGmvNoTnrNoSapOuterNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsNoGmvNoTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100016::~StaticGraph100016()
{
}

StaticGraphStatus imageSubGraphTopology100016::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100017
 */
StaticGraph100017::StaticGraph100017(GraphConfiguration100017* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100017, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsWithGmvNoTnrNoSapOuterNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsWithGmvNoTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100017::~StaticGraph100017()
{
}

StaticGraphStatus imageSubGraphTopology100017::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100018
 */
StaticGraph100018::StaticGraph100018(GraphConfiguration100018* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100018, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsNoGmvWithTnrNoSapOuterNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsNoGmvWithTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100018::~StaticGraph100018()
{
}

StaticGraphStatus imageSubGraphTopology100018::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100019
 */
StaticGraph100019::StaticGraph100019(GraphConfiguration100019* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100019, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolOuterNode = &_isysDolOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsWithGmvWithTnrNoSapOuterNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsWithGmvWithTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100019::~StaticGraph100019()
{
}

StaticGraphStatus imageSubGraphTopology100019::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[14]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[15]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[16]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100020
 */
StaticGraph100020::StaticGraph100020(GraphConfiguration100020* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100020, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffRgbIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrNoGmvNoTnrNoSapOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    _irSubGraph.isysOuterNode = &_isysOuterNode;
    _irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.isysOuterNode = &_isysOuterNode;
    _image_irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 2;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100020::~StaticGraph100020()
{
}

StaticGraphStatus imageSubGraphTopology100020::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 10; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100020::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[12]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[13]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100020::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[12]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[13]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100021
 */
StaticGraph100021::StaticGraph100021(GraphConfiguration100021* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100021, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffRgbIrWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[21] = link;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _irSubGraph.isysOuterNode = &_isysOuterNode;
    _irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.isysOuterNode = &_isysOuterNode;
    _image_irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
        _imageSubGraph.swGdcOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.swGdcOuterNode->contextId = 2;
        _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 3;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100021::~StaticGraph100021()
{
}

StaticGraphStatus imageSubGraphTopology100021::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[11]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 15; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100021::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100021::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[11]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100022
 */
StaticGraph100022::StaticGraph100022(GraphConfiguration100022* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100022, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffRgbIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrNoGmvWithTnrNoSapOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[22] = link;

    for (uint8_t i = 0; i < 23; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    _irSubGraph.isysOuterNode = &_isysOuterNode;
    _irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.isysOuterNode = &_isysOuterNode;
    _image_irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 2;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100022::~StaticGraph100022()
{
}

StaticGraphStatus imageSubGraphTopology100022::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 13; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100022::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 23; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[19]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100022::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 23; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[19]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100023
 */
StaticGraph100023::StaticGraph100023(GraphConfiguration100023* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100023, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffRgbIrWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[24] = link;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[25] = link;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[26] = link;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[24] = link;
    _image_irSubGraph.links[27] = link;

    for (uint8_t i = 0; i < 28; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _irSubGraph.isysOuterNode = &_isysOuterNode;
    _irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.isysOuterNode = &_isysOuterNode;
    _image_irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
        _imageSubGraph.swGdcOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.swGdcOuterNode->contextId = 2;
        _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 3;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100023::~StaticGraph100023()
{
}

StaticGraphStatus imageSubGraphTopology100023::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 18; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100023::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 25; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[21]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[22]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[23]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100023::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[4]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[23]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[27]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[19]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 28; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[24]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[25]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[26]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100024
 */
StaticGraph100024::StaticGraph100024(GraphConfiguration100024* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100024, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _lbffBayerNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 8; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode->contextId = 0;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100024::~StaticGraph100024()
{
}

StaticGraphStatus imageSubGraphTopology100024::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[6]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[7]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 8; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100040
 */
StaticGraph100040::StaticGraph100040(GraphConfiguration100040* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100040, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _lbffBayerWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 13; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode->contextId = 0;
    _imageSubGraph.swGdcOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100040::~StaticGraph100040()
{
}

StaticGraphStatus imageSubGraphTopology100040::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[8]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[9]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 13; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[6]->isActive = (lbffBayerWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100041
 */
StaticGraph100041::StaticGraph100041(GraphConfiguration100041* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100041, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _lbffBayerWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 16; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode->contextId = 0;
    _imageSubGraph.swGdcOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100041::~StaticGraph100041()
{
}

StaticGraphStatus imageSubGraphTopology100041::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[6]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[8]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100042
 */
StaticGraph100042::StaticGraph100042(GraphConfiguration100042* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100042, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 11; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 0;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100042::~StaticGraph100042()
{
}

StaticGraphStatus imageSubGraphTopology100042::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[9]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 11; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[6]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[7]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[8]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100027
 */
StaticGraph100027::StaticGraph100027(GraphConfiguration100027* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100027, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 9; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffIrNoGmvNoTnrNoSapOuterNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100027::~StaticGraph100027()
{
}

StaticGraphStatus imageSubGraphTopology100027::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[7]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[7]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[8]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 9; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100028
 */
StaticGraph100028::StaticGraph100028(GraphConfiguration100028* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100028, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffIrWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 14; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffIrWithGmvNoTnrNoSapOuterNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100028::~StaticGraph100028()
{
}

StaticGraphStatus imageSubGraphTopology100028::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffIrWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[9]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[10]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[12]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 14; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffIrWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100029
 */
StaticGraph100029::StaticGraph100029(GraphConfiguration100029* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100029, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 12; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffIrNoGmvWithTnrNoSapOuterNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100029::~StaticGraph100029()
{
}

StaticGraphStatus imageSubGraphTopology100029::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 12; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[8]->isActive = (lbffIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[9]->isActive = (lbffIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100030
 */
StaticGraph100030::StaticGraph100030(GraphConfiguration100030* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100030, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffIrWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffIrWithGmvWithTnrNoSapOuterNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100030::~StaticGraph100030()
{
}

StaticGraphStatus imageSubGraphTopology100030::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffIrWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[3]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[4]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[5]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[6]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[7]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[9]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffIrWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100031
 */
StaticGraph100031::StaticGraph100031(GraphConfiguration100031* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100031, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 11; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100031::~StaticGraph100031()
{
}

StaticGraphStatus imageSubGraphTopology100031::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[3]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 11; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[2]->isActive = (lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_pdaf_data_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100032
 */
StaticGraph100032::StaticGraph100032(GraphConfiguration100032* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100032, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 16; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100032::~StaticGraph100032()
{
}

StaticGraphStatus imageSubGraphTopology100032::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[3]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[2]->isActive = (lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[9]->isActive = (lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100033
 */
StaticGraph100033::StaticGraph100033(GraphConfiguration100033* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100033, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 14; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100033::~StaticGraph100033()
{
}

StaticGraphStatus imageSubGraphTopology100033::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[3]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 14; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[2]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[9]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100034
 */
StaticGraph100034::StaticGraph100034(GraphConfiguration100034* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100034, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[3];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysOuterNode = &_isysOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100034::~StaticGraph100034()
{
}

StaticGraphStatus imageSubGraphTopology100034::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[3]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[2]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[9]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100141
 */
StaticGraph100141::StaticGraph100141(GraphConfiguration100141* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100141, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[29];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 30; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100141::~StaticGraph100141()
{
}

StaticGraphStatus imageSubGraphTopology100141::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[26]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 30; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_pdaf_data_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[22]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100141::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_bnlm_1_4) and 27 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_xnr_1_4) and 33 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000; // Run kernel ids 37 (ifd_segmap_acm_1_4) and 38 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000000; // Run kernel ids 61 (ifd_segmap_cas_1_4) and 62 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000000; // Run kernel ids 50 (ifd_segmap_tnr_bc_1_4) and 51 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000000; // Run kernel ids 54 (ifd_segmap_tnr_blend_1_4) and 55 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100100
 */
StaticGraph100100::StaticGraph100100(GraphConfiguration100100* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100100, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerNoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvNoTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 16; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerNoGmvNoTnrWithSapOuterNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerNoGmvNoTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100100::~StaticGraph100100()
{
}

StaticGraphStatus imageSubGraphTopology100100::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerNoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(lbffBayerNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffBayerNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100100::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x60000; // Run kernel ids 17 (ifd_segmap_bnlm_1_4) and 18 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_xnr_1_4) and 24 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_acm_1_4) and 29 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_cas_1_4) and 37 (smurf_cas_1_0)
    }

    lbffBayerNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100101
 */
StaticGraph100101::StaticGraph100101(GraphConfiguration100101* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100101, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerWithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerWithGmvNoTnrWithSapOuterNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerWithGmvNoTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100101::~StaticGraph100101()
{
}

StaticGraphStatus imageSubGraphTopology100101::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerWithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[16]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive = !(lbffBayerWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->isActive = (lbffBayerWithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100101::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000; // Run kernel ids 18 (ifd_segmap_bnlm_1_4) and 19 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_xnr_1_4) and 25 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_acm_1_4) and 30 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000; // Run kernel ids 40 (ifd_segmap_cas_1_4) and 41 (smurf_cas_1_0)
    }

    lbffBayerWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100102
 */
StaticGraph100102::StaticGraph100102(GraphConfiguration100102* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100102, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithSapOuterNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100102::~StaticGraph100102()
{
}

StaticGraphStatus imageSubGraphTopology100102::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[17]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[18]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100102::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000000; // Run kernel ids 52 (ifd_segmap_cas_1_4) and 53 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000; // Run kernel ids 41 (ifd_segmap_tnr_bc_1_4) and 42 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_blend_1_4) and 46 (smurf_tnr_blend_1_0)
    }

    lbffBayerNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100157
 */
StaticGraph100157::StaticGraph100157(GraphConfiguration100157* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100157, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrWithOpacityOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrWithOpacityOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->destNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithOpacity;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithOpacityOuterNode = &_lbffBayerNoGmvWithTnrWithOpacityOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithOpacityOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100157::~StaticGraph100157()
{
}

StaticGraphStatus imageSubGraphTopology100157::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrWithOpacity initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrWithOpacityInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrWithOpacityInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithOpacityInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithOpacityInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrWithOpacityOuterNode->setInnerNode(lbffBayerNoGmvWithTnrWithOpacityInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerNoGmvWithTnrWithOpacityInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerNoGmvWithTnrWithOpacityInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvWithTnrWithOpacityInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerNoGmvWithTnrWithOpacityInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvWithTnrWithOpacityInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerNoGmvWithTnrWithOpacityInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffBayerNoGmvWithTnrWithOpacityInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffBayerNoGmvWithTnrWithOpacityInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffBayerNoGmvWithTnrWithOpacityInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_WithOpacity:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100157::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_tnr_bc_1_4) and 36 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerNoGmvWithTnrWithOpacityOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000000; // Run kernel ids 39 (ifd_segmap_tnr_blend_1_4) and 40 (smurf_tnr_blend_1_0)
    }

    lbffBayerNoGmvWithTnrWithOpacityOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100103
 */
StaticGraph100103::StaticGraph100103(GraphConfiguration100103* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100103, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 26; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerWithGmvWithTnrWithSapOuterNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerWithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100103::~StaticGraph100103()
{
}

StaticGraphStatus imageSubGraphTopology100103::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[21]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive = !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 26; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[18]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[19]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[20]->isActive = (lbffBayerWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100103::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000; // Run kernel ids 21 (ifd_segmap_bnlm_1_4) and 22 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000; // Run kernel ids 27 (ifd_segmap_xnr_1_4) and 28 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_acm_1_4) and 33 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000000; // Run kernel ids 56 (ifd_segmap_cas_1_4) and 57 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_bc_1_4) and 46 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_blend_1_4) and 50 (smurf_tnr_blend_1_0)
    }

    lbffBayerWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100135
 */
StaticGraph100135::StaticGraph100135(GraphConfiguration100135* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100135, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrWithSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 26; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithSapOuterNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerNoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100135::~StaticGraph100135()
{
}

StaticGraphStatus imageSubGraphTopology100135::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[20]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[22]->isActive = !(lbffBayerNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 26; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[17]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[18]->isActive = (lbffBayerNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100135::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000000; // Run kernel ids 52 (ifd_segmap_cas_1_4) and 53 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000; // Run kernel ids 41 (ifd_segmap_tnr_bc_1_4) and 42 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_blend_1_4) and 46 (smurf_tnr_blend_1_0)
    }

    lbffBayerNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100104
 */
StaticGraph100104::StaticGraph100104(GraphConfiguration100104* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100104, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvNoTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100104::~StaticGraph100104()
{
}

StaticGraphStatus imageSubGraphTopology100104::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100104::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000; // Run kernel ids 21 (ifd_segmap_bnlm_1_4) and 22 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000; // Run kernel ids 27 (ifd_segmap_xnr_1_4) and 28 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_acm_1_4) and 33 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000; // Run kernel ids 40 (ifd_segmap_cas_1_4) and 41 (smurf_cas_1_0)
    }

    lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100105
 */
StaticGraph100105::StaticGraph100105(GraphConfiguration100105* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100105, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100105::~StaticGraph100105()
{
}

StaticGraphStatus imageSubGraphTopology100105::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[20]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[22]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100105::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_bnlm_1_4) and 23 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_xnr_1_4) and 29 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_acm_1_4) and 34 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_cas_1_4) and 45 (smurf_cas_1_0)
    }

    lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100106
 */
StaticGraph100106::StaticGraph100106(GraphConfiguration100106* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100106, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100106::~StaticGraph100106()
{
}

StaticGraphStatus imageSubGraphTopology100106::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100106::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000000; // Run kernel ids 56 (ifd_segmap_cas_1_4) and 57 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_bc_1_4) and 46 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_blend_1_4) and 50 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100166
 */
StaticGraph100166::StaticGraph100166(GraphConfiguration100166* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100166, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 29; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100166::~StaticGraph100166()
{
}

StaticGraphStatus imageSubGraphTopology100166::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 29; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100166::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000000; // Run kernel ids 56 (ifd_segmap_cas_1_4) and 57 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_bc_1_4) and 46 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_blend_1_4) and 50 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100107
 */
StaticGraph100107::StaticGraph100107(GraphConfiguration100107* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100107, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 29; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100107::~StaticGraph100107()
{
}

StaticGraphStatus imageSubGraphTopology100107::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[24]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[26]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[25]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[27]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 29; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[22]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[23]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100107::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000000; // Run kernel ids 60 (ifd_segmap_cas_1_4) and 61 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_bc_1_4) and 50 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_tnr_blend_1_4) and 54 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100145
 */
StaticGraph100145::StaticGraph100145(GraphConfiguration100145* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100145, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[29];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[30];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[31];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 32; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swNntmOuterNode->contextId = 4;
    _imageSubGraph.swScalerOuterNode->contextId = 5;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100145::~StaticGraph100145()
{
}

StaticGraphStatus imageSubGraphTopology100145::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[24]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[26]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[25]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[27]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 32; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[22]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[23]->isActive = (lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100145::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000000; // Run kernel ids 60 (ifd_segmap_cas_1_4) and 61 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_bc_1_4) and 50 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_tnr_blend_1_4) and 54 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100108
 */
StaticGraph100108::StaticGraph100108(GraphConfiguration100108* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100108, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvNoTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100108::~StaticGraph100108()
{
}

StaticGraphStatus imageSubGraphTopology100108::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100108::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000000; // Run kernel ids 39 (ifd_segmap_cas_1_4) and 40 (smurf_cas_1_0)
    }

    lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100109
 */
StaticGraph100109::StaticGraph100109(GraphConfiguration100109* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100109, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvNoTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100109::~StaticGraph100109()
{
}

StaticGraphStatus imageSubGraphTopology100109::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->isActive = (lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100109::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000; // Run kernel ids 21 (ifd_segmap_bnlm_1_4) and 22 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000; // Run kernel ids 27 (ifd_segmap_xnr_1_4) and 28 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_acm_1_4) and 33 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000; // Run kernel ids 43 (ifd_segmap_cas_1_4) and 44 (smurf_cas_1_0)
    }

    lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100110
 */
StaticGraph100110::StaticGraph100110(GraphConfiguration100110* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100110, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100110::~StaticGraph100110()
{
}

StaticGraphStatus imageSubGraphTopology100110::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100110::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000000; // Run kernel ids 55 (ifd_segmap_cas_1_4) and 56 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_tnr_bc_1_4) and 45 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_blend_1_4) and 49 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100111
 */
StaticGraph100111::StaticGraph100111(GraphConfiguration100111* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100111, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 27; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100111::~StaticGraph100111()
{
}

StaticGraphStatus imageSubGraphTopology100111::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100111::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000000; // Run kernel ids 59 (ifd_segmap_cas_1_4) and 60 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_bc_1_4) and 49 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000000; // Run kernel ids 52 (ifd_segmap_tnr_blend_1_4) and 53 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100136
 */
StaticGraph100136::StaticGraph100136(GraphConfiguration100136* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100136, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 27; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100136::~StaticGraph100136()
{
}

StaticGraphStatus imageSubGraphTopology100136::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100136::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000000; // Run kernel ids 55 (ifd_segmap_cas_1_4) and 56 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_tnr_bc_1_4) and 45 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_blend_1_4) and 49 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100200
 */
StaticGraph100200::StaticGraph100200(GraphConfiguration100200* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100200, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 28; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100200::~StaticGraph100200()
{
}

StaticGraphStatus imageSubGraphTopology100200::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 28; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_data_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100200::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000000; // Run kernel ids 57 (ifd_segmap_cas_1_4) and 58 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000; // Run kernel ids 46 (ifd_segmap_tnr_bc_1_4) and 47 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000000; // Run kernel ids 50 (ifd_segmap_tnr_blend_1_4) and 51 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100201
 */
StaticGraph100201::StaticGraph100201(GraphConfiguration100201* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100201, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100201::~StaticGraph100201()
{
}

StaticGraphStatus imageSubGraphTopology100201::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[4]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100112
 */
StaticGraph100112::StaticGraph100112(GraphConfiguration100112* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100112, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol2InputsNoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvNoTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvNoTnrWithSapOuterNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDol2InputsNoGmvNoTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100112::~StaticGraph100112()
{
}

StaticGraphStatus imageSubGraphTopology100112::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[14]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[18]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100112::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol2InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000000; // Run kernel ids 39 (ifd_segmap_cas_1_4) and 40 (smurf_cas_1_0)
    }

    lbffDol2InputsNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100113
 */
StaticGraph100113::StaticGraph100113(GraphConfiguration100113* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100113, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol2InputsWithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsWithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 25; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDol2InputsWithGmvNoTnrWithSapOuterNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDol2InputsWithGmvNoTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100113::~StaticGraph100113()
{
}

StaticGraphStatus imageSubGraphTopology100113::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsWithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsWithGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[13]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[14]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[21]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 25; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[18]->isActive = (lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100113::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000; // Run kernel ids 21 (ifd_segmap_bnlm_1_4) and 22 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000; // Run kernel ids 27 (ifd_segmap_xnr_1_4) and 28 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_acm_1_4) and 33 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol2InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000; // Run kernel ids 43 (ifd_segmap_cas_1_4) and 44 (smurf_cas_1_0)
    }

    lbffDol2InputsWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100114
 */
StaticGraph100114::StaticGraph100114(GraphConfiguration100114* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100114, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol2InputsNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvWithTnrWithSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[29];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 30; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrWithSapOuterNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100114::~StaticGraph100114()
{
}

StaticGraphStatus imageSubGraphTopology100114::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[16]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[17]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[18]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[19]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[23]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[25]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[24]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[26]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 30; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[20]->isActive = (lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[21]->isActive = (lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[22]->isActive = (lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100114::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000000; // Run kernel ids 55 (ifd_segmap_cas_1_4) and 56 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_tnr_bc_1_4) and 45 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_blend_1_4) and 49 (smurf_tnr_blend_1_0)
    }

    lbffDol2InputsNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100146
 */
StaticGraph100146::StaticGraph100146(GraphConfiguration100146* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100146, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol2InputsNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[28];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[29];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 30; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrWithSapOuterNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100146::~StaticGraph100146()
{
}

StaticGraphStatus imageSubGraphTopology100146::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[16]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[17]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[18]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[19]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[23]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[25]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[24]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[26]->isActive = !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 30; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[20]->isActive = (lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[21]->isActive = (lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[22]->isActive = (lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100146::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000000; // Run kernel ids 55 (ifd_segmap_cas_1_4) and 56 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_tnr_bc_1_4) and 45 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffDol2InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_blend_1_4) and 49 (smurf_tnr_blend_1_0)
    }

    lbffDol2InputsNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100115
 */
StaticGraph100115::StaticGraph100115(GraphConfiguration100115* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100115, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol2InputsWithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsWithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[29];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 30; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDol2InputsWithGmvWithTnrWithSapOuterNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDol2InputsWithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100115::~StaticGraph100115()
{
}

StaticGraphStatus imageSubGraphTopology100115::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsWithGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[28]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[16]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[17]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[18]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[19]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[25]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[27]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[26]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[28]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 30; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[20]->isActive = (lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[22]->isActive = (lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[23]->isActive = (lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[24]->isActive = (lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100115::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000000; // Run kernel ids 59 (ifd_segmap_cas_1_4) and 60 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000; // Run kernel ids 48 (ifd_segmap_tnr_bc_1_4) and 49 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffDol2InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000000; // Run kernel ids 52 (ifd_segmap_tnr_blend_1_4) and 53 (smurf_tnr_blend_1_0)
    }

    lbffDol2InputsWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100116
 */
StaticGraph100116::StaticGraph100116(GraphConfiguration100116* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100116, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol3InputsNoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsNoGmvNoTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsNoGmvNoTnrWithSapOuterNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 2;
    _imageSubGraph.lbffDol3InputsNoGmvNoTnrWithSapOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100116::~StaticGraph100116()
{
}

StaticGraphStatus imageSubGraphTopology100116::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsNoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsNoGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[16]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[17]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[18]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[19]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100116::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000; // Run kernel ids 21 (ifd_segmap_bnlm_1_4) and 22 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000; // Run kernel ids 27 (ifd_segmap_xnr_1_4) and 28 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_acm_1_4) and 33 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol3InputsNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000000; // Run kernel ids 40 (ifd_segmap_cas_1_4) and 41 (smurf_cas_1_0)
    }

    lbffDol3InputsNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100117
 */
StaticGraph100117::StaticGraph100117(GraphConfiguration100117* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100117, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol3InputsWithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsWithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 27; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsWithGmvNoTnrWithSapOuterNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 2;
    _imageSubGraph.lbffDol3InputsWithGmvNoTnrWithSapOuterNode->contextId = 3;
    _imageSubGraph.swGdcOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100117::~StaticGraph100117()
{
}

StaticGraphStatus imageSubGraphTopology100117::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsWithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsWithGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[15]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[16]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[17]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[18]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[19]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[20]->isActive = (lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100117::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_bnlm_1_4) and 23 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_xnr_1_4) and 29 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_acm_1_4) and 34 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol3InputsWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000; // Run kernel ids 44 (ifd_segmap_cas_1_4) and 45 (smurf_cas_1_0)
    }

    lbffDol3InputsWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100118
 */
StaticGraph100118::StaticGraph100118(GraphConfiguration100118* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100118, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol3InputsNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsNoGmvWithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 27; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsNoGmvWithTnrWithSapOuterNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 2;
    _imageSubGraph.lbffDol3InputsNoGmvWithTnrWithSapOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100118::~StaticGraph100118()
{
}

StaticGraphStatus imageSubGraphTopology100118::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[17]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[18]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[19]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[20]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[21]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[25]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[26]->isActive = !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[22]->isActive = (lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[23]->isActive = (lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[24]->isActive = (lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100118::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000; // Run kernel ids 24 (ifd_segmap_bnlm_1_4) and 25 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_xnr_1_4) and 31 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000; // Run kernel ids 35 (ifd_segmap_acm_1_4) and 36 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000000000; // Run kernel ids 56 (ifd_segmap_cas_1_4) and 57 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[14]->isActive == false)
    {
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_tnr_bc_1_4) and 46 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[15]->isActive == false)
    {
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffDol3InputsNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_blend_1_4) and 50 (smurf_tnr_blend_1_0)
    }

    lbffDol3InputsNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100119
 */
StaticGraph100119::StaticGraph100119(GraphConfiguration100119* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100119, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffDol3InputsWithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsWithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[29];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[30];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[31];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 32; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsWithGmvWithTnrWithSapOuterNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 2;
    _imageSubGraph.lbffDol3InputsWithGmvWithTnrWithSapOuterNode->contextId = 3;
    _imageSubGraph.swGdcOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100119::~StaticGraph100119()
{
}

StaticGraphStatus imageSubGraphTopology100119::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsWithGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[29]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[28]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[30]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[17]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[18]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[19]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[20]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[21]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[27]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[29]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[28]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[30]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 32; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[22]->isActive = (lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[24]->isActive = (lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[25]->isActive = (lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[26]->isActive = (lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100119::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[11]->isActive == false)
    {
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[12]->isActive == false)
    {
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[13]->isActive == false)
    {
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000000000; // Run kernel ids 60 (ifd_segmap_cas_1_4) and 61 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[14]->isActive == false)
    {
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_tnr_bc_1_4) and 50 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[15]->isActive == false)
    {
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffDol3InputsWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_tnr_blend_1_4) and 54 (smurf_tnr_blend_1_0)
    }

    lbffDol3InputsWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100120
 */
StaticGraph100120::StaticGraph100120(GraphConfiguration100120* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100120, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffRgbIrNoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffRgbIrNoGmvNoTnrWithSapOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[15] = link;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[16] = link;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[23] = link;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffRgbIrNoGmvNoTnrWithSapOuterNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _irSubGraph.lbffRgbIrNoGmvNoTnrWithSapOuterNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _image_irSubGraph.lbffRgbIrNoGmvNoTnrWithSapOuterNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.swSegnetOuterNode->contextId = 1;
        _imageSubGraph.lbffRgbIrNoGmvNoTnrWithSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.swSegnetOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrNoGmvNoTnrWithSapOuterNode->contextId = 2;
        _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 3;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.swSegnetOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrNoGmvNoTnrWithSapOuterNode->contextId = 2;
        _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 3;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100120::~StaticGraph100120()
{
}

StaticGraphStatus imageSubGraphTopology100120::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100120::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000; // Run kernel ids 19 (ifd_segmap_bnlm_1_4) and 20 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_xnr_1_4) and 26 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_acm_1_4) and 31 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000; // Run kernel ids 38 (ifd_segmap_cas_1_4) and 39 (smurf_cas_1_0)
    }

    lbffRgbIrNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100120::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrWithSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[23]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[18]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100120::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000; // Run kernel ids 19 (ifd_segmap_bnlm_1_4) and 20 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_xnr_1_4) and 26 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_acm_1_4) and 31 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000; // Run kernel ids 38 (ifd_segmap_cas_1_4) and 39 (smurf_cas_1_0)
    }

    lbffRgbIrNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100120::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[23]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[18]->isActive = !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100120::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000; // Run kernel ids 19 (ifd_segmap_bnlm_1_4) and 20 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_xnr_1_4) and 26 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000; // Run kernel ids 30 (ifd_segmap_acm_1_4) and 31 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000; // Run kernel ids 38 (ifd_segmap_cas_1_4) and 39 (smurf_cas_1_0)
    }

    lbffRgbIrNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100121
 */
StaticGraph100121::StaticGraph100121(GraphConfiguration100121* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100121, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffRgbIrWithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffRgbIrWithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[15] = link;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[16] = link;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[17] = link;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[18] = link;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[24] = link;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[25] = link;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[26] = link;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[24] = link;
    _image_irSubGraph.links[27] = link;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[25] = link;
    _image_irSubGraph.links[28] = link;

    for (uint8_t i = 0; i < 29; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffRgbIrWithGmvNoTnrWithSapOuterNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _irSubGraph.lbffRgbIrWithGmvNoTnrWithSapOuterNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _image_irSubGraph.lbffRgbIrWithGmvNoTnrWithSapOuterNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    _image_irSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.swSegnetOuterNode->contextId = 1;
        _imageSubGraph.lbffRgbIrWithGmvNoTnrWithSapOuterNode->contextId = 2;
        _imageSubGraph.swGdcOuterNode->contextId = 3;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.swSegnetOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrWithGmvNoTnrWithSapOuterNode->contextId = 2;
        _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 3;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.swSegnetOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrWithGmvNoTnrWithSapOuterNode->contextId = 2;
        _image_irSubGraph.swGdcOuterNode->contextId = 3;
        _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 4;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100121::~StaticGraph100121()
{
}

StaticGraphStatus imageSubGraphTopology100121::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[11]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->isActive = (lbffRgbIrWithGmvNoTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100121::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000; // Run kernel ids 42 (ifd_segmap_cas_1_4) and 43 (smurf_cas_1_0)
    }

    lbffRgbIrWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100121::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrWithSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[11]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[23]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[25]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[20]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 26; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->isActive = (lbffRgbIrWithGmvNoTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100121::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000; // Run kernel ids 42 (ifd_segmap_cas_1_4) and 43 (smurf_cas_1_0)
    }

    lbffRgbIrWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100121::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[28]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[10]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[11]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[25]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[26]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[27]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[28]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[23]->isActive = !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 29; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->isActive = (lbffRgbIrWithGmvNoTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100121::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_acm_1_4) and 32 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000; // Run kernel ids 42 (ifd_segmap_cas_1_4) and 43 (smurf_cas_1_0)
    }

    lbffRgbIrWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100122
 */
StaticGraph100122::StaticGraph100122(GraphConfiguration100122* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100122, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffRgbIrNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffRgbIrNoGmvWithTnrWithSapOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[15] = link;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[16] = link;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[17] = link;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[18] = link;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[19] = link;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[20] = link;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[21] = link;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[24] = link;
    _image_irSubGraph.links[24] = link;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[25] = link;
    _image_irSubGraph.links[25] = link;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[26] = link;
    _image_irSubGraph.links[26] = link;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[27] = link;
    _image_irSubGraph.links[27] = link;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[28] = link;
    _image_irSubGraph.links[28] = link;

    link = &_graphLinks[29];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[29] = link;
    _image_irSubGraph.links[29] = link;

    link = &_graphLinks[30];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[30] = link;
    _image_irSubGraph.links[30] = link;

    link = &_graphLinks[31];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[31] = link;
    _image_irSubGraph.links[31] = link;

    for (uint8_t i = 0; i < 32; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffRgbIrNoGmvWithTnrWithSapOuterNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _irSubGraph.lbffRgbIrNoGmvWithTnrWithSapOuterNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _image_irSubGraph.lbffRgbIrNoGmvWithTnrWithSapOuterNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.swSegnetOuterNode->contextId = 1;
        _imageSubGraph.lbffRgbIrNoGmvWithTnrWithSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.swSegnetOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrNoGmvWithTnrWithSapOuterNode->contextId = 2;
        _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 3;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.swSegnetOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrNoGmvWithTnrWithSapOuterNode->contextId = 2;
        _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 3;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100122::~StaticGraph100122()
{
}

StaticGraphStatus imageSubGraphTopology100122::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100122::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_bnlm_1_4) and 23 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_xnr_1_4) and 29 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_acm_1_4) and 34 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000000; // Run kernel ids 54 (ifd_segmap_cas_1_4) and 55 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000; // Run kernel ids 43 (ifd_segmap_tnr_bc_1_4) and 44 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000; // Run kernel ids 47 (ifd_segmap_tnr_blend_1_4) and 48 (smurf_tnr_blend_1_0)
    }

    lbffRgbIrNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100122::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrWithSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[31]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[25]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[26]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[27]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[31]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[23]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 32; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input
    subGraphLinks[28]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[29]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[30]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100122::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_bnlm_1_4) and 23 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_xnr_1_4) and 29 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_acm_1_4) and 34 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000000; // Run kernel ids 54 (ifd_segmap_cas_1_4) and 55 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000; // Run kernel ids 43 (ifd_segmap_tnr_bc_1_4) and 44 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000; // Run kernel ids 47 (ifd_segmap_tnr_blend_1_4) and 48 (smurf_tnr_blend_1_0)
    }

    lbffRgbIrNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100122::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[31]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[25]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[26]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[27]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[31]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[23]->isActive = !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 32; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffRgbIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input
    subGraphLinks[28]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[29]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[30]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100122::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_bnlm_1_4) and 23 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_xnr_1_4) and 29 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_acm_1_4) and 34 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000000; // Run kernel ids 54 (ifd_segmap_cas_1_4) and 55 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000000; // Run kernel ids 43 (ifd_segmap_tnr_bc_1_4) and 44 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffRgbIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000; // Run kernel ids 47 (ifd_segmap_tnr_blend_1_4) and 48 (smurf_tnr_blend_1_0)
    }

    lbffRgbIrNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100123
 */
StaticGraph100123::StaticGraph100123(GraphConfiguration100123* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100123, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffRgbIrWithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffRgbIrWithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[15] = link;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[16] = link;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[17] = link;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[18] = link;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[19] = link;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[20] = link;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[21] = link;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[22] = link;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[23] = link;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[24] = link;
    _image_irSubGraph.links[24] = link;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[25] = link;
    _image_irSubGraph.links[25] = link;

    link = &_graphLinks[26];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[26] = link;
    _image_irSubGraph.links[26] = link;

    link = &_graphLinks[27];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[24] = link;
    _image_irSubGraph.links[27] = link;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[25] = link;
    _image_irSubGraph.links[28] = link;

    link = &_graphLinks[29];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[26] = link;
    _image_irSubGraph.links[29] = link;

    link = &_graphLinks[30];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[27] = link;
    _image_irSubGraph.links[30] = link;

    link = &_graphLinks[31];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[28] = link;
    _image_irSubGraph.links[31] = link;

    link = &_graphLinks[32];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[29] = link;
    _image_irSubGraph.links[32] = link;

    link = &_graphLinks[33];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[30] = link;
    _image_irSubGraph.links[33] = link;

    link = &_graphLinks[34];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[31] = link;
    _image_irSubGraph.links[34] = link;

    link = &_graphLinks[35];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[32] = link;
    _image_irSubGraph.links[35] = link;

    link = &_graphLinks[36];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[33] = link;
    _image_irSubGraph.links[36] = link;

    for (uint8_t i = 0; i < 37; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffRgbIrWithGmvWithTnrWithSapOuterNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _irSubGraph.lbffRgbIrWithGmvWithTnrWithSapOuterNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _image_irSubGraph.lbffRgbIrWithGmvWithTnrWithSapOuterNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    _image_irSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.swSegnetOuterNode->contextId = 1;
        _imageSubGraph.lbffRgbIrWithGmvWithTnrWithSapOuterNode->contextId = 2;
        _imageSubGraph.swGdcOuterNode->contextId = 3;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.swSegnetOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrWithGmvWithTnrWithSapOuterNode->contextId = 2;
        _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 3;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.swSegnetOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrWithGmvWithTnrWithSapOuterNode->contextId = 2;
        _image_irSubGraph.swGdcOuterNode->contextId = 3;
        _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 4;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100123::~StaticGraph100123()
{
}

StaticGraphStatus imageSubGraphTopology100123::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[19]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100123::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000000; // Run kernel ids 58 (ifd_segmap_cas_1_4) and 59 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000; // Run kernel ids 47 (ifd_segmap_tnr_bc_1_4) and 48 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000000000; // Run kernel ids 51 (ifd_segmap_tnr_blend_1_4) and 52 (smurf_tnr_blend_1_0)
    }

    lbffRgbIrWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100123::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrWithSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[33]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[26]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[27]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[28]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[29]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[33]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[25]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 34; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[19]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input
    subGraphLinks[30]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[31]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[32]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100123::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000000; // Run kernel ids 58 (ifd_segmap_cas_1_4) and 59 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000; // Run kernel ids 47 (ifd_segmap_tnr_bc_1_4) and 48 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000000000; // Run kernel ids 51 (ifd_segmap_tnr_blend_1_4) and 52 (smurf_tnr_blend_1_0)
    }

    lbffRgbIrWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100123::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[36]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrWithSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[22]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[24]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[29]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[30]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[31]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[32]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[36]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[28]->isActive = !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 37; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[19]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[20]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[21]->isActive = (lbffRgbIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input
    subGraphLinks[33]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[34]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[35]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100123::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000000; // Run kernel ids 58 (ifd_segmap_cas_1_4) and 59 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000000000; // Run kernel ids 47 (ifd_segmap_tnr_bc_1_4) and 48 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffRgbIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0x18000000000000; // Run kernel ids 51 (ifd_segmap_tnr_blend_1_4) and 52 (smurf_tnr_blend_1_0)
    }

    lbffRgbIrWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100127
 */
StaticGraph100127::StaticGraph100127(GraphConfiguration100127* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100127, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffIrNoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffIrNoGmvNoTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 15; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffIrNoGmvNoTnrWithSapOuterNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffIrNoGmvNoTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100127::~StaticGraph100127()
{
}

StaticGraphStatus imageSubGraphTopology100127::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrNoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrNoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrNoGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrNoGmvNoTnrWithSapOuterNode->setInnerNode(lbffIrNoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[9]->isActive = !(lbffIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[10]->isActive = !(lbffIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[11]->isActive = !(lbffIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[12]->isActive = !(lbffIrNoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffIrNoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Ir_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffIrNoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Ir_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 15; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrNoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100127::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x30000; // Run kernel ids 16 (ifd_segmap_bnlm_1_4) and 17 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_xnr_1_4) and 23 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_cas_1_4) and 34 (smurf_cas_1_0)
    }

    lbffIrNoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100128
 */
StaticGraph100128::StaticGraph100128(GraphConfiguration100128* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100128, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffIrWithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffIrWithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffIrWithGmvNoTnrWithSapOuterNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffIrWithGmvNoTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100128::~StaticGraph100128()
{
}

StaticGraphStatus imageSubGraphTopology100128::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrWithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrWithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrWithGmvNoTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrWithGmvNoTnrWithSapOuterNode->setInnerNode(lbffIrWithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[9]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[10]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[11]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[12]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffIrWithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[13]->isActive = (lbffIrWithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Ir_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrWithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100128::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x60000; // Run kernel ids 17 (ifd_segmap_bnlm_1_4) and 18 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_xnr_1_4) and 24 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000; // Run kernel ids 37 (ifd_segmap_cas_1_4) and 38 (smurf_cas_1_0)
    }

    lbffIrWithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100129
 */
StaticGraph100129::StaticGraph100129(GraphConfiguration100129* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100129, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffIrNoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffIrNoGmvWithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffIrNoGmvWithTnrWithSapOuterNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffIrNoGmvWithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100129::~StaticGraph100129()
{
}

StaticGraphStatus imageSubGraphTopology100129::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrNoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrNoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrNoGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrNoGmvWithTnrWithSapOuterNode->setInnerNode(lbffIrNoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[11]->isActive = !(lbffIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffIrNoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[18]->isActive = !(lbffIrNoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffIrNoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->isActive = (lbffIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[16]->isActive = (lbffIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[17]->isActive = (lbffIrNoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Ir_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrNoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100129::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x180000; // Run kernel ids 19 (ifd_segmap_bnlm_1_4) and 20 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_xnr_1_4) and 26 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000; // Run kernel ids 49 (ifd_segmap_cas_1_4) and 50 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000; // Run kernel ids 38 (ifd_segmap_tnr_bc_1_4) and 39 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000; // Run kernel ids 42 (ifd_segmap_tnr_blend_1_4) and 43 (smurf_tnr_blend_1_0)
    }

    lbffIrNoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100130
 */
StaticGraph100130::StaticGraph100130(GraphConfiguration100130* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100130, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffIrWithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffIrWithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 25; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffIrWithGmvWithTnrWithSapOuterNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffIrWithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100130::~StaticGraph100130()
{
}

StaticGraphStatus imageSubGraphTopology100130::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrWithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrWithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrWithGmvWithTnrWithSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrWithGmvWithTnrWithSapOuterNode->setInnerNode(lbffIrWithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[11]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[21]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->isActive = !(lbffIrWithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 25; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->isActive = (lbffIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[17]->isActive = (lbffIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[18]->isActive = (lbffIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[19]->isActive = (lbffIrWithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Ir_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrWithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100130::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x300000; // Run kernel ids 20 (ifd_segmap_bnlm_1_4) and 21 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_xnr_1_4) and 27 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000000; // Run kernel ids 53 (ifd_segmap_cas_1_4) and 54 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000; // Run kernel ids 42 (ifd_segmap_tnr_bc_1_4) and 43 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000; // Run kernel ids 46 (ifd_segmap_tnr_blend_1_4) and 47 (smurf_tnr_blend_1_0)
    }

    lbffIrWithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100131
 */
StaticGraph100131::StaticGraph100131(GraphConfiguration100131* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100131, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 18; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100131::~StaticGraph100131()
{
}

StaticGraphStatus imageSubGraphTopology100131::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 18; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_pdaf_data_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100131::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000; // Run kernel ids 22 (ifd_segmap_bnlm_1_4) and 23 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x30000000; // Run kernel ids 28 (ifd_segmap_xnr_1_4) and 29 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000; // Run kernel ids 33 (ifd_segmap_acm_1_4) and 34 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000000; // Run kernel ids 41 (ifd_segmap_cas_1_4) and 42 (smurf_cas_1_0)
    }

    lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100132
 */
StaticGraph100132::StaticGraph100132(GraphConfiguration100132* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100132, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 23; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100132::~StaticGraph100132()
{
}

StaticGraphStatus imageSubGraphTopology100132::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[18]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[19]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 23; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_pdaf_data_input
    subGraphLinks[16]->isActive = (lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_gmv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100132::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x1800000; // Run kernel ids 23 (ifd_segmap_bnlm_1_4) and 24 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x60000000; // Run kernel ids 29 (ifd_segmap_xnr_1_4) and 30 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000; // Run kernel ids 34 (ifd_segmap_acm_1_4) and 35 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000; // Run kernel ids 45 (ifd_segmap_cas_1_4) and 46 (smurf_cas_1_0)
    }

    lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100133
 */
StaticGraph100133::StaticGraph100133(GraphConfiguration100133* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100133, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 23; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100133::~StaticGraph100133()
{
}

StaticGraphStatus imageSubGraphTopology100133::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[21]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 23; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_data_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[19]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100133::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000; // Run kernel ids 25 (ifd_segmap_bnlm_1_4) and 26 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x180000000; // Run kernel ids 31 (ifd_segmap_xnr_1_4) and 32 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x3000000000; // Run kernel ids 36 (ifd_segmap_acm_1_4) and 37 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x600000000000000; // Run kernel ids 57 (ifd_segmap_cas_1_4) and 58 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC00000000000; // Run kernel ids 46 (ifd_segmap_tnr_bc_1_4) and 47 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000000; // Run kernel ids 50 (ifd_segmap_tnr_blend_1_4) and 51 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100134
 */
StaticGraph100134::StaticGraph100134(GraphConfiguration100134* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100134, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _swSegnetOuterNode.Init(&_graphConfiguration.swSegnetOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 31;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 35;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 33;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 34;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[27];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 28; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100134::~StaticGraph100134()
{
}

StaticGraphStatus imageSubGraphTopology100134::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[26]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 28; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_pdaf_data_input
    subGraphLinks[18]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_gmv_input
    subGraphLinks[20]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_blend_yuv_input
    subGraphLinks[21]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_rs_input
    subGraphLinks[22]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_bc_yuv_input

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus imageSubGraphTopology100134::updateSegmentAwareKernels()
{
    // For run kernels disablement
    uint64_t disabledRunKernelsBitmap[] = {0x0, 0x0};

    // Link to terminal_connect_bnlm_sm_input
    if (subGraphLinks[5]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 30); // Terminal id 30 - terminal_connect_bnlm_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 29); // Device id 29 - ifd_segmap_bnlm_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[0] &= ~(1 << 30); // Device id 30 - smurf_bnlm_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000; // Run kernel ids 26 (ifd_segmap_bnlm_1_4) and 27 (smurf_bnlm_1_0)
    }

    // Link to terminal_connect_xnr_sm_input
    if (subGraphLinks[6]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[0] &= ~(1 << 31); // Terminal id 31 - terminal_connect_xnr_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 4); // Device id 36 - ifd_segmap_xnr_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 5); // Device id 37 - smurf_xnr_1_0
        disabledRunKernelsBitmap[0] |= 0x300000000; // Run kernel ids 32 (ifd_segmap_xnr_1_4) and 33 (smurf_xnr_1_0)
    }

    // Link to terminal_connect_acm_sm_input
    if (subGraphLinks[7]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 0); // Terminal id 32 - terminal_connect_acm_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 9); // Device id 41 - ifd_segmap_acm_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 10); // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000; // Run kernel ids 37 (ifd_segmap_acm_1_4) and 38 (smurf_acm_1_0)
    }

    // Link to terminal_connect_cas_sm_input
    if (subGraphLinks[8]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 3); // Terminal id 35 - terminal_connect_cas_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 6); // Device id 70 - ifd_segmap_cas_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 7); // Device id 71 - smurf_cas_1_0
        disabledRunKernelsBitmap[0] |= 0x6000000000000000; // Run kernel ids 61 (ifd_segmap_cas_1_4) and 62 (smurf_cas_1_0)
    }

    // Link to terminal_connect_bc_sm_input
    if (subGraphLinks[9]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 1); // Terminal id 33 - terminal_connect_bc_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 25); // Device id 57 - ifd_segmap_tnr_bc_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 26); // Device id 58 - smurf_tnr_bc_1_0
        disabledRunKernelsBitmap[0] |= 0xC000000000000; // Run kernel ids 50 (ifd_segmap_tnr_bc_1_4) and 51 (smurf_tnr_bc_1_0)
    }

    // Link to terminal_connect_blend_sm_input
    if (subGraphLinks[10]->isActive == false)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &= ~(1 << 2); // Terminal id 34 - terminal_connect_blend_sm_input
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &= ~(1 << 31); // Device id 63 - ifd_segmap_tnr_blend_1_4
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->bitmaps.deb[2] &= ~(1 << 0); // Device id 64 - smurf_tnr_blend_1_0
        disabledRunKernelsBitmap[0] |= 0xC0000000000000; // Run kernel ids 54 (ifd_segmap_tnr_blend_1_4) and 55 (smurf_tnr_blend_1_0)
    }

    lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode->SetDisabledKernels(disabledRunKernelsBitmap);
    return StaticGraphStatus::SG_OK;
}
/*
 * Graph 100235
 */
StaticGraph100235::StaticGraph100235(GraphConfiguration100235* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100235, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 11; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100235::~StaticGraph100235()
{
}

StaticGraphStatus imageSubGraphTopology100235::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[9]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 11; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100236
 */
StaticGraph100236::StaticGraph100236(GraphConfiguration100236* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100236, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 16; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100236::~StaticGraph100236()
{
}

StaticGraphStatus imageSubGraphTopology100236::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100202
 */
StaticGraph100202::StaticGraph100202(GraphConfiguration100202* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100202, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 14; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100202::~StaticGraph100202()
{
}

StaticGraphStatus imageSubGraphTopology100202::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 14; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100203
 */
StaticGraph100203::StaticGraph100203(GraphConfiguration100203* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100203, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100203::~StaticGraph100203()
{
}

StaticGraphStatus imageSubGraphTopology100203::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[11]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[12]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[13]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100279
 */
StaticGraph100279::StaticGraph100279(GraphConfiguration100279* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100279, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100279::~StaticGraph100279()
{
}

StaticGraphStatus imageSubGraphTopology100279::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100280
 */
StaticGraph100280::StaticGraph100280(GraphConfiguration100280* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100280, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100280::~StaticGraph100280()
{
}

StaticGraphStatus imageSubGraphTopology100280::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100281
 */
StaticGraph100281::StaticGraph100281(GraphConfiguration100281* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100281, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100281::~StaticGraph100281()
{
}

StaticGraphStatus imageSubGraphTopology100281::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[11]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[12]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[13]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100204
 */
StaticGraph100204::StaticGraph100204(GraphConfiguration100204* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100204, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 14; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100204::~StaticGraph100204()
{
}

StaticGraphStatus imageSubGraphTopology100204::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerPdaf2NoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 14; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100205
 */
StaticGraph100205::StaticGraph100205(GraphConfiguration100205* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100205, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100205::~StaticGraph100205()
{
}

StaticGraphStatus imageSubGraphTopology100205::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffBayerPdaf2WithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100206
 */
StaticGraph100206::StaticGraph100206(GraphConfiguration100206* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100206, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100206::~StaticGraph100206()
{
}

StaticGraphStatus imageSubGraphTopology100206::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100266
 */
StaticGraph100266::StaticGraph100266(GraphConfiguration100266* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100266, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100266::~StaticGraph100266()
{
}

StaticGraphStatus imageSubGraphTopology100266::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100207
 */
StaticGraph100207::StaticGraph100207(GraphConfiguration100207* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100207, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100207::~StaticGraph100207()
{
}

StaticGraphStatus imageSubGraphTopology100207::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[15]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[16]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100267
 */
StaticGraph100267::StaticGraph100267(GraphConfiguration100267* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100267, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);
    _lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[24];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 25; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100267::~StaticGraph100267()
{
}

StaticGraphStatus imageSubGraphTopology100267::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf2WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[8]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 25; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[15]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[16]->isActive = (lbffBayerPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf2WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100208
 */
StaticGraph100208::StaticGraph100208(GraphConfiguration100208* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100208, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 12; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100208::~StaticGraph100208()
{
}

StaticGraphStatus imageSubGraphTopology100208::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3NoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 12; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100209
 */
StaticGraph100209::StaticGraph100209(GraphConfiguration100209* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100209, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 17; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100209::~StaticGraph100209()
{
}

StaticGraphStatus imageSubGraphTopology100209::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf3WithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100210
 */
StaticGraph100210::StaticGraph100210(GraphConfiguration100210* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100210, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 15; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100210::~StaticGraph100210()
{
}

StaticGraphStatus imageSubGraphTopology100210::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 15; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100211
 */
StaticGraph100211::StaticGraph100211(GraphConfiguration100211* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100211, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100211::~StaticGraph100211()
{
}

StaticGraphStatus imageSubGraphTopology100211::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf3WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100245
 */
StaticGraph100245::StaticGraph100245(GraphConfiguration100245* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100245, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 20; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100245::~StaticGraph100245()
{
}

StaticGraphStatus imageSubGraphTopology100245::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[6]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100212
 */
StaticGraph100212::StaticGraph100212(GraphConfiguration100212* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100212, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDol2InputsNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvNoTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvNoTnrNoSapOuterNode = &_lbffDol2InputsNoGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsNoGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100212::~StaticGraph100212()
{
}

StaticGraphStatus imageSubGraphTopology100212::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffDol2InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100213
 */
StaticGraph100213::StaticGraph100213(GraphConfiguration100213* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100213, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDol2InputsWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDol2InputsWithGmvNoTnrNoSapOuterNode = &_lbffDol2InputsWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsWithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100213::~StaticGraph100213()
{
}

StaticGraphStatus imageSubGraphTopology100213::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffDol2InputsWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol2Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100214
 */
StaticGraph100214::StaticGraph100214(GraphConfiguration100214* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100214, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDol2InputsNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrNoSapOuterNode = &_lbffDol2InputsNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swNntmOuterNode->contextId = 2;
    _imageSubGraph.swScalerOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100214::~StaticGraph100214()
{
}

StaticGraphStatus imageSubGraphTopology100214::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffDol2InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100215
 */
StaticGraph100215::StaticGraph100215(GraphConfiguration100215* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100215, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDol2InputsWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol2InputsWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 22; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDol2InputsWithGmvWithTnrNoSapOuterNode = &_lbffDol2InputsWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDol2InputsWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100215::~StaticGraph100215()
{
}

StaticGraphStatus imageSubGraphTopology100215::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol2InputsWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol2InputsWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol2InputsWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol2InputsWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol2InputsWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[8]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[9]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[10]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[11]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 22; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[12]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[14]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[15]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[16]->isActive = (lbffDol2InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol2Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol2InputsWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol2InputsWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100216
 */
StaticGraph100216::StaticGraph100216(GraphConfiguration100216* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100216, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsNoGmvNoTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsNoGmvNoTnrNoSapOuterNode = &_lbffDol3InputsNoGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsNoGmvNoTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100216::~StaticGraph100216()
{
}

StaticGraphStatus imageSubGraphTopology100216::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[9]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffDol3InputsNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100217
 */
StaticGraph100217::StaticGraph100217(GraphConfiguration100217* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100217, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsWithGmvNoTnrNoSapOuterNode = &_lbffDol3InputsWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsWithGmvNoTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100217::~StaticGraph100217()
{
}

StaticGraphStatus imageSubGraphTopology100217::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[9]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[16]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive = !(lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->isActive = (lbffDol3InputsWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol3Inputs_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100218
 */
StaticGraph100218::StaticGraph100218(GraphConfiguration100218* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100218, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsNoGmvWithTnrNoSapOuterNodeConfiguration);
    _swNntmOuterNode.Init(&_graphConfiguration.swNntmOuterNodeConfiguration);
    _swScalerOuterNode.Init(&_graphConfiguration.swScalerOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwNntm;
    link->destNode = &_swNntmOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[21];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::SwNntm;
    link->srcNode = &_swNntmOuterNode;
    link->srcTerminalId = 2;
    link->dest = GraphElementType::SwScaler;
    link->destNode = &_swScalerOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::SwScaler;
    link->srcNode = &_swScalerOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedSecondary;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsNoGmvWithTnrNoSapOuterNode = &_lbffDol3InputsNoGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swNntmOuterNode = &_swNntmOuterNode;
    _imageSubGraph.swScalerOuterNode = &_swScalerOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsNoGmvWithTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swNntmOuterNode->contextId = 3;
    _imageSubGraph.swScalerOuterNode->contextId = 4;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100218::~StaticGraph100218()
{
}

StaticGraphStatus imageSubGraphTopology100218::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[9]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[17]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_nntm:terminal_connect_input
    subGraphLinks[18]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive = !(lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_nntm:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->isActive = (lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[15]->isActive = (lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[16]->isActive = (lbffDol3InputsNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol3Inputs_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100219
 */
StaticGraph100219::StaticGraph100219(GraphConfiguration100219* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100219, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);
    _lbffDolSmoothOuterNode.Init(&_graphConfiguration.lbffDolSmoothOuterNodeConfiguration);
    _lbffDol3InputsWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffDol3InputsWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDolSmooth;
    link->destNode = &_lbffDolSmoothOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffDolSmooth;
    link->srcNode = &_lbffDolSmoothOuterNode;
    link->srcTerminalId = 16;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[6];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 5;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrNoSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[23];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.lbffDolSmoothOuterNode = &_lbffDolSmoothOuterNode;
    _imageSubGraph.lbffDol3InputsWithGmvWithTnrNoSapOuterNode = &_lbffDol3InputsWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffDolSmoothOuterNode->contextId = 1;
    _imageSubGraph.lbffDol3InputsWithGmvWithTnrNoSapOuterNode->contextId = 2;
    _imageSubGraph.swGdcOuterNode->contextId = 3;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100219::~StaticGraph100219()
{
}

StaticGraphStatus imageSubGraphTopology100219::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffDol3InputsWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffDol3InputsWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffDol3InputsWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffDol3InputsWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffDol3InputsWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[9]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[20]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[22]->isActive = !(lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[16]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[17]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[18]->isActive = (lbffDol3InputsWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Dol3Inputs_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffDol3InputsWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffDol3InputsWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100220
 */
StaticGraph100220::StaticGraph100220(GraphConfiguration100220* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100220, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffRgbIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrNoGmvNoTnrNoSapOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 2;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100220::~StaticGraph100220()
{
}

StaticGraphStatus imageSubGraphTopology100220::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 12; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100220::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100220::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[10]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[11]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[15]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100221
 */
StaticGraph100221::StaticGraph100221(GraphConfiguration100221* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100221, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffRgbIrWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[23] = link;

    for (uint8_t i = 0; i < 24; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode = &_lbffRgbIrWithGmvNoTnrNoSapOuterNode;
    _image_irSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
        _imageSubGraph.swGdcOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.swGdcOuterNode->contextId = 2;
        _image_irSubGraph.lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->contextId = 3;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100221::~StaticGraph100221()
{
}

StaticGraphStatus imageSubGraphTopology100221::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 17; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100221::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100221::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvNoTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[13]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[23]->isActive = !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvNoTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 24; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvNoTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100222
 */
StaticGraph100222::StaticGraph100222(GraphConfiguration100222* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100222, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffRgbIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrNoGmvWithTnrNoSapOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[24] = link;
    _image_irSubGraph.links[24] = link;

    for (uint8_t i = 0; i < 25; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 2;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100222::~StaticGraph100222()
{
}

StaticGraphStatus imageSubGraphTopology100222::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 15; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100222::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 25; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[21]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[22]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[23]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100222::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrNoGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[18]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[16]->isActive = !(lbffRgbIrNoGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 25; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[11]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[12]->isActive = (lbffRgbIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[21]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[22]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[23]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrNoGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100223
 */
StaticGraph100223::StaticGraph100223(GraphConfiguration100223* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100223, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
    ,_irSubGraph(_sinkMappingConfiguration)
    ,_image_irSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffRgbIrWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);
    _lbffRgbIrIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffRgbIrIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[0] = link;
    _irSubGraph.links[0] = link;
    _image_irSubGraph.links[0] = link;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[1] = link;
    _irSubGraph.links[1] = link;
    _image_irSubGraph.links[1] = link;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[2] = link;
    _irSubGraph.links[2] = link;
    _image_irSubGraph.links[2] = link;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[3] = link;
    _irSubGraph.links[3] = link;
    _image_irSubGraph.links[3] = link;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[4] = link;
    _irSubGraph.links[4] = link;
    _image_irSubGraph.links[4] = link;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[5] = link;
    _irSubGraph.links[5] = link;
    _image_irSubGraph.links[5] = link;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[6] = link;
    _irSubGraph.links[6] = link;
    _image_irSubGraph.links[6] = link;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[11] = link;
    _irSubGraph.links[11] = link;
    _image_irSubGraph.links[11] = link;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[12] = link;
    _irSubGraph.links[12] = link;
    _image_irSubGraph.links[12] = link;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[13] = link;
    _irSubGraph.links[13] = link;
    _image_irSubGraph.links[13] = link;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _imageSubGraph.links[14] = link;
    _irSubGraph.links[14] = link;
    _image_irSubGraph.links[14] = link;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[15] = link;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[16] = link;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[17] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 14;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[24] = link;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[22] = link;
    _image_irSubGraph.links[25] = link;

    link = &_graphLinks[26];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[26] = link;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[24] = link;
    _image_irSubGraph.links[27] = link;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[25] = link;
    _image_irSubGraph.links[28] = link;

    link = &_graphLinks[29];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[26] = link;
    _image_irSubGraph.links[29] = link;

    for (uint8_t i = 0; i < 30; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _image_irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode = &_lbffRgbIrWithGmvWithTnrNoSapOuterNode;
    _image_irSubGraph.swGdcOuterNode = &_swGdcOuterNode;
    _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.previewIr == static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_imageSubGraph;

        // logical node IDs
        _imageSubGraph.isysWithCvOuterNode->contextId = 0;
        _imageSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
        _imageSubGraph.swGdcOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.video == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.stills == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.thumbnail == static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_irSubGraph;

        // logical node IDs
        _irSubGraph.isysWithCvOuterNode->contextId = 0;
        _irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
        _irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 2;
    }
    else if (
        // image sink group
        (_graphConfiguration.sinkMappingConfiguration.preview != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.video != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.postProcessingVideo != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.stills != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.thumbnail != static_cast<int>(HwSink::Disconnected)) &&
        // raw sink group
        (_graphConfiguration.sinkMappingConfiguration.raw == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawPdaf == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawDolLong == static_cast<int>(HwSink::Disconnected) &&
        _graphConfiguration.sinkMappingConfiguration.rawCv == static_cast<int>(HwSink::Disconnected)) &&
        // ir sink group
        (_graphConfiguration.sinkMappingConfiguration.videoIr != static_cast<int>(HwSink::Disconnected) ||
        _graphConfiguration.sinkMappingConfiguration.previewIr != static_cast<int>(HwSink::Disconnected)))
    {
        _selectedGraphTopology = &_image_irSubGraph;

        // logical node IDs
        _image_irSubGraph.isysWithCvOuterNode->contextId = 0;
        _image_irSubGraph.lbffRgbIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
        _image_irSubGraph.swGdcOuterNode->contextId = 2;
        _image_irSubGraph.lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->contextId = 3;
    }
    else
    {
        STATIC_GRAPH_LOG("Didn't found a matching sub graph for the selected virtual sinks.");
    }
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100223::~StaticGraph100223()
{
}

StaticGraphStatus imageSubGraphTopology100223::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }
    // always active private inner options
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= (noIr);

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 20; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus irSubGraphTopology100223::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= (noPdaf);
    // active public options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[20]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[21]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[26]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 27; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[23]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[24]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[25]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

StaticGraphStatus image_irSubGraphTopology100223::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);
    InnerNodeOptionsFlags irPublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.irInnerOptions);

    /*
     * Setting Node lbffRgbIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // active public inner options according to sink mapping
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Setting Node lbffRgbIrIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions = irPublicInnerNodeConfiguration;
    // always active public inner options
    lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noDp | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[29]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffRgbIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrWithGmvWithTnrNoSapInnerOptions);
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[6]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[7]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[8]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[9]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[23]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[24]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[25]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[29]->isActive = !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[21]->isActive = !(lbffRgbIrWithGmvWithTnrNoSapInnerOptions & noIr); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_ir_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_main_data_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 30; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[12]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[13]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[14]->isActive = (lbffRgbIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp)) != (noMp|noDp); // lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input
    subGraphLinks[26]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[27]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[28]->isActive = (lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrWithGmvWithTnrNoSapOuterNode->bitmaps;
    lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffRgbIrIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100224
 */
StaticGraph100224::StaticGraph100224(GraphConfiguration100224* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100224, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _withCvOuterNode.Init(&_graphConfiguration.withCvOuterNodeConfiguration);
    _lbffBayerNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::WithCv;
    link->destNode = &_withCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::WithCv;
    link->srcNode = &_withCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 10; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode = &_lbffBayerNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerNoGmvNoTnrNoSapOuterNode->contextId = 0;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100224::~StaticGraph100224()
{
}

StaticGraphStatus imageSubGraphTopology100224::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[6]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[7]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[6]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[7]->isActive = !(lbffBayerNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 8; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100240
 */
StaticGraph100240::StaticGraph100240(GraphConfiguration100240* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100240, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _withCvOuterNode.Init(&_graphConfiguration.withCvOuterNodeConfiguration);
    _lbffBayerWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::WithCv;
    link->destNode = &_withCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::WithCv;
    link->srcNode = &_withCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 15; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode = &_lbffBayerWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerWithGmvNoTnrNoSapOuterNode->contextId = 0;
    _imageSubGraph.swGdcOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100240::~StaticGraph100240()
{
}

StaticGraphStatus imageSubGraphTopology100240::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[8]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[8]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[9]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 13; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[6]->isActive = (lbffBayerWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100241
 */
StaticGraph100241::StaticGraph100241(GraphConfiguration100241* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100241, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _withCvOuterNode.Init(&_graphConfiguration.withCvOuterNodeConfiguration);
    _lbffBayerWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::WithCv;
    link->destNode = &_withCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::WithCv;
    link->srcNode = &_withCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 18; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode = &_lbffBayerWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerWithGmvWithTnrNoSapOuterNode->contextId = 0;
    _imageSubGraph.swGdcOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100241::~StaticGraph100241()
{
}

StaticGraphStatus imageSubGraphTopology100241::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[12]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffBayerWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[6]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[8]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[9]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[10]->isActive = (lbffBayerWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100242
 */
StaticGraph100242::StaticGraph100242(GraphConfiguration100242* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100242, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _withCvOuterNode.Init(&_graphConfiguration.withCvOuterNodeConfiguration);
    _lbffBayerNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::WithCv;
    link->destNode = &_withCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::WithCv;
    link->srcNode = &_withCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 13; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode = &_lbffBayerNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.lbffBayerNoGmvWithTnrNoSapOuterNode->contextId = 0;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100242::~StaticGraph100242()
{
}

StaticGraphStatus imageSubGraphTopology100242::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[2]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[3]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[4]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[5]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[9]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffBayerNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 11; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[6]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[7]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[8]->isActive = (lbffBayerNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100227
 */
StaticGraph100227::StaticGraph100227(GraphConfiguration100227* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100227, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffIrNoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrNoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 11; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffIrNoGmvNoTnrNoSapOuterNode = &_lbffIrNoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffIrNoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100227::~StaticGraph100227()
{
}

StaticGraphStatus imageSubGraphTopology100227::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrNoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrNoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrNoGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[9]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[10]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrNoGmvNoTnrNoSapOuterNode->setInnerNode(lbffIrNoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[9]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[10]->isActive = !(lbffIrNoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 11; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrNoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffIrNoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100228
 */
StaticGraph100228::StaticGraph100228(GraphConfiguration100228* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100228, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffIrWithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrWithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->destNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrWithGmvNoTnrNoSap;
    link->srcNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[15];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 16; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffIrWithGmvNoTnrNoSapOuterNode = &_lbffIrWithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffIrWithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100228::~StaticGraph100228()
{
}

StaticGraphStatus imageSubGraphTopology100228::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrWithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrWithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrWithGmvNoTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrWithGmvNoTnrNoSapOuterNode->setInnerNode(lbffIrWithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[11]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[12]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[14]->isActive = !(lbffIrWithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffIrWithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Ir_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrWithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffIrWithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100229
 */
StaticGraph100229::StaticGraph100229(GraphConfiguration100229* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100229, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffIrNoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrNoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 14; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffIrNoGmvWithTnrNoSapOuterNode = &_lbffIrNoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffIrNoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100229::~StaticGraph100229()
{
}

StaticGraphStatus imageSubGraphTopology100229::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrNoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrNoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrNoGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrNoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrNoGmvWithTnrNoSapOuterNode->setInnerNode(lbffIrNoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[12]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[13]->isActive = !(lbffIrNoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 14; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[10]->isActive = (lbffIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[11]->isActive = (lbffIrNoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Ir_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrNoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffIrNoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100230
 */
StaticGraph100230::StaticGraph100230(GraphConfiguration100230* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100230, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffIrWithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffIrWithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->destNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffIrWithGmvWithTnrNoSap;
    link->srcNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[18];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 19; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffIrWithGmvWithTnrNoSapOuterNode = &_lbffIrWithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffIrWithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100230::~StaticGraph100230()
{
}

StaticGraphStatus imageSubGraphTopology100230::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffIrWithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffIrWithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffIrWithGmvWithTnrNoSapInnerOptions |= (noPdaf | noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffIrWithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffIrWithGmvWithTnrNoSapOuterNode->setInnerNode(lbffIrWithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[5]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[6]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[7]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[8]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[16]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[15]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[17]->isActive = !(lbffIrWithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 19; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[9]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[11]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[12]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[13]->isActive = (lbffIrWithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Ir_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffIrWithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffIrWithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100231
 */
StaticGraph100231::StaticGraph100231(GraphConfiguration100231* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100231, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 13; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100231::~StaticGraph100231()
{
}

StaticGraphStatus imageSubGraphTopology100231::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[11]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[12]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[11]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[12]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 13; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[4]->isActive = (lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_NoSap:terminal_connect_pdaf_data_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100232
 */
StaticGraph100232::StaticGraph100232(GraphConfiguration100232* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100232, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[17];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 18; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100232::~StaticGraph100232()
{
}

StaticGraphStatus imageSubGraphTopology100232::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[13]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[13]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 18; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[4]->isActive = (lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_NoSap:terminal_connect_gmv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvNoTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100233
 */
StaticGraph100233::StaticGraph100233(GraphConfiguration100233* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100233, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 16; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->contextId = 1;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100233::~StaticGraph100233()
{
}

StaticGraphStatus imageSubGraphTopology100233::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[14]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[15]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[14]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive = !(lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 16; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[4]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[12]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2NoGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100234
 */
StaticGraph100234::StaticGraph100234(GraphConfiguration100234* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100234, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _imageSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);
    _lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode.Init(&_graphConfiguration.lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNodeConfiguration);
    _swGdcOuterNode.Init(&_graphConfiguration.swGdcOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::CvOutput;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 19;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[5];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[6];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[7];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[8];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 21;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 26;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 24;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 23;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 27;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 22;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[20];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 21; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _imageSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _imageSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode;
    _imageSubGraph.swGdcOuterNode = &_swGdcOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysWithCvOuterNode->contextId = 0;
    _imageSubGraph.lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->contextId = 1;
    _imageSubGraph.swGdcOuterNode->contextId = 2;
    // Apply a default inner nodes configuration for the selected sub graph
    SubGraphInnerNodeConfiguration defaultInnerNodeConfiguration;
    if(_selectedGraphTopology != nullptr)
    {
        _selectedGraphTopology->configInnerNodes(defaultInnerNodeConfiguration);
    }
}
StaticGraph100234::~StaticGraph100234()
{
}

StaticGraphStatus imageSubGraphTopology100234::configInnerNodes(SubGraphInnerNodeConfiguration& subGraphInnerNodeConfiguration)
{

    /*
     * Init sub graphs inner nodes configuration base on user request
     */
    InnerNodeOptionsFlags imagePublicInnerNodeConfiguration = GetInnerOptions(subGraphInnerNodeConfiguration.imageInnerOptions);

    /*
     * Setting Node lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSap initial inner node configuration
     */
    InnerNodeOptionsFlags lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions = imagePublicInnerNodeConfiguration;
    // always active public inner options
    lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions |= (noIr);
    // active public options according to sink mapping
    if (
        subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions |= noMp;
    }
    if (
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        true)
    {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions |= noDp;
    }

    /*
     * Set the selected inner nodes to the outer nodes
     */
    lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->setInnerNode(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions);

    /*
     * Link enablement by public inner options
     */
    subGraphLinks[7]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[8]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[9]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[10]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & no3A); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[5]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noPdaf); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_pdaf_output -> pdaf_out
    subGraphLinks[16]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noMp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & noDp); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_ofs_dp_output -> sw_gdc:terminal_connect_input

    /*
     * Disable links with zero buffer size
     * (used for post processing when not all links are being used)
     */
     for (uint32_t i = 0; i < 21; i++)
     {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0)
        {
            subGraphLinks[i]->isActive = false;
        }
     }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[4]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (no3A|noMp|noDp|noIr)) != (no3A|noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_dpc_pdaf_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_pdaf_data_input
    subGraphLinks[11]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_feature_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_gmv_input
    subGraphLinks[13]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_blend_yuv_input
    subGraphLinks[14]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_rs_input
    subGraphLinks[15]->isActive = (lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapInnerOptions & (noMp|noDp|noIr)) != (noMp|noDp|noIr); // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_tnr_scaler_output -> lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_NoSap:terminal_connect_bc_yuv_input

    /*
     * Save the not-vanished HW bitmaps
     */
     lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->bitmapsNotVanished = lbffBayerPdaf3asPdaf2WithGmvWithTnrNoSapOuterNode->bitmaps;

    return StaticGraphStatus::SG_OK;
}

/*
 * Graph 100026
 */
StaticGraph100026::StaticGraph100026(GraphConfiguration100026* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100026, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysOuterNode.Init(&_graphConfiguration.isysOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::Isys;
    link->destNode = &_isysOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Isys;
    link->srcNode = &_isysOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 2; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysOuterNode = &_isysOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysOuterNode->contextId = 0;
}
StaticGraph100026::~StaticGraph100026()
{
}
/*
 * Graph 100059
 */
StaticGraph100059::StaticGraph100059(GraphConfiguration100059* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100059, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::RawIsysCv;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 4; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysWithCvOuterNode->contextId = 0;
}
StaticGraph100059::~StaticGraph100059()
{
}
/*
 * Graph 100035
 */
StaticGraph100035::StaticGraph100035(GraphConfiguration100035* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100035, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysDolOuterNode.Init(&_graphConfiguration.isysDolOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDol;
    link->destNode = &_isysDolOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDol;
    link->srcNode = &_isysDolOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::RawIsysDolLong;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 4; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysDolOuterNode = &_isysDolOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysDolOuterNode->contextId = 0;
}
StaticGraph100035::~StaticGraph100035()
{
}
/*
 * Graph 100036
 */
StaticGraph100036::StaticGraph100036(GraphConfiguration100036* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100036, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2OuterNode.Init(&_graphConfiguration.isysPdaf2OuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2;
    link->destNode = &_isysPdaf2OuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2;
    link->srcNode = &_isysPdaf2OuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::RawIsysPdaf;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 4; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysPdaf2OuterNode = &_isysPdaf2OuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysPdaf2OuterNode->contextId = 0;
}
StaticGraph100036::~StaticGraph100036()
{
}
/*
 * Graph 100037
 */
StaticGraph100037::StaticGraph100037(GraphConfiguration100037* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100037, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::RawIsysCv;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 4; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysWithCvOuterNode->contextId = 0;
}
StaticGraph100037::~StaticGraph100037()
{
}
/*
 * Graph 100058
 */
StaticGraph100058::StaticGraph100058(GraphConfiguration100058* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100058, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysWithCvOuterNode.Init(&_graphConfiguration.isysWithCvOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysWithCv;
    link->destNode = &_isysWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysWithCv;
    link->srcNode = &_isysWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::RawIsysCv;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 4; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysWithCvOuterNode = &_isysWithCvOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysWithCvOuterNode->contextId = 0;
}
StaticGraph100058::~StaticGraph100058()
{
}
/*
 * Graph 100038
 */
StaticGraph100038::StaticGraph100038(GraphConfiguration100038* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100038, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysDolWithCvOuterNode.Init(&_graphConfiguration.isysDolWithCvOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::SensorDolLongExposure;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 8;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysDolWithCv;
    link->destNode = &_isysDolWithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::RawIsysDolLong;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysDolWithCv;
    link->srcNode = &_isysDolWithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::RawIsysCv;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 6; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysDolWithCvOuterNode->contextId = 0;
}
StaticGraph100038::~StaticGraph100038()
{
}
/*
 * Graph 100039
 */
StaticGraph100039::StaticGraph100039(GraphConfiguration100039* selectedGraphConfiguration, VirtualSinkMapping* sinkMappingConfiguration, SensorMode* selectedSensorMode, int32_t selectedSettingsId) :
    IStaticGraphConfig(selectedSensorMode, sinkMappingConfiguration, 100039, selectedSettingsId), _graphConfiguration(*selectedGraphConfiguration),

    _rawSubGraph(_sinkMappingConfiguration)
{

    _isysPdaf2WithCvOuterNode.Init(&_graphConfiguration.isysPdaf2WithCvOuterNodeConfiguration);

    // Declare all the links in the graph
    GraphLink* link = nullptr;
    link = &_graphLinks[0];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 4;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[1];
    link->src = GraphElementType::Sensor;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 2;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[2];
    link->src = GraphElementType::PdafBuffer;
    link->dest = GraphElementType::IsysPdaf2WithCv;
    link->destNode = &_isysPdaf2WithCvOuterNode;
    link->destTerminalId = 6;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[3];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 5;
    link->dest = GraphElementType::RawIsys;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[4];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 7;
    link->dest = GraphElementType::RawIsysPdaf;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    link->src = GraphElementType::IsysPdaf2WithCv;
    link->srcNode = &_isysPdaf2WithCvOuterNode;
    link->srcTerminalId = 3;
    link->dest = GraphElementType::RawIsysCv;
    link->type = LinkType::Node2Sink;

    for (uint8_t i = 0; i < 6; ++i)
    {
        // apply link configuration
        _graphLinks[i].linkConfiguration = &_graphConfiguration.linkConfigurations[i];

        // Assign link to sub-graph
        _rawSubGraph.links[i] = &_graphLinks[i];
    }

    // add nodes for sub graph
    _rawSubGraph.isysPdaf2WithCvOuterNode = &_isysPdaf2WithCvOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_rawSubGraph;

    // logical node IDs
    _rawSubGraph.isysPdaf2WithCvOuterNode->contextId = 0;
}
StaticGraph100039::~StaticGraph100039()
{
}
