/*
 * Copyright (C) 2025 Intel Corporation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "StaticGraphAutogen.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;
}

/*
 * 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;
        }
    } else {
        nodeKernels.kernelList = nullptr;
    }
    nodeKernels.operationMode = operationMode;
    nodeKernels.streamId = streamId;
}
OuterNode::~OuterNode() {
    delete[] nodeKernels.kernelList;
}
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) {
    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);
    }
}

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 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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

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

    // 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*/};

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

    // 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] = {0 /*sw_scaler*/};

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

    // 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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[9].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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[12].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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_af_std_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_af_std_1_4*/,
                                   220 /*ifd_gmv_1_4*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_af_std_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_af_std_1_4*/,
                                   220 /*ifd_gmv_1_4*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*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*/,
                                   20 /*gmv_statistics_1_1*/,
                                   220 /*odr_gmv_feature_1_4*/,
                                   220 /*odr_gmv_match_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/,
                                   220 /*odr_tnr_scale_fp_yuv4n_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[10].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*/};

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

    // 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 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[23].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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[26].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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[27].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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[23].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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[25].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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[26].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*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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, 41, selectedGraphConfiguration->tuningMode,
                    selectedGraphConfiguration->streamId,
                    selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[41] = {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*/,
                                 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[] = {
        0x1DF18C3FF09,
        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], ifd_segmap_acm_1_4[27],
               // smurf_acm_1_0[28], b2i_ds_1_1[32], lbff_crop_espa_1_4[33], image_upscaler_1_1[34],
               // ifd_segmap_cas_1_4[35], smurf_cas_1_0[36], odr_ofs_mp_1_4[38],
               // b2i_ds_output_1_1[39], odr_ofs_dp_1_4[40] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {
        0x13E39C7F81A,
        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}[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[] = {
        0x1FF39C7FF1B,
        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}[17], {ifd_segmap_acm_1_4}[18], {smurf_acm_1_0}[19],
               // {acm_1_2, gammatm_v4, csc_1_1}[20], {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}[26], {odr_ofs_mp_1_4}[27], {b2i_ds_output_1_1}[28], {odr_ofs_dp_1_4}[29]
               // }

    uint8_t systemApisSizes[41] = {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*/,
                                   220 /*ifd_segmap_acm_1_4*/,
                                   0 /*smurf_acm_1_0*/,
                                   5 /*acm_1_2*/,
                                   0 /*gammatm_v4*/,
                                   0 /*csc_1_1*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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, 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*/,
                                 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[] = {
        0x1DFE3187FF09,
        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],
               // 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], gmv_statistics_1_1[36], odr_gmv_feature_1_4[37],
               // odr_gmv_match_1_4[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[] = {
        0x13FC738FF81A,
        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}[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[] = {
        0x1FFE738FFF1B,
        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}[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], {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}[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*/,
                                   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*/,
                                   220 /*ifd_segmap_acm_1_4*/,
                                   0 /*smurf_acm_1_0*/,
                                   5 /*acm_1_2*/,
                                   0 /*gammatm_v4*/,
                                   0 /*csc_1_1*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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, 57, selectedGraphConfiguration->tuningMode,
                    selectedGraphConfiguration->streamId,
                    selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[57] = {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*/,
                                 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[] = {
        0x1DFBB58C61FFF09,
        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], ifd_segmap_acm_1_4[30], smurf_acm_1_0[31], b2i_ds_1_1[35],
               // lbff_crop_espa_1_4[36], tnr_scaler_lb_1_1[38], ifd_segmap_tnr_bc_1_4[40],
               // smurf_tnr_bc_1_0[41], odr_tnr_sp_bc_rs4n_1_4[43], ifd_segmap_tnr_blend_1_4[44],
               // smurf_tnr_blend_1_0[45], odr_tnr_fp_yuvn_1_4[47], tnr_scaler_fp_1_1[48],
               // image_upscaler_1_1[49], odr_tnr_scale_fp_yuv4n_1_4[50], ifd_segmap_cas_1_4[51],
               // smurf_cas_1_0[52], odr_ofs_mp_1_4[54], b2i_ds_output_1_1[55], odr_ofs_dp_1_4[56] }
    uint64_t kernelsResolutionHistoryGroupBitmap[] = {
        0x13C77B1CE3FF81A,
        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}[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[] = {
        0x1FFFFF9CE3FFF1B,
        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}[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], {tnr7_spatial_1_1}[26],
               // {tnr_scaler_lb_1_1}[27], {tnr7_ims_1_2}[28], {ifd_segmap_tnr_bc_1_4}[29],
               // {smurf_tnr_bc_1_0}[30], {tnr7_bc_1_2}[31], {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}[35],
               // {odr_tnr_fp_yuvn_1_4}[36], {tnr_scaler_fp_1_1}[37], {image_upscaler_1_1}[38],
               // {odr_tnr_scale_fp_yuv4n_1_4}[39], {ifd_segmap_cas_1_4}[40], {smurf_cas_1_0}[41],
               // {cas_1_1}[42], {odr_ofs_mp_1_4}[43], {b2i_ds_output_1_1}[44], {odr_ofs_dp_1_4}[45]
               // }

    uint8_t systemApisSizes[57] = {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*/,
                                   220 /*ifd_segmap_acm_1_4*/,
                                   0 /*smurf_acm_1_0*/,
                                   5 /*acm_1_2*/,
                                   0 /*gammatm_v4*/,
                                   0 /*csc_1_1*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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, 61, selectedGraphConfiguration->tuningMode,
                    selectedGraphConfiguration->streamId,
                    selectedGraphConfiguration->numberOfFragments);

    uint16_t kernelsUuids[61] = {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*/,
                                 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[] = {
        0x1DFBBEB18C3FFF09,
        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], 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],
               // gmv_statistics_1_1[41], odr_gmv_feature_1_4[42], odr_gmv_match_1_4[43],
               // 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[] = {
        0x13C77F639C7FF81A,
        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}[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[] = {
        0x1FFFFFF39C7FFF1B,
        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}[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], {gmv_statistics_1_1}[30],
               // {odr_gmv_feature_1_4}[31], {odr_gmv_match_1_4}[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*/,
                                   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*/,
                                   220 /*ifd_segmap_acm_1_4*/,
                                   0 /*smurf_acm_1_0*/,
                                   5 /*acm_1_2*/,
                                   0 /*gammatm_v4*/,
                                   0 /*csc_1_1*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*b2i_ds_1_1*/,
                                   220 /*lbff_crop_espa_1_4*/,
                                   0 /*image_upscaler_1_1*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // 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*/,
                                   0 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

    // Metadata update
    nodeKernels.kernelList[27].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*/,
                                   0 /*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*/,
                                   20 /*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*/,
                                   0 /*b2i_ds_output_1_1*/,
                                   220 /*odr_ofs_dp_1_4*/};

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

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

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

/*
 * Inner Nodes Setters
 */
void IsysOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 SwGdcOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 SwNntmOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

void SwScalerOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

void IsysPdaf2OuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 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 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 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 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 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 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 IsysDolOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 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 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 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 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 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 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 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 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 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 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 - 0x0000000000000000000000C0003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0xC0;
        // DEB - 0x000000000000000000000000039FF1F1
        bitmaps.deb[0] = 0x39FF1F1;
        // TEB - 0x0000000000045E97
        bitmaps.teb[0] = 0x45E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels 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
        // 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
        // 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] = 0xF1FCFFF000;
    } 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 - 0x000000000000000000000080003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1F1
        bitmaps.deb[0] = 0x19FF1F1;
        // TEB - 0x0000000000041E97
        bitmaps.teb[0] = 0x41E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 6 odr_ir_1_4- 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
        // 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
        // 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] = 0xF1FCFFF040;
    } 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 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 - 0x0000000000000000000000C0003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0xC0;
        // DEB - 0x000000000000000000000000039FF1F1
        bitmaps.deb[0] = 0x39FF1F1;
        // TEB - 0x0000000000045E97
        bitmaps.teb[0] = 0x45E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels 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
        // 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
        // 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] = 0xFFFE3CFFF000;
    } 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 - 0x000000000000000000000080003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1F1
        bitmaps.deb[0] = 0x19FF1F1;
        // TEB - 0x0000000000041E97
        bitmaps.teb[0] = 0x41E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 6 odr_ir_1_4- 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
        // 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
        // 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] = 0xFFFE3CFFF040;
    } 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 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 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 - 0x0000000000000000000000C0003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0xC0;
        // DEB - 0x000000000000000000000000039FF1F1
        bitmaps.deb[0] = 0x39FF1F1;
        // TEB - 0x0000000000045E97
        bitmaps.teb[0] = 0x45E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels 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
        // 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
        // 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] = 0xFFFFE3CFFF000;
    } 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 - 0x000000000000000000000080003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1F1
        bitmaps.deb[0] = 0x19FF1F1;
        // TEB - 0x0000000000041E97
        bitmaps.teb[0] = 0x41E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 6 odr_ir_1_4- 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
        // 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
        // 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] = 0xFFFFE3CFFF040;
    } 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 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 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 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 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 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 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 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 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 IsysWithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

void SwSegnetOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 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 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 IsysPdaf2WithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 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 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 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 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 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 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 IsysDolWithCvOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // No inner nodes
    (void)nodeInnerOptions;
}

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 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 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 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 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 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 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 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 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 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 - 0x0000000000000000000000C0003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0xC0;
        // DEB - 0x000000000000000000000000039FF1F1
        bitmaps.deb[0] = 0x39FF1F1;
        // TEB - 0x0000000000045E97
        bitmaps.teb[0] = 0x45E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- 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] = 0xFFFFFFF83000;
    } 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 - 0x000000000000000000000080003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1F1
        bitmaps.deb[0] = 0x19FF1F1;
        // TEB - 0x0000000000041E97
        bitmaps.teb[0] = 0x41E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- 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] = 0xFFFFFFF83040;
    } 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 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 - 0x0000000000000000000000C0003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0xC0;
        // DEB - 0x000000000000000000000000039FF1F1
        bitmaps.deb[0] = 0x39FF1F1;
        // TEB - 0x0000000000045E97
        bitmaps.teb[0] = 0x45E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- 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] = 0xFFFFFFFFFF83000;
    } 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 - 0x000000000000000000000080003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1F1
        bitmaps.deb[0] = 0x19FF1F1;
        // TEB - 0x0000000000041E97
        bitmaps.teb[0] = 0x41E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- 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] = 0xFFFFFFFFFF83040;
    } 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 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 - 0x0000000000000000000000C0003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0xC0;
        // DEB - 0x000000000000000000000000039FF1F1
        bitmaps.deb[0] = 0x39FF1F1;
        // TEB - 0x0000000000045E97
        bitmaps.teb[0] = 0x45E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- 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] = 0xFFFFFFFFFFF83000;
    } 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 - 0x000000000000000000000080003A6871
        bitmaps.rbm[0] = 0x3A6871;
        bitmaps.rbm[1] = 0x80;
        // DEB - 0x000000000000000000000000019FF1F1
        bitmaps.deb[0] = 0x19FF1F1;
        // TEB - 0x0000000000041E97
        bitmaps.teb[0] = 0x41E97;
        // REB - 0x00000000000000000000000003007FEF
        bitmaps.reb[0] = 0x3007FEF;

        // Kernels disablement
        // 6 odr_ir_1_4- inner node disablement
        // 12 gd_2_2- inner node disablement
        // 13 wb_1_1- 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] = 0xFFFFFFFFFFF83040;
    } 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 LbffIrNoGmvNoTnrWithSapOuterNode::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[7].run_kernel.enable = 0;   // wb_1_1
    nodeKernels.kernelList[19].run_kernel.enable = 0;  // bxt_demosaic
    nodeKernels.kernelList[29].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 - 0x000000000000E1E00000FFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F000009F
        bitmaps.teb[0] = 0xF000009F;
        bitmaps.teb[1] = 0x9;
        // 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 - 0x000000000000C1E00000FFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0001E9F
        bitmaps.teb[0] = 0xE0001E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 38 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000;
    } else if (nodeRelevantInnerOptions == (no3A | noMp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000044001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x44001D;
        // DEB - 0x000000000000C1E00000FFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E000009F
        bitmaps.teb[0] = 0xE000009F;
        bitmaps.teb[1] = 0x9;
        // 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
        // 38 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x400000FF00;
    } else if (nodeRelevantInnerOptions == (noDp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021E00000FFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0001E9F
        bitmaps.teb[0] = 0xD0001E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 39 b2i_ds_output_1_1- inner node disablement
        // 40 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000000;
    } else if (nodeRelevantInnerOptions == (no3A | noDp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000024001D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x24001D;
        // DEB - 0x00000000000021E00000FFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D000009F
        bitmaps.teb[0] = 0xD000009F;
        bitmaps.teb[1] = 0x9;
        // 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
        // 39 b2i_ds_output_1_1- inner node disablement
        // 40 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1800000FF00;
    } 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 ifd_segmap_acm_1_4- inner node disablement
        // 28 smurf_acm_1_0- inner node disablement
        // 29 acm_1_2- inner node disablement
        // 30 gammatm_v4- inner node disablement
        // 31 csc_1_1- inner node disablement
        // 32 b2i_ds_1_1- inner node disablement
        // 33 lbff_crop_espa_1_4- inner node disablement
        // 34 image_upscaler_1_1- inner node disablement
        // 35 ifd_segmap_cas_1_4- inner node disablement
        // 36 smurf_cas_1_0- inner node disablement
        // 37 cas_1_1- inner node disablement
        // 38 odr_ofs_mp_1_4- inner node disablement
        // 39 b2i_ds_output_1_1- inner node disablement
        // 40 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFF00C0;
    } 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 ifd_segmap_acm_1_4- inner node disablement
        // 28 smurf_acm_1_0- inner node disablement
        // 29 acm_1_2- inner node disablement
        // 30 gammatm_v4- inner node disablement
        // 31 csc_1_1- inner node disablement
        // 32 b2i_ds_1_1- inner node disablement
        // 33 lbff_crop_espa_1_4- inner node disablement
        // 34 image_upscaler_1_1- inner node disablement
        // 35 ifd_segmap_cas_1_4- inner node disablement
        // 36 smurf_cas_1_0- inner node disablement
        // 37 cas_1_1- inner node disablement
        // 38 odr_ofs_mp_1_4- inner node disablement
        // 39 b2i_ds_output_1_1- inner node disablement
        // 40 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFF;
    } else  // default inner node
    {
        // RBM - 0x00000000000000000064001D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x64001D;
        // DEB - 0x000000000000E1E00000FFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0001E9F
        bitmaps.teb[0] = 0xF0001E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrWithGmvNoTnrWithSapOuterNode::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[20].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 - 0x00000000000000000064003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x64003D;
        // DEB - 0x000000000000E1E0000FFFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F032009F
        bitmaps.teb[0] = 0xF032009F;
        bitmaps.teb[1] = 0x9;
        // 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 - 0x000000000000C1E0000FFFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E0321E9F
        bitmaps.teb[0] = 0xE0321E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        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 - 0x00000000000000000044003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x44003D;
        // DEB - 0x000000000000C1E0000FFFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xC1E0;
        // TEB - 0x00000009E032009F
        bitmaps.teb[0] = 0xE032009F;
        bitmaps.teb[1] = 0x9;
        // 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
        // 42 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000FF00;
    } else if (nodeRelevantInnerOptions == (noDp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000024003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x24003D;
        // DEB - 0x00000000000021E0000FFFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D0321E9F
        bitmaps.teb[0] = 0xD0321E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        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 - 0x00000000000000000024003D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x24003D;
        // DEB - 0x00000000000021E0000FFFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0x21E0;
        // TEB - 0x00000009D032009F
        bitmaps.teb[0] = 0xD032009F;
        bitmaps.teb[1] = 0x9;
        // 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
        // 43 b2i_ds_output_1_1- inner node disablement
        // 44 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000FF00;
    } 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 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 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_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] = 0x1FFFFFFF00C0;
    } 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 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 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_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 - 0x00000000000000000064003D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x64003D;
        // DEB - 0x000000000000E1E0000FFFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFE;
        bitmaps.deb[2] = 0xE1E0;
        // TEB - 0x00000009F0321E9F
        bitmaps.teb[0] = 0xF0321E9F;
        bitmaps.teb[1] = 0x9;
        // REB - 0x00000000000000000000001F10F67FE7
        bitmaps.reb[0] = 0x10F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrNoGmvWithTnrWithSapOuterNode::setInnerNode(InnerNodeOptionsFlags nodeInnerOptions) {
    // Kernel default enablement
    for (uint8_t i = 0; i < 57; ++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[32].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 - 0x000000000000E1FFFFF0FFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC0009F
        bitmaps.teb[0] = 0xFFC0009F;
        bitmaps.teb[1] = 0xF;
        // 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 - 0x000000000000C1FFFFF0FFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC01E9F
        bitmaps.teb[0] = 0xEFC01E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 54 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000000;
    } else if (nodeRelevantInnerOptions == (no3A | noMp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000047FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x47FC1D;
        // DEB - 0x000000000000C1FFFFF0FFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFC0009F
        bitmaps.teb[0] = 0xEFC0009F;
        bitmaps.teb[1] = 0xF;
        // 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
        // 54 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x4000000000FF00;
    } else if (nodeRelevantInnerOptions == (noDp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x00000000000021FFFFF0FFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC01E9F
        bitmaps.teb[0] = 0xDFC01E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;

        // Kernels disablement
        // 55 b2i_ds_output_1_1- inner node disablement
        // 56 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000000000;
    } else if (nodeRelevantInnerOptions == (no3A | noDp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC1D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x27FC1D;
        // DEB - 0x00000000000021FFFFF0FFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFC0009F
        bitmaps.teb[0] = 0xDFC0009F;
        bitmaps.teb[1] = 0xF;
        // 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
        // 55 b2i_ds_output_1_1- inner node disablement
        // 56 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x18000000000FF00;
    } 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 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 tnr7_spatial_1_1- inner node disablement
        // 38 tnr_scaler_lb_1_1- inner node disablement
        // 39 tnr7_ims_1_2- inner node disablement
        // 40 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 41 smurf_tnr_bc_1_0- inner node disablement
        // 42 tnr7_bc_1_2- inner node disablement
        // 43 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 44 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 45 smurf_tnr_blend_1_0- 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 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 51 ifd_segmap_cas_1_4- inner node disablement
        // 52 smurf_cas_1_0- inner node disablement
        // 53 cas_1_1- inner node disablement
        // 54 odr_ofs_mp_1_4- inner node disablement
        // 55 b2i_ds_output_1_1- inner node disablement
        // 56 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFF00C0;
    } 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 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 tnr7_spatial_1_1- inner node disablement
        // 38 tnr_scaler_lb_1_1- inner node disablement
        // 39 tnr7_ims_1_2- inner node disablement
        // 40 ifd_segmap_tnr_bc_1_4- inner node disablement
        // 41 smurf_tnr_bc_1_0- inner node disablement
        // 42 tnr7_bc_1_2- inner node disablement
        // 43 odr_tnr_sp_bc_rs4n_1_4- inner node disablement
        // 44 ifd_segmap_tnr_blend_1_4- inner node disablement
        // 45 smurf_tnr_blend_1_0- 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 odr_tnr_scale_fp_yuv4n_1_4- inner node disablement
        // 51 ifd_segmap_cas_1_4- inner node disablement
        // 52 smurf_cas_1_0- inner node disablement
        // 53 cas_1_1- inner node disablement
        // 54 odr_ofs_mp_1_4- inner node disablement
        // 55 b2i_ds_output_1_1- inner node disablement
        // 56 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x1FFFFFFFFFFFFFF;
    } else  // default inner node
    {
        // RBM - 0x00000000000000000067FC1D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x67FC1D;
        // DEB - 0x000000000000E1FFFFF0FFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFF0FFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFC01E9F
        bitmaps.teb[0] = 0xFFC01E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    SetDisabledKernels(disabledRunKernelsBitmap);
}

void LbffIrWithGmvWithTnrWithSapOuterNode::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[7].run_kernel.enable = 0;   // wb_1_1
    nodeKernels.kernelList[23].run_kernel.enable = 0;  // bxt_demosaic
    nodeKernels.kernelList[33].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 - 0x000000000000E1FFFFFFFFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF2009F
        bitmaps.teb[0] = 0xFFF2009F;
        bitmaps.teb[1] = 0xF;
        // 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 - 0x000000000000C1FFFFFFFFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF21E9F
        bitmaps.teb[0] = 0xEFF21E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        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 - 0x00000000000000000047FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x47FC3D;
        // DEB - 0x000000000000C1FFFFFFFFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xC1FF;
        // TEB - 0x0000000FEFF2009F
        bitmaps.teb[0] = 0xEFF2009F;
        bitmaps.teb[1] = 0xF;
        // 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
        // 58 odr_ofs_mp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x40000000000FF00;
    } else if (nodeRelevantInnerOptions == (noDp)) {
        // HW bitmaps
        // RBM - 0x00000000000000000027FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x27FC3D;
        // DEB - 0x00000000000021FFFFFFFFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF21E9F
        bitmaps.teb[0] = 0xDFF21E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        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 - 0x00000000000000000027FC3D50019009
        bitmaps.rbm[0] = 0x50019009;
        bitmaps.rbm[1] = 0x27FC3D;
        // DEB - 0x00000000000021FFFFFFFFFEEC0001F1
        bitmaps.deb[0] = 0xEC0001F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0x21FF;
        // TEB - 0x0000000FDFF2009F
        bitmaps.teb[0] = 0xDFF2009F;
        bitmaps.teb[1] = 0xF;
        // 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
        // 59 b2i_ds_output_1_1- inner node disablement
        // 60 odr_ofs_dp_1_4- inner node disablement
        disabledRunKernelsBitmap[0] = 0x180000000000FF00;
    } 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 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 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_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] = 0x1FFFFFFFFFFF00C0;
    } 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 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 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_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 - 0x00000000000000000067FC3D501F9009
        bitmaps.rbm[0] = 0x501F9009;
        bitmaps.rbm[1] = 0x67FC3D;
        // DEB - 0x000000000000E1FFFFFFFFFEEC1BF1F1
        bitmaps.deb[0] = 0xEC1BF1F1;
        bitmaps.deb[1] = 0xFFFFFFFE;
        bitmaps.deb[2] = 0xE1FF;
        // TEB - 0x0000000FFFF21E9F
        bitmaps.teb[0] = 0xFFF21E9F;
        bitmaps.teb[1] = 0xF;
        // REB - 0x00000000000000000000001FF0F67FE7
        bitmaps.reb[0] = 0xF0F67FE7;
        bitmaps.reb[1] = 0x1F;
    }

    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 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 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 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);
}

/*
 * 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;
        }
    }

    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

    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

    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

    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

    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

    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

    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;
        }
    }

    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

    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

    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

    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;
        }
    }

    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

    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

    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

    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

    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;
        }
    }

    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

    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

    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

    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;
        }
    }

    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

    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

    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

    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;
        }
    }

    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;
        }
    }

    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 = None;
    // 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;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrNoGmvNoTnrNoSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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;
        }
    }

    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

    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

    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 = None;
    // 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;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrWithGmvNoTnrNoSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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

    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

    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

    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 = None;
    // 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;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrNoGmvWithTnrNoSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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

    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

    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

    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 = None;
    // 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;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrWithGmvWithTnrNoSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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

    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;
        }
    }

    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

    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

    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

    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;
        }
    }

    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

    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

    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

    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

    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

    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

    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

    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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvNoTnrWithSapOuterNode;
    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.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[13]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[14]->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[9]->isActive =
        !(lbffBayerNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[10]->isActive =
        !(lbffBayerNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[11]->isActive =
        !(lbffBayerNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[12]->isActive =
        !(lbffBayerNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[13]->isActive =
        !(lbffBayerNoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_Bayer_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[14]->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 < 15; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[4]->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[5]->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[6]->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[7]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    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[14];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerWithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    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[18];
    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[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.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[15]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[17]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->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[9]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[10]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[11]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[12]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[15]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions & noMp);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                                             // -> sw_gdc:terminal_connect_input
    subGraphLinks[16]->isActive =
        !(lbffBayerWithGmvNoTnrWithSapInnerOptions &
          noDp);  // lbff_Bayer_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->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 < 20; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[13]->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();

    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[4]->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[5]->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[6]->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[7]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    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[16];
    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[17];
    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[18];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerNoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerNoGmvWithTnrWithSapOuterNode;
    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.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[18]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[19]->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[11]->isActive =
        !(lbffBayerNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive =
        !(lbffBayerNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive =
        !(lbffBayerNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[18]->isActive =
        !(lbffBayerNoGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_Bayer_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[19]->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 < 20; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->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[16]->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[17]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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 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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    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[16];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    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[18];
    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[19];
    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[20];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerWithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    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[23];
    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[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.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[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->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[11]->isActive =
        !(lbffBayerWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive =
        !(lbffBayerWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[13]->isActive = !(
        lbffBayerWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[14]->isActive = !(
        lbffBayerWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[20]->isActive =
        !(lbffBayerWithGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive =
        !(lbffBayerWithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                               // -> sw_gdc:terminal_connect_input
    subGraphLinks[21]->isActive =
        !(lbffBayerWithGmvWithTnrWithSapInnerOptions &
          noDp);  // lbff_Bayer_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->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 < 25; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[15]->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[17]->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[18]->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[19]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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 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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvNoTnrWithSapOuterNode;
    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.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[16]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[17]->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[12]->isActive =
        !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive = !(
        lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions &
        no3A);  // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                // -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                // -> awb_sat_out
    subGraphLinks[16]->isActive =
        !(lbffBayerPdaf2NoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_Bayer_Pdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->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 < 18; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[6]->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[7]->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[8]->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[9]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    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[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    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[21];
    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[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.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[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->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[12]->isActive =
        !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[18]->isActive = !(
        lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions &
        noMp);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->isActive = !(lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions &
                                    noMp);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[19]->isActive = !(
        lbffBayerPdaf2WithGmvNoTnrWithSapInnerOptions &
        noDp);  // lbff_Bayer_Pdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[21]->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 < 23; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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();

    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[6]->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[7]->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[8]->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[9]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    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[19];
    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[20];
    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[21];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2NoGmvWithTnrWithSapOuterNode;
    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.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[21]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[22]->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[14]->isActive =
        !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[16]->isActive =
        !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[17]->isActive =
        !(lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[21]->isActive = !(
        lbffBayerPdaf2NoGmvWithTnrWithSapInnerOptions &
        noMp);  // lbff_Bayer_Pdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->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 < 23; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[18]->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[19]->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[20]->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();

    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[6]->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[7]->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[8]->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[9]->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[10]->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[11]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    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[19];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    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[21];
    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[22];
    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[23];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffBayerPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    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[26];
    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[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.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[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->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[14]->isActive =
        !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                    // -> af_std_out
    subGraphLinks[16]->isActive =
        !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                    // -> awb_std_out
    subGraphLinks[17]->isActive =
        !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                    // -> awb_sat_out
    subGraphLinks[23]->isActive =
        !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                                    // -> image_mp
    subGraphLinks[25]->isActive = !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions &
                                    noMp);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[24]->isActive =
        !(lbffBayerPdaf2WithGmvWithTnrWithSapInnerOptions & noDp);  // lbff_Bayer_Pdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output
                                                                    // -> image_dp
    subGraphLinks[26]->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 < 28; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[18]->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[20]->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[21]->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[22]->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();

    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[6]->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[7]->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[8]->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[9]->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[10]->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[11]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvNoTnrWithSapOuterNode;
    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.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[14]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[15]->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[10]->isActive =
        !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive = !(
        lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions &
        no3A);  // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                // -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                // -> awb_sat_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3NoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_Bayer_Pdaf3_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->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 < 16; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[5]->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[6]->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[7]->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[8]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[10];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    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[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    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[19];
    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[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.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[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->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[10]->isActive =
        !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[16]->isActive = !(
        lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions &
        noMp);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive = !(lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions &
                                    noMp);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive = !(
        lbffBayerPdaf3WithGmvNoTnrWithSapInnerOptions &
        noDp);  // lbff_Bayer_Pdaf3_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->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 < 21; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->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();

    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[5]->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[6]->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[7]->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[8]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    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[17];
    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[18];
    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[19];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffBayerPdaf3NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3NoGmvWithTnrWithSapOuterNode;
    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.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[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[20]->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[12]->isActive =
        !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[19]->isActive = !(
        lbffBayerPdaf3NoGmvWithTnrWithSapInnerOptions &
        noMp);  // lbff_Bayer_Pdaf3_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->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 < 21; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[17]->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[18]->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();

    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[5]->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[6]->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[7]->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[8]->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[9]->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[10]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    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[17];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    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[19];
    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[20];
    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[21];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffBayerPdaf3WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    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[24];
    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[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.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[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->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[12]->isActive =
        !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                    // -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                    // -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                    // -> awb_sat_out
    subGraphLinks[21]->isActive =
        !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                                    // -> image_mp
    subGraphLinks[23]->isActive = !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions &
                                    noMp);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive =
        !(lbffBayerPdaf3WithGmvWithTnrWithSapInnerOptions & noDp);  // lbff_Bayer_Pdaf3_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output
                                                                    // -> image_dp
    subGraphLinks[24]->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 < 26; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[18]->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[19]->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[20]->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();

    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[5]->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[6]->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[7]->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[8]->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[9]->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[10]->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 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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvNoTnrWithSapOuterNode;
    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.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[17]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol2InputsNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[18]->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[12]->isActive =
        !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output
                                                                // -> awb_sve_out
    subGraphLinks[13]->isActive =
        !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive = !(
        lbffDol2InputsNoGmvNoTnrWithSapInnerOptions &
        no3A);  // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[15]->isActive =
        !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                // -> awb_std_out
    subGraphLinks[16]->isActive =
        !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                // -> awb_sat_out
    subGraphLinks[17]->isActive =
        !(lbffDol2InputsNoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_Dol2Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->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 < 19; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[7]->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[8]->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[9]->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[10]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    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[18];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol2InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    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[22];
    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[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.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[19]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[21]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol2InputsWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[20]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[22]->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[12]->isActive =
        !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output
                                                                  // -> awb_sve_out
    subGraphLinks[13]->isActive =
        !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[14]->isActive =
        !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[15]->isActive =
        !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[16]->isActive =
        !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[19]->isActive = !(
        lbffDol2InputsWithGmvNoTnrWithSapInnerOptions &
        noMp);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[21]->isActive = !(lbffDol2InputsWithGmvNoTnrWithSapInnerOptions &
                                    noMp);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[20]->isActive = !(
        lbffDol2InputsWithGmvNoTnrWithSapInnerOptions &
        noDp);  // lbff_Dol2Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[22]->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 < 24; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[17]->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();

    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[7]->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[8]->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[9]->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[10]->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);

    // 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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    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[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    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[20];
    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[21];
    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[22];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffDol2InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;
    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.isysDolWithCvOuterNode = &_isysDolWithCvOuterNode;
    _imageSubGraph.swSegnetOuterNode = &_swSegnetOuterNode;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrWithSapOuterNode =
        &_lbffDol2InputsNoGmvWithTnrWithSapOuterNode;

    // choose the selected sub graph
    _selectedGraphTopology = &_imageSubGraph;

    // logical node IDs
    _imageSubGraph.isysDolWithCvOuterNode->contextId = 0;
    _imageSubGraph.swSegnetOuterNode->contextId = 1;
    _imageSubGraph.lbffDol2InputsNoGmvWithTnrWithSapOuterNode->contextId = 2;
    // 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[22]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[23]->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[14]->isActive =
        !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output
                                                                  // -> awb_sve_out
    subGraphLinks[15]->isActive =
        !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive =
        !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[17]->isActive =
        !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[18]->isActive =
        !(lbffDol2InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[22]->isActive = !(
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions &
        noMp);  // lbff_Dol2Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(
        lbffDol2InputsNoGmvWithTnrWithSapInnerOptions &
        noDp);  // lbff_Dol2Inputs_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 =
        (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[20]->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[21]->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();

    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[7]->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[8]->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[9]->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[10]->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[11]->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[12]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    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[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    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[20];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    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[22];
    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[23];
    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[24];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol2InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol2InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[26];
    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[27];
    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[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.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[24]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[26]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol2InputsWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[25]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[27]->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[14]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output
                                                                    // -> awb_sve_out
    subGraphLinks[15]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                    // -> af_std_out
    subGraphLinks[17]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                    // -> awb_std_out
    subGraphLinks[18]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                    // -> awb_sat_out
    subGraphLinks[24]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                                    // -> image_mp
    subGraphLinks[26]->isActive = !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions &
                                    noMp);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[25]->isActive =
        !(lbffDol2InputsWithGmvWithTnrWithSapInnerOptions & noDp);  // lbff_Dol2Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output
                                                                    // -> image_dp
    subGraphLinks[27]->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 < 29; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->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[21]->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[22]->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[23]->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();

    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[7]->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[8]->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[9]->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[10]->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[11]->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[12]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    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[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsNoGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvNoTnrWithSapOuterNode;
    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.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[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol3InputsNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[20]->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[14]->isActive =
        !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output
                                                                // -> awb_sve_out
    subGraphLinks[15]->isActive =
        !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive = !(
        lbffDol3InputsNoGmvNoTnrWithSapInnerOptions &
        no3A);  // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[17]->isActive =
        !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                // -> awb_std_out
    subGraphLinks[18]->isActive =
        !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                // -> awb_sat_out
    subGraphLinks[19]->isActive =
        !(lbffDol3InputsNoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_Dol3Inputs_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->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 < 21; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[9]->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[10]->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[11]->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[12]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    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[13];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    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[20];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[22];
    link->src = GraphElementType::LbffDol3InputsWithGmvNoTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    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[24];
    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[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.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[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol3InputsWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->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[14]->isActive =
        !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output
                                                                  // -> awb_sve_out
    subGraphLinks[15]->isActive =
        !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[16]->isActive =
        !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[17]->isActive =
        !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[18]->isActive =
        !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[21]->isActive = !(
        lbffDol3InputsWithGmvNoTnrWithSapInnerOptions &
        noMp);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive = !(lbffDol3InputsWithGmvNoTnrWithSapInnerOptions &
                                    noMp);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive = !(
        lbffDol3InputsWithGmvNoTnrWithSapInnerOptions &
        noDp);  // lbff_Dol3Inputs_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->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 < 26; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[19]->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();

    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[9]->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[10]->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[11]->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[12]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    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[13];
    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[14];
    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[15];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    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[22];
    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[23];
    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[24];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[25];
    link->src = GraphElementType::LbffDol3InputsNoGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    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.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[24]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol3InputsNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[25]->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[16]->isActive =
        !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output
                                                                  // -> awb_sve_out
    subGraphLinks[17]->isActive =
        !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[18]->isActive =
        !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                  // -> af_std_out
    subGraphLinks[19]->isActive =
        !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                  // -> awb_std_out
    subGraphLinks[20]->isActive =
        !(lbffDol3InputsNoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                  // -> awb_sat_out
    subGraphLinks[24]->isActive = !(
        lbffDol3InputsNoGmvWithTnrWithSapInnerOptions &
        noMp);  // lbff_Dol3Inputs_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[25]->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 < 26; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[21]->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[22]->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[23]->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();

    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[9]->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[10]->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[11]->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[12]->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[13]->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[14]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    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[12];
    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[13];
    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[14];
    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[15];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->destNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[20];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    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[22];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    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[24];
    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[25];
    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[26];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[27];
    link->src = GraphElementType::LbffDol3InputsWithGmvWithTnrWithSap;
    link->srcNode = &_lbffDol3InputsWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[28];
    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[29];
    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[30];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    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.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[26]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[28]->linkConfiguration->bufferSize == 0 && true) {
        lbffDol3InputsWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[27]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[29]->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[16]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output
                                                                    // -> awb_sve_out
    subGraphLinks[17]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[18]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                    // -> af_std_out
    subGraphLinks[19]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                    // -> awb_std_out
    subGraphLinks[20]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                    // -> awb_sat_out
    subGraphLinks[26]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                                    // -> image_mp
    subGraphLinks[28]->isActive = !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions &
                                    noMp);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[27]->isActive =
        !(lbffDol3InputsWithGmvWithTnrWithSapInnerOptions & noDp);  // lbff_Dol3Inputs_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output
                                                                    // -> image_dp
    subGraphLinks[29]->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 < 31; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[21]->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[23]->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[24]->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[25]->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();

    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[9]->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[10]->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[11]->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[12]->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[13]->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[14]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _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::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    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::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    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 = 31;
    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 = 32;
    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 = 35;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrNoGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _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 = 9;
    link->dest = GraphElementType::AeOut;
    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 = 10;
    link->dest = GraphElementType::AfStdOut;
    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 = 11;
    link->dest = GraphElementType::AwbStdOut;
    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 = 12;
    link->dest = GraphElementType::AwbSatOut;
    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 = 28;
    link->dest = GraphElementType::ImageMp;
    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 = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[15] = link;
    _irSubGraph.links[15] = link;
    _image_irSubGraph.links[15] = link;

    link = &_graphLinks[16];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[16] = link;
    _image_irSubGraph.links[16] = link;

    link = &_graphLinks[17];
    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[17] = link;
    _image_irSubGraph.links[17] = link;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[18] = link;

    link = &_graphLinks[19];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    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 = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    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 = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    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 = 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.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[14]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[15]->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[9]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->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 < 16; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[4]->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[5]->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[6]->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[7]->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[14]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[15]->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[22]->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[9]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[19]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[20]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[21]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[22]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[17]->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 < 23; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[4]->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[5]->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[6]->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[7]->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 = None;
    // active public inner options according to sink mapping
    if (subGraphLinks[14]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[15]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= noDp;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrNoGmvNoTnrWithSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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[22]->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[9]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[14]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[15]->isActive =
        !(lbffRgbIrNoGmvNoTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_NoGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[18]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[19]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[20]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[21]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[22]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[17]->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 < 23; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Update segment aware kernels according to links enablement
     */
    updateSegmentAwareKernels();

    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[4]->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[5]->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[6]->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[7]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _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::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    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::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 30;
    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 = 31;
    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 = 32;
    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 = 35;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[7] = link;
    _irSubGraph.links[7] = link;
    _image_irSubGraph.links[7] = link;

    link = &_graphLinks[8];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[8] = link;
    _irSubGraph.links[8] = link;
    _image_irSubGraph.links[8] = link;

    link = &_graphLinks[9];
    link->src = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _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 = 9;
    link->dest = GraphElementType::AeOut;
    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 = 10;
    link->dest = GraphElementType::AfStdOut;
    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 = 11;
    link->dest = GraphElementType::AwbStdOut;
    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 = 12;
    link->dest = GraphElementType::AwbSatOut;
    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 = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 17;
    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::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _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 = 28;
    link->dest = GraphElementType::ImageMp;
    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 = 29;
    link->dest = GraphElementType::ImageDp;
    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 = 28;
    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::LbffRgbIrWithGmvNoTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    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::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[18] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    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[19] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvNoTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvNoTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    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 = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    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 = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    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 = 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.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[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->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[9]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[16]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                                             // -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->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 < 21; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->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();

    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[4]->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[5]->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[6]->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[7]->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[16]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[17]->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[24]->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[9]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[16]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[17]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[20]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[21]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[22]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[23]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[24]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[19]->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 < 25; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->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();

    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[4]->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[5]->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[6]->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[7]->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 = None;
    // active public inner options according to sink mapping
    if (subGraphLinks[16]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[18]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= noDp;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrWithGmvNoTnrWithSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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[27]->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[9]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[10]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[11]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[16]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[18]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noMp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                                             // -> sw_gdc:terminal_connect_input
    subGraphLinks[17]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[19]->isActive =
        !(lbffRgbIrWithGmvNoTnrWithSapInnerOptions & noDp);  // lbff_RgbIr_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output
                                                             // -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[24]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[25]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_std_output -> ir_awb_std_out
    subGraphLinks[26]->isActive = !(
        lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_awb_sat_output -> ir_awb_sat_out
    subGraphLinks[27]->isActive =
        !(lbffRgbIrIrNoGmvNoTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_NoTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[22]->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 < 28; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[14]->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();

    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[4]->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[5]->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[6]->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[7]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _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::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    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::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    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 = 31;
    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 = 32;
    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 = 35;
    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 = 33;
    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 = 34;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _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 = 9;
    link->dest = GraphElementType::AeOut;
    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 = 10;
    link->dest = GraphElementType::AfStdOut;
    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 = 11;
    link->dest = GraphElementType::AwbStdOut;
    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 = 12;
    link->dest = GraphElementType::AwbSatOut;
    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 = 26;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _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 = 24;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 23;
    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 = 27;
    link->dest = GraphElementType::LbffRgbIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 22;
    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 = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _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 = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[20] = link;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[21] = link;
    _image_irSubGraph.links[21] = link;

    link = &_graphLinks[22];
    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[22] = link;
    _image_irSubGraph.links[22] = link;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    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 = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    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 = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    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 = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[27] = link;
    _image_irSubGraph.links[27] = link;

    link = &_graphLinks[28];
    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[28] = link;
    _image_irSubGraph.links[28] = link;

    link = &_graphLinks[29];
    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[29] = link;
    _image_irSubGraph.links[29] = link;

    link = &_graphLinks[30];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[30] = link;
    _image_irSubGraph.links[30] = link;

    for (uint8_t i = 0; i < 31; ++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[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[20]->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[11]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->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 < 21; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[17]->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[18]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[20]->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[30]->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[11]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[24]->isActive = !(
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[25]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output
                                                             // -> ir_awb_std_out
    subGraphLinks[26]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output
                                                             // -> ir_awb_sat_out
    subGraphLinks[30]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[22]->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 < 31; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[17]->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[18]->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[27]->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[28]->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[29]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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 = None;
    // active public inner options according to sink mapping
    if (subGraphLinks[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[20]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= noDp;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrNoGmvWithTnrWithSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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[30]->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[11]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[19]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[20]->isActive =
        !(lbffRgbIrNoGmvWithTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_NoGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[23]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[24]->isActive = !(
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[25]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output
                                                             // -> ir_awb_std_out
    subGraphLinks[26]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output
                                                             // -> ir_awb_sat_out
    subGraphLinks[30]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[22]->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 < 31; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[17]->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[18]->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[27]->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[28]->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[29]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _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::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    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::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 30;
    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 = 31;
    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 = 32;
    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 = 35;
    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 = 33;
    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 = 34;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[9] = link;
    _irSubGraph.links[9] = link;
    _image_irSubGraph.links[9] = link;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _imageSubGraph.links[10] = link;
    _irSubGraph.links[10] = link;
    _image_irSubGraph.links[10] = link;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 18;
    link->dest = GraphElementType::AwbSveOut;
    link->type = LinkType::Node2Sink;
    _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 = 9;
    link->dest = GraphElementType::AeOut;
    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 = 10;
    link->dest = GraphElementType::AfStdOut;
    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 = 11;
    link->dest = GraphElementType::AwbStdOut;
    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 = 12;
    link->dest = GraphElementType::AwbSatOut;
    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 = 21;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 17;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _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 = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;
    _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 = 26;
    link->dest = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 25;
    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::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[19] = link;
    _irSubGraph.links[19] = link;
    _image_irSubGraph.links[19] = link;

    link = &_graphLinks[20];
    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[20] = link;
    _irSubGraph.links[20] = link;
    _image_irSubGraph.links[20] = link;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffRgbIrWithGmvWithTnrWithSap;
    link->srcNode = &_lbffRgbIrWithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;
    _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 = 29;
    link->dest = GraphElementType::ImageDp;
    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 = 28;
    link->dest = GraphElementType::SwGdc;
    link->destNode = &_swGdcOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;
    _imageSubGraph.links[23] = link;
    _image_irSubGraph.links[23] = link;

    link = &_graphLinks[24];
    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[24] = link;
    _image_irSubGraph.links[24] = link;

    link = &_graphLinks[25];
    link->src = GraphElementType::SwGdc;
    link->srcNode = &_swGdcOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::ProcessedMain;
    link->type = LinkType::Node2Sink;
    _imageSubGraph.links[25] = link;
    _image_irSubGraph.links[25] = link;

    link = &_graphLinks[26];
    link->src = GraphElementType::LscBufferIr;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;
    _irSubGraph.links[23] = link;
    _image_irSubGraph.links[26] = link;

    link = &_graphLinks[27];
    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[24] = link;
    _image_irSubGraph.links[27] = link;

    link = &_graphLinks[28];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::IrAeOut;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[25] = link;
    _image_irSubGraph.links[28] = link;

    link = &_graphLinks[29];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::IrAfStdOut;
    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 = 11;
    link->dest = GraphElementType::IrAwbStdOut;
    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 = 12;
    link->dest = GraphElementType::IrAwbSatOut;
    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 = 26;
    link->dest = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->destNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->destTerminalId = 25;
    link->type = LinkType::Node2Self;
    link->frameDelay = 1U;
    _irSubGraph.links[29] = link;
    _image_irSubGraph.links[32] = link;

    link = &_graphLinks[33];
    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[30] = link;
    _image_irSubGraph.links[33] = link;

    link = &_graphLinks[34];
    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[31] = link;
    _image_irSubGraph.links[34] = link;

    link = &_graphLinks[35];
    link->src = GraphElementType::LbffRgbIrIrNoGmvWithTnrNoSap;
    link->srcNode = &_lbffRgbIrIrNoGmvWithTnrNoSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::IrMp;
    link->type = LinkType::Node2Sink;
    _irSubGraph.links[32] = link;
    _image_irSubGraph.links[35] = link;

    for (uint8_t i = 0; i < 36; ++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[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->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[11]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[21]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                               // -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->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 < 26; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[18]->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[19]->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[20]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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[21]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[22]->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[32]->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[11]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[21]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[22]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[25]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[26]->isActive = !(
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[27]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output
                                                             // -> ir_awb_std_out
    subGraphLinks[28]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output
                                                             // -> ir_awb_sat_out
    subGraphLinks[32]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[24]->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 < 33; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[18]->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[19]->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[20]->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[29]->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[30]->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[31]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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 = None;
    // active public inner options according to sink mapping
    if (subGraphLinks[21]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[23]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 && true) {
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= noDp;
    }
    // combine inner options for the node common sub graphs
    lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= imagePublicInnerNodeConfiguration;
    lbffRgbIrWithGmvWithTnrWithSapInnerOptions |= irPublicInnerNodeConfiguration;

    /*
     * 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[35]->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[11]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sve_output -> awb_sve_out
    subGraphLinks[12]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[13]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output -> af_std_out
    subGraphLinks[14]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output -> awb_std_out
    subGraphLinks[15]->isActive = !(
        lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
        no3A);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output -> awb_sat_out
    subGraphLinks[21]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          noMp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output -> image_mp
    subGraphLinks[23]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                               // -> sw_gdc:terminal_connect_input
    subGraphLinks[22]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions &
          noDp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output -> image_dp
    subGraphLinks[24]->isActive =
        !(lbffRgbIrWithGmvWithTnrWithSapInnerOptions & noDp);  // lbff_RgbIr_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output
                                                               // -> sw_gdc:terminal_connect_input
    subGraphLinks[28]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ae_output -> ir_ae_out
    subGraphLinks[29]->isActive = !(
        lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
        no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_af_std_output -> ir_af_std_out
    subGraphLinks[30]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_std_output
                                                             // -> ir_awb_std_out
    subGraphLinks[31]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions & no3A);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_awb_sat_output
                                                             // -> ir_awb_sat_out
    subGraphLinks[35]->isActive =
        !(lbffRgbIrIrNoGmvWithTnrNoSapInnerOptions &
          noMp);  // lbff_RgbIr_Ir_NoGmv_WithTnr_NoSap:terminal_connect_ofs_mp_output -> ir_mp

    /*
     * Link enablement by private inner options
     */
    subGraphLinks[27]->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 < 36; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[16]->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[18]->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[19]->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[20]->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[32]->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[33]->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[34]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvNoTnrWithSap;
    link->destNode = &_lbffIrNoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    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();

    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[4]->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[5]->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_acm_sm_input
    if (subGraphLinks[6]->isActive == false) {
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &=
            ~(1 << 0);  // Terminal id 32 - terminal_connect_acm_sm_input
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &=
            ~(1 << 9);  // Device id 41 - ifd_segmap_acm_1_4
        lbffIrNoGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &=
            ~(1 << 10);  // Device id 42 - smurf_acm_1_0
        disabledRunKernelsBitmap[0] |=
            0x18000000;  // Run kernel ids 27 (ifd_segmap_acm_1_4) and 28 (smurf_acm_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] |=
            0x1800000000;  // Run kernel ids 35 (ifd_segmap_cas_1_4) and 36 (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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvNoTnrWithSap;
    link->destNode = &_lbffIrWithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 32;
    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();

    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[4]->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[5]->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_acm_sm_input
    if (subGraphLinks[6]->isActive == false) {
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.teb[1] &=
            ~(1 << 0);  // Terminal id 32 - terminal_connect_acm_sm_input
        lbffIrWithGmvNoTnrWithSapOuterNode->bitmaps.deb[1] &=
            ~(1 << 9);  // Device id 41 - ifd_segmap_acm_1_4
        lbffIrWithGmvNoTnrWithSapOuterNode->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[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] |=
            0x18000000000;  // Run kernel ids 39 (ifd_segmap_cas_1_4) and 40 (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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrNoGmvWithTnrWithSap;
    link->destNode = &_lbffIrNoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    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();

    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[4]->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[5]->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_acm_sm_input
    if (subGraphLinks[6]->isActive == false) {
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &=
            ~(1 << 0);  // Terminal id 32 - terminal_connect_acm_sm_input
        lbffIrNoGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &=
            ~(1 << 9);  // Device id 41 - ifd_segmap_acm_1_4
        lbffIrNoGmvWithTnrWithSapOuterNode->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[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] |=
            0x18000000000000;  // Run kernel ids 51 (ifd_segmap_cas_1_4) and 52 (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] |=
            0x30000000000;  // Run kernel ids 40 (ifd_segmap_tnr_bc_1_4) and 41 (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] |=
            0x300000000000;  // Run kernel ids 44 (ifd_segmap_tnr_blend_1_4) and 45
                             // (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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    link->src = GraphElementType::SwSegnet;
    link->srcNode = &_swSegnetOuterNode;
    link->srcTerminalId = 1;
    link->dest = GraphElementType::LbffIrWithGmvWithTnrWithSap;
    link->destNode = &_lbffIrWithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 32;
    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();

    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[4]->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[5]->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_acm_sm_input
    if (subGraphLinks[6]->isActive == false) {
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.teb[1] &=
            ~(1 << 0);  // Terminal id 32 - terminal_connect_acm_sm_input
        lbffIrWithGmvWithTnrWithSapOuterNode->bitmaps.deb[1] &=
            ~(1 << 9);  // Device id 41 - ifd_segmap_acm_1_4
        lbffIrWithGmvWithTnrWithSapOuterNode->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[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] |=
            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[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] |=
            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[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] |=
            0x3000000000000;  // Run kernel ids 48 (ifd_segmap_tnr_blend_1_4) and 49
                              // (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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapOuterNode;
    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.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[15]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[16]->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[11]->isActive = !(
        lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions &
        no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ae_output -> ae_out
    subGraphLinks[12]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_af_std_output
                                                                       // -> af_std_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                       // -> awb_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                       // -> awb_sat_out
    subGraphLinks[9]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & noPdaf);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_pdaf_output
                                                                         // -> pdaf_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvNoTnrWithSapInnerOptions & noMp);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                                                       // -> image_mp
    subGraphLinks[16]->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 < 17; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->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();

    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[4]->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[5]->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[6]->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[7]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[10];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    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[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvNoTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    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[20];
    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[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.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[17]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[19]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[18]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[20]->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[11]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ae_output
                                                                         // -> ae_out
    subGraphLinks[12]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_af_std_output
                                                                         // -> af_std_out
    subGraphLinks[13]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_std_output
                                                                         // -> awb_std_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_awb_sat_output
                                                                         // -> awb_sat_out
    subGraphLinks[9]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noPdaf);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_pdaf_output
                                                                           // -> pdaf_out
    subGraphLinks[17]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noMp);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                                                         // -> image_mp
    subGraphLinks[19]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions &
                                    noMp);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[18]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvNoTnrWithSapInnerOptions & noDp);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_NoTnr_WithSap:terminal_connect_ofs_dp_output
                                                                         // -> image_dp
    subGraphLinks[20]->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 < 22; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[8]->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[15]->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();

    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[4]->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[5]->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[6]->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[7]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    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[18];
    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[19];
    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[20];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[21];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2NoGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapOuterNode;
    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.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[20]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[21]->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[13]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ae_output
                                                                         // -> ae_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                         // -> af_std_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                         // -> awb_std_out
    subGraphLinks[16]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                         // -> awb_sat_out
    subGraphLinks[11]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noPdaf);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_pdaf_output
                                                                           // -> pdaf_out
    subGraphLinks[20]->isActive =
        !(lbffBayerPdaf3asPdaf2NoGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Bayer_Pdaf3asPdaf2_NoGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                                         // -> image_mp
    subGraphLinks[21]->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 < 22; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->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[17]->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[18]->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[19]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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::SwSegnet;
    link->destNode = &_swSegnetOuterNode;
    link->destTerminalId = 0;
    link->type = LinkType::Node2Node;

    link = &_graphLinks[3];
    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[4];
    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[5];
    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[6];
    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[7];
    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[8];
    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[9];
    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[10];
    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[11];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 13;
    link->dest = GraphElementType::PdafOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[12];
    link->src = GraphElementType::LscBuffer;
    link->dest = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->destNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->destTerminalId = 7;
    link->type = LinkType::Source2Node;

    link = &_graphLinks[13];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 9;
    link->dest = GraphElementType::AeOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[14];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 10;
    link->dest = GraphElementType::AfStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[15];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 11;
    link->dest = GraphElementType::AwbStdOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[16];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 12;
    link->dest = GraphElementType::AwbSatOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[17];
    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[18];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 20;
    link->dest = GraphElementType::GmvMatchOut;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[19];
    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[20];
    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[21];
    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[22];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 28;
    link->dest = GraphElementType::ImageMp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[23];
    link->src = GraphElementType::LbffBayerPdaf3asPdaf2WithGmvWithTnrWithSap;
    link->srcNode = &_lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapOuterNode;
    link->srcTerminalId = 29;
    link->dest = GraphElementType::ImageDp;
    link->type = LinkType::Node2Sink;

    link = &_graphLinks[24];
    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[25];
    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[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.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[22]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[24]->linkConfiguration->bufferSize == 0 && true) {
        lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions |= noMp;
    }
    if (subGraphLinks[23]->linkConfiguration->bufferSize == 0 &&
        subGraphLinks[25]->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[13]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ae_output
                                                                           // -> ae_out
    subGraphLinks[14]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_af_std_output
                                                                           // -> af_std_out
    subGraphLinks[15]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_std_output
                                                                           // -> awb_std_out
    subGraphLinks[16]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & no3A);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_awb_sat_output
                                                                           // -> awb_sat_out
    subGraphLinks[11]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noPdaf);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_pdaf_output
                                                                             // -> pdaf_out
    subGraphLinks[22]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noMp);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                                                           // -> image_mp
    subGraphLinks[24]->isActive = !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions &
                                    noMp);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_mp_output
                                            // -> sw_gdc:terminal_connect_input
    subGraphLinks[23]->isActive =
        !(lbffBayerPdaf3asPdaf2WithGmvWithTnrWithSapInnerOptions & noDp);  // lbff_Bayer_Pdaf3asPdaf2_WithGmv_WithTnr_WithSap:terminal_connect_ofs_dp_output
                                                                           // -> image_dp
    subGraphLinks[25]->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 < 27; i++) {
        if (subGraphLinks[i]->linkConfiguration->bufferSize == 0) {
            subGraphLinks[i]->isActive = false;
        }
    }

    /*
     * Link enablement by inner options combinations
     */
    subGraphLinks[10]->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[17]->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[19]->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[20]->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[21]->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();

    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[4]->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[5]->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[6]->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[7]->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[8]->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[9]->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 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 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 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() {}
