This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

multich_tristream_fullfeature.c 加alg link问题

Other Parts Discussed in Thread: TVP5158

平台是dm8127 appro,rdk 3.5 。在multich_tristream_fullfeature.c 加alg link。怎么接入呢?我的接入没有显示。

/** ==================================================================
 *  @file   multich_tristream_fullFeature.c
 *
 *  @path    ipnc_mcfw/mcfw/src_linux/mcfw_api/usecases/
 *
 *  @desc   This  File contains.
 * ===================================================================
 *  Copyright (c) Texas Instruments Inc 2011, 2012
 *
 *  Use of this software is controlled by the terms and conditions found
 *  in the license agreement under which this software has been supplied
 * ===================================================================*/

/*------------------------------ TRIPLE OUT <1080p + D1 + MJPEG> ----------------------------------
                                      SENSOR
                                ________||_______
                |----SALDRE ON--|    CAMERA LINK  |
                |                |    ISP LINK    |
                |                |________________|
        GLBCE_LINK
                |
                |                __________________
                |                |    CAMERA LINK  |
                |---SALDRE ON---|    ISP LINK    |
                                |________________|
                                    Capture
                                 RSZA     RSZB
                               1080P60    D130
                       (YUV420/YUV422I) (YUV420)     |------------- SD DISPLAY
                                  |            |         |
                                  |         |        (2)
                                 NSF        ----- DUP_1(1) --------- SCALER
                              (YUV420)              (0)                 |
                                  |                  |                  |
                                  |                     |               DUP_3(0)-------- FD
                                  |            |---------                 (1)
                                     |            |                           |----------------
                                  |         |                            |                |
                    --------------|         |                    IPC FRAMES OUT(VPS)     |
                    |                       |                           |                |(VA on VPS)
                    |                       |                            |                |
                 DUP_2(0)-------------|     |                     IPC FRAMES IN(DSP)     |
                   (1)        |---|   |     |                             |                |
                    |          |   |---|-----|                              |---------------|
                    |---------|       |                                    |
                                      |                             VA(VPS/DSP)
                                    MERGE
                                      |
                                      |
                                    SWOSD
                                      |
                                      |
                                   DUP_4(1)----------- HDMI DISPLAY
                                      |
                                      |
                                IPCM3OUT(VPS)
                                      |
                                      |
                                 IPCM3IN(VID)
                                      |
                                      |
                                    H264ENC
                                      |
                                      |
                                  BITSOUT (VID)
                                        |
                                        |
                                  BITSIN (A8)
------------------------------------------------------------------------------------------*/

#include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
#include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"
#include "demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.h"

#ifdef IPNC_DSP_ON
#define VA_ON_DSP
#endif

/*in YUV sensor case, Enabling GLBCE means enabling Memory 2 Memory  */
#ifdef IMGS_OMNIVISION_OV10630
#define YUV_M2M_DRV_TEST
#endif

extern UInt32 gIsGlbceInitDone;
extern GlbcePreset gGLBCE_AlgoPreset;

/* =============================================================================
 * Externs
 * ============================================================================= */

/* =============================================================================
 * Use case code
 * ============================================================================= */
static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl =
{
    .isPopulated = 1,
    .ivaMap[0] = {
        .EncNumCh = 2,
        .EncChList = {0, 1},
        .DecNumCh = 2,
        .DecChList = {0, 1},
    },

};
#ifdef ENABLE_TILER
#define TILER_ENABLE    TRUE
#else
#define TILER_ENABLE    FALSE
#endif

/* Merge Link for camera streams */
#define NUM_MERGE_LINK              (1)
#define CAM_STREAM_MERGE_IDX        (0)

/* Dup Links */
#define NUM_DUP_LINK                (5)
#define DIS_DUP_IDX                    (0)
#define MJPEG_DUP_LINK_IDX            (1)
#define SCALER_DUP_IDX                (2)
#define VA_DUP_IDX                    (3)




#define ADD_MY_ALG 1

#if ADD_MY_ALG

#define MY_VA_DUP_IDX                    (4)

#endif

/* ===================================================================
 *  @func     MultiCh_createTriStreamFullFtr
 *
 *  @desc     Function does the following
 *
 *  @modif    This function modifies the following structures
 *
 *  @inputs   This function takes the following inputs
 *            <argument name>
 *            Description of usage
 *            <argument name>
 *            Description of usage
 *
 *  @outputs  <argument name>
 *            Description of usage
 *
 *  @return   Return value of this function if any
 *  ==================================================================
 */
Void MultiCh_createTriStreamFullFtr()
{
    UInt32 i;
    CameraLink_CreateParams cameraPrm;
    IspLink_CreateParams  ispPrm;
    UInt32 ispId;
    GlbceLink_CreateParams  glbcePrm;
    UInt32 glbceId;
    NsfLink_CreateParams nsfPrm;
    VnfLink_CreateParams vnfPrm;
    MergeLink_CreateParams mergePrm[NUM_MERGE_LINK];
    IpcLink_CreateParams ipcOutVpssPrm;
    IpcLink_CreateParams ipcInVideoPrm;
    EncLink_CreateParams encPrm;
    DupLink_CreateParams dupPrm[NUM_DUP_LINK];
    SclrLink_CreateParams       sclrPrm;
    DisplayLink_CreateParams displayPrm;
    DisplayLink_CreateParams displayPrm_SD;
    FdLink_CreateParams fdPrm;
    SwosdLink_CreateParams swosdPrm;
    IpcBitsOutLinkRTOS_CreateParams ipcBitsOutVideoPrm;
    IpcBitsInLinkHLOS_CreateParams ipcBitsInHostPrm0;
    VstabLink_CreateParams vstabPrm;
    GlbceSupportLink_CreateParams glbceSupportPrm;
    VaLink_CreateParams vaPrm;
    IpcFramesOutLinkRTOS_CreateParams ipcFramesOutVpssPrm;
    IpcFramesInLinkRTOS_CreateParams ipcFramesInDspPrm;

    CameraLink_VipInstParams *pCameraInstPrm;
    CameraLink_OutParams *pCameraOutPrm;



    ////////////////////my link////////////////////////
#if ADD_MY_ALG
    AlgLink_CreateParams      dspAlgPrm;
    UInt32 dspAlgId;


    IpcFramesOutLinkRTOS_CreateParams alg_ipcFramesOutVpssPrm;
    IpcFramesInLinkRTOS_CreateParams alg_ipcFramesInDspPrm;
    UInt32 alg_ipcFramesOutVpssId;
    UInt32 alg_ipcFramesInDspId;
#endif
/////////////////////////////////////////////////



    UInt32 mergeId[NUM_MERGE_LINK];
    UInt32 ipcOutVpssId;
    UInt32 ipcInVideoId;
    UInt32 dupId[NUM_DUP_LINK];
    UInt32 vstabId;
    UInt32 glbceSupportId;
    UInt32 ipcFramesOutVpssId;
    UInt32 ipcFramesInDspId;

#ifdef WDR_ON
    WdrLink_CreateParams  wdrPrm;
    UInt32 wdrId;
    UInt32 wdrSupportId;
    WdrSupportLink_CreateParams wdrSupportPrm;
#endif

    /* IPC struct init */
    MULTICH_INIT_STRUCT(IpcLink_CreateParams, ipcOutVpssPrm);
    MULTICH_INIT_STRUCT(IpcLink_CreateParams, ipcInVideoPrm);
    MULTICH_INIT_STRUCT(IpcBitsOutLinkRTOS_CreateParams, ipcBitsOutVideoPrm);
    MULTICH_INIT_STRUCT(IpcBitsInLinkHLOS_CreateParams, ipcBitsInHostPrm0);
    MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams, ipcFramesOutVpssPrm);
    MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams, ipcFramesInDspPrm);



    ////////////////////my link////////////////////////
#if ADD_MY_ALG
    // MULTICH_INIT_STRUCT(AlgLink_CreateParams , dspAlgPrm);

    MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams, alg_ipcFramesOutVpssPrm);
    MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams, alg_ipcFramesInDspPrm);
#endif
/////////////////////////////////////////////////////




    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
    {
        OSA_printf("\n********** SMART ANALYTICS USECASE ********\n");
        OSA_printf
        ("********* Entered Smart Analytics usecase - H264 1080p @60fps + H264 D1 @30fps + MJPEG 1080p @5fps ********\n\n");
    }
    else
    {
        OSA_printf("\n********** FULL FEATURE USECASE ********\n");
        OSA_printf
        ("********* Entered Tri Streaming usecase - H264 1080p @60fps + H264 D1 @30fps + MJPEG 1080p @5fps ********\n\n");
    }

    MultiCh_detectBoard();

    System_linkControl(SYSTEM_LINK_ID_M3VPSS,
                       SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);

    System_linkControl(SYSTEM_LINK_ID_M3VIDEO,
                       SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
                       &systemVid_encDecIvaChMapTbl,
                       sizeof(SystemVideo_Ivahd2ChMap_Tbl), TRUE);

    /* Link IDs */
    gVcamModuleContext.cameraId = SYSTEM_LINK_ID_CAMERA;
    gVencModuleContext.encId = SYSTEM_LINK_ID_VENC_0;
    gMjpegModuleContext.mjpepEncId = SYSTEM_LINK_ID_MJPEG;
    mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
    dupId[DIS_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_0;
    dupId[MJPEG_DUP_LINK_IDX] = SYSTEM_VPSS_LINK_ID_DUP_1;
    dupId[SCALER_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_2;
    dupId[VA_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_3;
    gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
    gVsysModuleContext.fdId = SYSTEM_LINK_ID_FD;
    gVsysModuleContext.swOsdId = SYSTEM_LINK_ID_SWOSD_0;
    ispId = SYSTEM_LINK_ID_ISP_0;
    glbceId = SYSTEM_LINK_ID_GLBCE;
    vstabId = SYSTEM_LINK_ID_VSTAB_0;
    glbceSupportId = SYSTEM_LINK_ID_GLBCE_SUPPORT_0;


////////////////////my link/////////////////////////////////////////////////
#if ADD_MY_ALG

    dspAlgId = SYSTEM_LINK_ID_ALG_0;
#endif
///////////////////////////////////////////////////////////////////////



#ifdef WDR_ON
    wdrId = SYSTEM_LINK_ID_WDR;
    wdrSupportId = SYSTEM_LINK_ID_WDR_SUPPORT;
#endif
    gVdisModuleContext.displayId[VDIS_DEV_HDMI] = SYSTEM_LINK_ID_DISPLAY_0;
    gVdisModuleContext.displayId[VDIS_DEV_SD] = SYSTEM_LINK_ID_DISPLAY_2;
    ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
    ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
    gVencModuleContext.ipcBitsOutRTOSId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
    gVencModuleContext.ipcBitsInHLOSId = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;

    ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
    ipcFramesInDspId   = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;

#if ADD_MY_ALG
    alg_ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_1;
    alg_ipcFramesInDspId   = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_1;
#endif
#ifdef VA_ON_DSP
    gVsysModuleContext.vaId = SYSTEM_DSP_LINK_ID_VA;
#else
    gVsysModuleContext.vaId = SYSTEM_VPSS_LINK_ID_VA;
    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
    {
        /* When VA is running on VPSS M3 then we cannot create ISS_NF
           so forcing NF type to be DSS_NF */
        gUI_mcfw_config.noisefilterMode = DSS_VNF_ON;
    }
#endif

    if(gUI_mcfw_config.glbceEnable)
    {
        gVcamModuleContext.glbceId = glbceId;
#ifdef WDR_ON
        gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
#endif

        /* Camera Link params */
        CameraLink_CreateParams_Init(&cameraPrm);
        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        {
            gVcamModuleContext.nsfId = SYSTEM_LINK_ID_NSF_0;
        }
        else
        {
            gVcamModuleContext.vnfId = SYSTEM_LINK_ID_VNF;
            cameraPrm.vnfLinkId = SYSTEM_LINK_ID_VNF;
        }

        cameraPrm.captureMode = CAMERA_LINK_CAPMODE_DDR;
#ifdef YUV_M2M_DRV_TEST
        cameraPrm.outQueParams[0].nextLink = ispId;
#else
        cameraPrm.outQueParams[0].nextLink = glbceId;
#ifdef WDR_ON
        cameraPrm.outQueParams[0].nextLink = wdrId;
#endif
#endif
        cameraPrm.ispLinkId = ispId;

        /* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
         * audio channels connected in cascade */
        cameraPrm.numAudioChannels = 0;
        cameraPrm.numVipInst = 1;

#if (TILER_ENABLE == TRUE)
        cameraPrm.tilerEnable = TRUE;
#else
        cameraPrm.tilerEnable = FALSE;
#endif

        cameraPrm.vsEnable = gUI_mcfw_config.vsEnable;
        cameraPrm.vstabLinkId = vstabId;

        pCameraInstPrm = &cameraPrm.vipInst[0];
        pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
        pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
        pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;

#ifdef IMGS_OMNIVISION_OV10630
        pCameraInstPrm->sensorOutWidth  = 1280;
        pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_SONY_IMX104
        pCameraInstPrm->sensorOutWidth  = 1280;
        pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
        pCameraInstPrm->sensorOutWidth  = 1280;
        pCameraInstPrm->sensorOutHeight = 736;
#else
        pCameraInstPrm->sensorOutWidth  = 1920;
        pCameraInstPrm->sensorOutHeight = 1080;
#endif

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        {
            pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
        }
        else
        {
            pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
            cameraPrm.issVnfEnable = 1;
        }

        pCameraInstPrm->numOutput = 1;

        pCameraOutPrm = &pCameraInstPrm->outParams[0];
        pCameraOutPrm->scEnable = FALSE;

#ifdef IMGS_OMNIVISION_OV10630
        pCameraOutPrm->dataFormat = SYSTEM_DF_YUV422I_UYVY;        //SYSTEM_DF_YUV422I_VYUY;
        pCameraOutPrm->scOutWidth = 1280;
        pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_SONY_IMX104
        pCameraOutPrm->dataFormat = SYSTEM_DF_BAYER_RAW;
        pCameraOutPrm->scOutWidth = 1280;
        pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
        pCameraOutPrm->dataFormat = SYSTEM_DF_BAYER_RAW;
        pCameraOutPrm->scOutWidth = 1280;
        pCameraOutPrm->scOutHeight = 736;
#else
        pCameraOutPrm->dataFormat = SYSTEM_DF_BAYER_RAW;
        pCameraOutPrm->scOutWidth = 1920;
        pCameraOutPrm->scOutHeight = 1080;
#endif

        pCameraOutPrm->outQueId = 0;

        /* 2A config */
        cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
        cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
    }
    else /*GLBCE OFF*/
    {

        gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
        /* Camera Link params */
        CameraLink_CreateParams_Init(&cameraPrm);

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        {
            gVcamModuleContext.nsfId = SYSTEM_LINK_ID_NSF_0;
        }
        else
        {
            gVcamModuleContext.vnfId = SYSTEM_LINK_ID_VNF;
            cameraPrm.vnfLinkId = SYSTEM_LINK_ID_VNF;
        }

        cameraPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
            cameraPrm.outQueParams[0].nextLink  = gVcamModuleContext.nsfId;
        else
            cameraPrm.outQueParams[0].nextLink  = gVcamModuleContext.vnfId;

        cameraPrm.outQueParams[1].nextLink = dupId[SCALER_DUP_IDX];

        /* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
         * audio channels connected in cascade */
        cameraPrm.numAudioChannels = 1;
        cameraPrm.numVipInst = 1;

#if (TILER_ENABLE == TRUE)
        cameraPrm.tilerEnable = TRUE;
#else
        cameraPrm.tilerEnable = FALSE;
#endif

        cameraPrm.vsEnable = gUI_mcfw_config.vsEnable;
        cameraPrm.vstabLinkId = vstabId;

        pCameraInstPrm = &cameraPrm.vipInst[0];
        pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
        pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
        pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;

#ifdef IMGS_OMNIVISION_OV10630
        pCameraInstPrm->sensorOutWidth  = 1280;
        pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_SONY_IMX104
        pCameraInstPrm->sensorOutWidth  = 1280;
        pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
        pCameraInstPrm->sensorOutWidth  = 1280;
        pCameraInstPrm->sensorOutHeight = 736;
#else
        pCameraInstPrm->sensorOutWidth  = 1920;
        pCameraInstPrm->sensorOutHeight = 1080;
#endif

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        {
            pCameraInstPrm->standard = SYSTEM_STD_1080P_60;
        }
        else
        {
            pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
            cameraPrm.issVnfEnable = 1;
        }

        pCameraInstPrm->numOutput = 2;

        /* First stream */
        pCameraOutPrm = &pCameraInstPrm->outParams[0];

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
            pCameraOutPrm->dataFormat = SYSTEM_DF_YUV422I_UYVY;
        else
            pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
        pCameraOutPrm->scEnable = FALSE;

#ifdef IMGS_OMNIVISION_OV10630
        pCameraOutPrm->scOutWidth = 1280;
        pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_SONY_IMX104
        pCameraOutPrm->scOutWidth = 1280;
        pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
        pCameraOutPrm->scOutWidth = 1280;
        pCameraOutPrm->scOutHeight = 736;
#else
        /* When VS is enabled then scOutWidth/scOutHeight cannot be equal to sensorOutWidth/sensorOutHeight */
        if(cameraPrm.vsEnable == 0)
        {
            pCameraOutPrm->scOutWidth = 1920;
            pCameraOutPrm->scOutHeight = 1080;
        }
        else
        {
            pCameraOutPrm->scOutWidth = 1600;
            pCameraOutPrm->scOutHeight = 900;
        }
#endif

        pCameraOutPrm->outQueId = 0;

        /* Second stream */
        pCameraOutPrm = &pCameraInstPrm->outParams[1];
        pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
        pCameraOutPrm->scEnable = FALSE;
        pCameraOutPrm->scOutWidth = 720;
        pCameraOutPrm->scOutHeight = 480;
        pCameraOutPrm->standard = SYSTEM_STD_NTSC;
        pCameraOutPrm->outQueId = 1;

        /* 2A config */
        cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
        cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
    }

    /* vstab Link params */
    vstabPrm.totalFrameWidth  = pCameraInstPrm->sensorOutWidth;
    vstabPrm.totalFrameHeight = pCameraInstPrm->sensorOutHeight;

    glbceSupportPrm.glbceLinkID = glbceId;
    glbceSupportPrm.totalFrameWidth  = pCameraInstPrm->sensorOutWidth;
    glbceSupportPrm.totalFrameHeight = pCameraInstPrm->sensorOutHeight;

#ifdef WDR_ON
    wdrSupportPrm.wdrLinkID = wdrId;
    wdrSupportPrm.totalFrameWidth  = pCameraInstPrm->sensorOutWidth;
    wdrSupportPrm.totalFrameHeight = pCameraInstPrm->sensorOutHeight;
#endif

    if(gUI_mcfw_config.glbceEnable)
    {
        cameraPrm.glbceLinkId = glbceId;
#ifdef WDR_ON
        cameraPrm.glbceLinkId = SYSTEM_LINK_ID_INVALID;
#endif
        /* Glbce Link Params */
        glbcePrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
        glbcePrm.inQueParams.prevLinkQueId = 0;
        glbcePrm.outQueParams.nextLink = ispId;
        glbcePrm.chCreateParams[0].preset  = 0;//gGLBCE_AlgoPreset;
        glbcePrm.glbceEnable = gUI_mcfw_config.glbceEnable;
        glbcePrm.glbceSupportID = glbceSupportId;
        glbcePrm.swosdLinkID = gVsysModuleContext.swOsdId;

#ifdef WDR_ON
        wdrPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
        wdrPrm.inQueParams.prevLinkQueId = 0;
        wdrPrm.outQueParams.nextLink = ispId;
        wdrPrm.chCreateParams[0].preset  = 0;
        wdrPrm.wdrEnable = 1;
        wdrPrm.wdrSupportID = wdrSupportId;
        wdrPrm.swosdLinkID = gVsysModuleContext.swOsdId;
#endif

        /* isp link params */
#ifdef YUV_M2M_DRV_TEST
        ispPrm.inQueParams.prevLinkId    = gVcamModuleContext.cameraId;
#else
        ispPrm.inQueParams.prevLinkId    = glbceId;
#ifdef WDR_ON
        ispPrm.inQueParams.prevLinkId     = wdrId;
#endif
#endif
        ispPrm.inQueParams.prevLinkQueId = 0;
        ispPrm.numOutQueue               = 2;

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
            ispPrm.outQueInfo[0].nextLink  = gVcamModuleContext.nsfId;
        else
            ispPrm.outQueInfo[0].nextLink  = gVcamModuleContext.vnfId;

        ispPrm.outQueInfo[1].nextLink    = dupId[SCALER_DUP_IDX];

#if defined(TI_8107_BUILD)
        ispPrm.clkDivM                     = 10;
        ispPrm.clkDivN                    = 30;//30;
#else
        ispPrm.clkDivM                     = 10;
        ispPrm.clkDivN                    = 20;
#endif

        ispPrm.vsEnable = gUI_mcfw_config.vsEnable;

        if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
            ispPrm.outQueuePrm[0].dataFormat = SYSTEM_DF_YUV422I_UYVY;
        else
            ispPrm.outQueuePrm[0].dataFormat = SYSTEM_DF_YUV420SP_UV;

#ifdef IMGS_OMNIVISION_OV10630
        ispPrm.outQueuePrm[0].width      = 1280;
        ispPrm.outQueuePrm[0].height     = 720;
#elif defined IMGS_SONY_IMX104
        ispPrm.outQueuePrm[0].width      = 1280;
        ispPrm.outQueuePrm[0].height     = 720;
#elif defined IMGS_MICRON_MT9M034
        ispPrm.outQueuePrm[0].width      = 1280;
        ispPrm.outQueuePrm[0].height     = 736;
#else
        if(ispPrm.vsEnable == TRUE)
        {
            ispPrm.outQueuePrm[0].width      = 1600;
            ispPrm.outQueuePrm[0].height     = 900;
        }
        else
        {
            ispPrm.outQueuePrm[0].width      = 1920;
            ispPrm.outQueuePrm[0].height     = 1080;
        }
#endif

        ispPrm.outQueuePrm[1].dataFormat = SYSTEM_DF_YUV420SP_UV;
        ispPrm.outQueuePrm[1].width      = 720;
        ispPrm.outQueuePrm[1].height     = 480;//576;
        ispPrm.outQueuePrm[1].standard   = SYSTEM_STD_NTSC;//SYSTEM_STD_PAL;//SYSTEM_STD_NTSC;
    }

    ispPrm.vnfFullResolution = FALSE;
    cameraPrm.vnfFullResolution = FALSE;

    if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
    {
        /* NSF Link params */
        NsfLink_CreateParams_Init(&nsfPrm);
        if (gUI_mcfw_config.snfEnable)
        {
            if (gUI_mcfw_config.tnfEnable)
                nsfPrm.bypassNsf = NSF_LINK_BYPASS_NONE;
            else
                nsfPrm.bypassNsf = NSF_LINK_BYPASS_TNF;
        }
        else
        {
            if (gUI_mcfw_config.tnfEnable)
                nsfPrm.bypassNsf = NSF_LINK_BYPASS_SNF;
            else
                nsfPrm.bypassNsf = NSF_LINK_BYPASS_SNF_TNF;
        }
#if (TILER_ENABLE == TRUE)
        nsfPrm.tilerEnable = TRUE;
#else
        nsfPrm.tilerEnable = FALSE;
#endif

        if(gUI_mcfw_config.glbceEnable)
            nsfPrm.inQueParams.prevLinkId = ispId;
        else
            nsfPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;

        nsfPrm.inQueParams.prevLinkQueId = 0;
        nsfPrm.numOutQue = 1;
        nsfPrm.numBufsPerCh = 6;
        nsfPrm.inputFrameRate = 60;
        nsfPrm.outputFrameRate = 60;
        nsfPrm.outQueParams[0].nextLink = dupId[MJPEG_DUP_LINK_IDX];
        nsfPrm.nsfStrength = gUI_mcfw_config.vnfStrength;
    }
    else
    {
        VnfLink_ChCreateParams *vnfParams;

        /* Vnf Link Params */
        if(gUI_mcfw_config.glbceEnable)
            vnfPrm.inQueParams.prevLinkId = ispId;
        else
            vnfPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;

        vnfPrm.inQueParams.prevLinkQueId = 0;
        vnfPrm.outQueParams.nextLink = dupId[MJPEG_DUP_LINK_IDX];

        vnfParams = &vnfPrm.chCreateParams[0];
        vnfParams->sParams.eOutputFormat = SYSTEM_DF_YUV420SP_UV;
        if (gUI_mcfw_config.ldcEnable)
        {
            vnfParams->sParams.eOperateMode = VNF_LINK_LDC_AFFINE_NSF_TNF;
        }
        else
        {
#ifdef USE_TNF2_FILTER
            vnfParams->sParams.eOperateMode =  VNF_LINK_3DNF;
#elif defined (USE_TNF3_FILTER)
            vnfParams->sParams.eOperateMode =  VNF_LINK_TNF3;
#else
            vnfParams->sParams.eOperateMode = VNF_LINK_AFFINE_NSF_TNF;
#endif
            vnfParams->sParams.eNsfSet = VNF_LINK_NSF_LUMA_CHROMA;
        }

        if ((vnfParams->sParams.eOperateMode == VNF_LINK_TNF3) && (vnfParams->sParams.eNsfSet == VNF_LINK_NSF_LUMA_CHROMA))
        {
            if (gUI_mcfw_config.glbceEnable)
            {
                ispPrm.vnfFullResolution = TRUE;
                cameraPrm.vnfFullResolution = FALSE;
            }
            else
            {
                ispPrm.vnfFullResolution = FALSE;
                cameraPrm.vnfFullResolution = TRUE;
            }
        }

        vnfParams->dParams.ldcParams.eInterpolationLuma =
            VNF_LINK_YINTERPOLATION_BILINEAR;
        vnfParams->dParams.ldcParams.unPixelPad = 4;

        vnfParams->dParams.nsfParams.bLumaEn = TRUE;
        vnfParams->dParams.nsfParams.bChromaEn = TRUE;
        vnfParams->dParams.nsfParams.eSmoothVal = VNF_LINK_SMOOTH_0;
        vnfParams->dParams.nsfParams.bSmoothLumaEn = TRUE;
        vnfParams->dParams.nsfParams.bSmoothChromaEn = TRUE;

        vnfParams->dParams.tnfParams.useDefault = TRUE;

        vnfParams->dParams.nsfFilter.eFilterParam = VNF_LINK_PARAM_DEFAULT;
        vnfParams->dParams.nsfEdge.eEdgeParam = VNF_LINK_PARAM_DISABLE;
        vnfParams->dParams.nsfShading.eShdParam = VNF_LINK_PARAM_DISABLE;
        vnfParams->dParams.nsfDesaturation.eDesatParam = VNF_LINK_PARAM_DISABLE;

        vnfPrm.chCreateParams[0].bSnfEnable = gUI_mcfw_config.snfEnable;
        vnfPrm.chCreateParams[0].bTnfEnable = gUI_mcfw_config.tnfEnable;
        vnfPrm.chCreateParams[0].strength    = gUI_mcfw_config.vnfStrength;
    }

    /* Dup Link params */
    if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        dupPrm[MJPEG_DUP_LINK_IDX].inQueParams.prevLinkId =
            gVcamModuleContext.nsfId;
    else
        dupPrm[MJPEG_DUP_LINK_IDX].inQueParams.prevLinkId =
            gVcamModuleContext.vnfId;

    dupPrm[MJPEG_DUP_LINK_IDX].inQueParams.prevLinkQueId = 0;
    dupPrm[MJPEG_DUP_LINK_IDX].numOutQue = 2;
    dupPrm[MJPEG_DUP_LINK_IDX].outQueParams[0].nextLink =
        mergeId[CAM_STREAM_MERGE_IDX];
    dupPrm[MJPEG_DUP_LINK_IDX].outQueParams[1].nextLink =
        mergeId[CAM_STREAM_MERGE_IDX];
    dupPrm[MJPEG_DUP_LINK_IDX].notifyNextLink = TRUE;

    /* Dup link for Scaler params */
    if(gUI_mcfw_config.glbceEnable)
        dupPrm[SCALER_DUP_IDX].inQueParams.prevLinkId = ispId;
    else
        dupPrm[SCALER_DUP_IDX].inQueParams.prevLinkId = gVcamModuleContext.cameraId;

    dupPrm[SCALER_DUP_IDX].inQueParams.prevLinkQueId = 1;
    dupPrm[SCALER_DUP_IDX].numOutQue = 3;
    dupPrm[SCALER_DUP_IDX].outQueParams[0].nextLink =
        mergeId[CAM_STREAM_MERGE_IDX];
    dupPrm[SCALER_DUP_IDX].outQueParams[1].nextLink = gVcamModuleContext.sclrId[0];
    dupPrm[SCALER_DUP_IDX].outQueParams[2].nextLink =
        gVdisModuleContext.displayId[VDIS_DEV_SD];
    dupPrm[SCALER_DUP_IDX].notifyNextLink = TRUE;

    /* display link params */
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm_SD);
    displayPrm_SD.inQueParams[0].prevLinkId = dupId[SCALER_DUP_IDX];
    displayPrm_SD.inQueParams[0].prevLinkQueId = 2;
    displayPrm_SD.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
    displayPrm_SD.displayId  = DISPLAY_LINK_DISPLAY_SD;

    /* Merge Link params */
    mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 3;
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId =
        dupId[MJPEG_DUP_LINK_IDX];
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =
        dupId[SCALER_DUP_IDX];
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 0;
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[2].prevLinkId =
        dupId[MJPEG_DUP_LINK_IDX];
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[2].prevLinkQueId = 1;
    mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink =
        gVsysModuleContext.swOsdId;
    mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;

    /* SWOSD Link Params */
    swosdPrm.inQueParams.prevLinkId = mergeId[CAM_STREAM_MERGE_IDX];
    swosdPrm.inQueParams.prevLinkQueId = 0;
    swosdPrm.outQueParams.nextLink = dupId[DIS_DUP_IDX];
    swosdPrm.frameSync = 1;                                // frame sync is
    // required
    swosdPrm.frameSycChId = 1;                             // frame sync is
    // required on
    // channel # 1





    ///////////////////////////////////////my link////////////////////////////////////////
//#if 0
#if ADD_MY_ALG


   
      /* Display dup link params */
    dupPrm[DIS_DUP_IDX].inQueParams.prevLinkId = gVsysModuleContext.swOsdId;
    dupPrm[DIS_DUP_IDX].inQueParams.prevLinkQueId = 0;
    dupPrm[DIS_DUP_IDX].numOutQue = 2;//
    dupPrm[DIS_DUP_IDX].outQueParams[0].nextLink = ipcOutVpssId;
    // dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
     dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = alg_ipcFramesOutVpssId;
    dupPrm[DIS_DUP_IDX].notifyNextLink = TRUE;//FALSE

    //UInt32 alg_ipcFramesOutVpssId;
    /// UInt32 alg_ipcFramesInDs

    /* IPC Frames Out VPSS for VA link params */
    alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = dupId[DIS_DUP_IDX];
    alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 1;
    alg_ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
    alg_ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 30;
    alg_ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 30;

    alg_ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
    alg_ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = alg_ipcFramesInDspId;
    alg_ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;

    alg_ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
    alg_ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
    alg_ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;




    /* IPC Frames in DSP for VA link params */
    alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = alg_ipcFramesOutVpssId;
    alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    alg_ipcFramesInDspPrm.baseCreateParams.numOutQue   = 1;
    alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = dspAlgId;
    //alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
    alg_ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
    alg_ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
    alg_ipcFramesInDspPrm.baseCreateParams.noNotifyMode   = FALSE;



    AlgLink_CreateParams_Init(&dspAlgPrm);
    dspAlgPrm.enableOSDAlg = TRUE;
    dspAlgPrm.enableSCDAlg = FALSE;
    // dspAlgPrm.inQueParams.prevLinkId = ipcFramesInDspId;
    dspAlgPrm.inQueParams.prevLinkId =  alg_ipcFramesInDspId;
    dspAlgPrm.inQueParams.prevLinkQueId = 0;
    //dspAlgPrm.outQueParams[0].nextLink = ipcFramesOutDspId;
    dspAlgPrm.outQueParams.nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];;
    //dspAlgPrm.outQueParams.nextLink = SYSTEM_LINK_ID_INVALID;
    AlgLink_OsdChWinParams * chWinPrm = &dspAlgPrm.osdChCreateParams[0].chDefaultParams;

    /* set osd window max width and height */
    dspAlgPrm.osdChCreateParams[0].maxWidth  = 320;
    dspAlgPrm.osdChCreateParams[0].maxHeight = 192;
    chWinPrm->chId = 0;
    chWinPrm->numWindows = 0;


    /* display link params */
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm);
    //displayPrm.inQueParams[0].prevLinkId = dupId[DIS_DUP_IDX];
     displayPrm.inQueParams[0].prevLinkId = dspAlgId;
    displayPrm.inQueParams[0].prevLinkQueId = 0;
    displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
    displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SC2;
#else

    /* Display dup link params */
    dupPrm[DIS_DUP_IDX].inQueParams.prevLinkId = gVsysModuleContext.swOsdId;
    dupPrm[DIS_DUP_IDX].inQueParams.prevLinkQueId = 0;
    dupPrm[DIS_DUP_IDX].numOutQue = 2;//
    dupPrm[DIS_DUP_IDX].outQueParams[0].nextLink = ipcOutVpssId;
    dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
    //dupPrm[DIS_DUP_IDX].outQueParams[2].nextLink = dspAlgId;
    dupPrm[DIS_DUP_IDX].notifyNextLink = TRUE;//FALSE



    /* display link params */
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm);
    displayPrm.inQueParams[0].prevLinkId = dupId[DIS_DUP_IDX];
    // displayPrm.inQueParams[0].prevLinkId = dspAlgId;
    displayPrm.inQueParams[0].prevLinkQueId = 1;
    displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
    displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SC2;

#endif
    /////////////////////////////////////////////////////////////////////////////



    /* Scaler Link Params */
    SclrLink_CreateParams_Init(&sclrPrm);
    sclrPrm.inQueParams.prevLinkId             = dupId[SCALER_DUP_IDX];
    sclrPrm.inQueParams.prevLinkQueId          = 1;
    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
        sclrPrm.outQueParams.nextLink          = dupId[VA_DUP_IDX];
    else
        sclrPrm.outQueParams.nextLink          = gVsysModuleContext.fdId;
    sclrPrm.tilerEnable                        = FALSE;
    sclrPrm.enableLineSkipSc                   = FALSE;
    sclrPrm.inputFrameRate                     = 30;
    sclrPrm.outputFrameRate                    = 30;
    sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
    sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
    sclrPrm.outScaleFactor.absoluteResolution.outWidth   = 320;
    sclrPrm.outScaleFactor.absoluteResolution.outHeight  = 192;
    sclrPrm.outDataFormat = VF_YUV420SP_UV;
    sclrPrm.pathId = SCLR_LINK_SEC0_SC3;

    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
    {
        

   ///////////////////////////////////////my link////////////////////////////////////////
//#if ADD_MY_ALG
#if 0

dupPrm[VA_DUP_IDX].inQueParams.prevLinkId = gVcamModuleContext.sclrId[0];
        dupPrm[VA_DUP_IDX].inQueParams.prevLinkQueId = 0;
        dupPrm[VA_DUP_IDX].numOutQue = 3;
        dupPrm[VA_DUP_IDX].outQueParams[0].nextLink = gVsysModuleContext.fdId;


#ifdef VA_ON_DSP
        dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = ipcFramesOutVpssId;
#else
        dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = gVsysModuleContext.vaId;
#endif

 dupPrm[VA_DUP_IDX].outQueParams[2].nextLink = alg_ipcFramesOutVpssId;


        dupPrm[VA_DUP_IDX].notifyNextLink = TRUE;
 
    /* IPC Frames Out VPSS for VA link params */
    alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
    alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 2;
    alg_ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
    alg_ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 30;
    alg_ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 30;

    alg_ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
    alg_ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = alg_ipcFramesInDspId;
    alg_ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;

    alg_ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
    alg_ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
    alg_ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;




    /* IPC Frames in DSP for VA link params */
    alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = alg_ipcFramesOutVpssId;
    alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    alg_ipcFramesInDspPrm.baseCreateParams.numOutQue   = 1;
    alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = dspAlgId;
    //alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
    alg_ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
    alg_ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
    alg_ipcFramesInDspPrm.baseCreateParams.noNotifyMode   = FALSE;



    AlgLink_CreateParams_Init(&dspAlgPrm);
    dspAlgPrm.enableOSDAlg = TRUE;
    dspAlgPrm.enableSCDAlg = FALSE;
    // dspAlgPrm.inQueParams.prevLinkId = ipcFramesInDspId;
    dspAlgPrm.inQueParams.prevLinkId =  alg_ipcFramesInDspId;
    dspAlgPrm.inQueParams.prevLinkQueId = 0;
    //dspAlgPrm.outQueParams[0].nextLink = ipcFramesOutDspId;
    //dspAlgPrm.outQueParams.nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];;
    dspAlgPrm.outQueParams.nextLink = SYSTEM_LINK_ID_INVALID;
    AlgLink_OsdChWinParams * chWinPrm = &dspAlgPrm.osdChCreateParams[0].chDefaultParams;

    /* set osd window max width and height */
    dspAlgPrm.osdChCreateParams[0].maxWidth  = 320;
    dspAlgPrm.osdChCreateParams[0].maxHeight = 192;
    chWinPrm->chId = 0;
    chWinPrm->numWindows = 0;


    /* display link params */
  //  MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm);
    //displayPrm.inQueParams[0].prevLinkId = alg_ipcFramesInDspId;
  //   displayPrm.inQueParams[0].prevLinkId =  dupId[DIS_DUP_IDX];
  //   displayPrm.inQueParams[0].prevLinkQueId = 1;
  //  displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
  //  displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SC2;
    // displayPrm.displayId  = DISPLAY_LINK_DISPLAY_AUTO_SELECT;
#else
dupPrm[VA_DUP_IDX].inQueParams.prevLinkId = gVcamModuleContext.sclrId[0];
        dupPrm[VA_DUP_IDX].inQueParams.prevLinkQueId = 0;
        dupPrm[VA_DUP_IDX].numOutQue =2;
        dupPrm[VA_DUP_IDX].outQueParams[0].nextLink = gVsysModuleContext.fdId;


#ifdef VA_ON_DSP
        dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = ipcFramesOutVpssId;
#else
        dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = gVsysModuleContext.vaId;
#endif


        dupPrm[VA_DUP_IDX].notifyNextLink = TRUE;
#endif
    /////////////////////////////////////////////////////////////////////////////




#ifdef VA_ON_DSP
        /* IPC Frames Out VPSS for VA link params */
        ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
        ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 1;
        ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
        ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 30;
        ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 30;

        ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
        ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = ipcFramesInDspId;
        ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;

        ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
        ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
        ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;




        /* IPC Frames in DSP for VA link params */
        ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
        ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
        ipcFramesInDspPrm.baseCreateParams.numOutQue   = 1;
        ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = gVsysModuleContext.vaId;
        ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
        ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
        ipcFramesInDspPrm.baseCreateParams.noNotifyMode   = FALSE;


        /* VA link params */
        VaLink_CreateParams_Init(&vaPrm);
        vaPrm.inQueParams.prevLinkId    = ipcFramesInDspId;
        vaPrm.inQueParams.prevLinkQueId = 0;
        vaPrm.encLinkId                 = gVencModuleContext.encId;
        vaPrm.swosdLinkId                = gVsysModuleContext.swOsdId;
        vaPrm.cameraLinkId              = gVcamModuleContext.cameraId;
        vaPrm.vaFrameRate               = 20;
#else
        /* VA link params */
        VaLink_CreateParams_Init(&vaPrm);
        vaPrm.inQueParams.prevLinkId    = dupId[VA_DUP_IDX];
        vaPrm.inQueParams.prevLinkQueId = 1;
        vaPrm.encLinkId                 = gVencModuleContext.encId;
        vaPrm.swosdLinkId                = gVsysModuleContext.swOsdId;
        vaPrm.cameraLinkId              = gVcamModuleContext.cameraId;
        vaPrm.vaFrameRate               = 15;
#endif
    }

    /* FD Link Params */
    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
        fdPrm.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
    else
        fdPrm.inQueParams.prevLinkId = gVcamModuleContext.sclrId[0];
    fdPrm.inQueParams.prevLinkQueId = 0;
    fdPrm.swOsdId = gVsysModuleContext.swOsdId;            // SW OSD link ID
    // used for frame
    // sync

    /* IPC Out VPSS link params */
    ipcOutVpssPrm.inQueParams.prevLinkId = dupId[DIS_DUP_IDX];
    ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
    ipcOutVpssPrm.numOutQue = 1;
    ipcOutVpssPrm.outQueParams[0].nextLink = ipcInVideoId;
    ipcOutVpssPrm.notifyNextLink = TRUE;
    ipcOutVpssPrm.notifyPrevLink = TRUE;
    ipcOutVpssPrm.noNotifyMode = FALSE;

    /* IPC In VIDEO params */
    ipcInVideoPrm.inQueParams.prevLinkId = ipcOutVpssId;
    ipcInVideoPrm.inQueParams.prevLinkQueId = 0;
    ipcInVideoPrm.numOutQue = 1;
    ipcInVideoPrm.outQueParams[0].nextLink = gVencModuleContext.encId;
    ipcInVideoPrm.notifyNextLink = TRUE;
    ipcInVideoPrm.notifyPrevLink = TRUE;
    ipcInVideoPrm.noNotifyMode = FALSE;

    /* Video Encoder Link params */
    MULTICH_INIT_STRUCT(EncLink_CreateParams, encPrm);
    {
        EncLink_ChCreateParams *pLinkChPrm;
        EncLink_ChDynamicParams *pLinkDynPrm;
        VENC_CHN_DYNAMIC_PARAM_S *pDynPrm;
        VENC_CHN_PARAMS_S *pChPrm;

        for (i = 0; i < VENC_PRIMARY_CHANNELS; i++)
        {
            pLinkChPrm  = &encPrm.chCreateParams[i];
            pLinkDynPrm = &pLinkChPrm->defaultDynamicParams;

            pChPrm      = &gVencModuleContext.vencConfig.encChannelParams[i];
            pDynPrm     = &pChPrm->dynamicParam;

            switch(gUI_mcfw_config.demoCfg.codec_combo)
            {
            case 0:
                pLinkChPrm->format = IVIDEO_H264HP;
                break; //"SINGLE_H264"
            case 1:
                pLinkChPrm->format = IVIDEO_MPEG4SP;
                break; //"SINGLE_MPEG4"
            case 2:
                pLinkChPrm->format = IVIDEO_MJPEG;
                break; //"SINGLE_JPEG"
            case 3:
                pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_MJPEG;
                break; //"H264_JPEG"
            case 4:
                pLinkChPrm->format = (i == 0) ? IVIDEO_MPEG4SP : IVIDEO_MJPEG;
                break; //"MPEG4_JPEG"
            case 5:
                pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_H264HP;
                break; //"DUAL_H264"
            case 6:
                pLinkChPrm->format = (i == 0) ? IVIDEO_MPEG4SP : IVIDEO_MPEG4SP;
                break; //"DUAL_MPEG4"
            case 7:
                pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_MPEG4SP;
                break;  //"H264_MPEG4"
            case 8:
                pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_H264HP;
                break;  //"TRIPLE_H264"
            case 9:
                pLinkChPrm->format = (i == 0) ? IVIDEO_MPEG4SP : IVIDEO_MPEG4SP;
                break; //"TRIPLE_MPEG4"
            default:
                pLinkChPrm->format = IVIDEO_H264HP;
            }

            pLinkChPrm->profile                 = gVencModuleContext.vencConfig.h264Profile[i];
            pLinkChPrm->dataLayout              = IVIDEO_PROGRESSIVE;
            pLinkChPrm->fieldMergeEncodeEnable  = FALSE;
            pLinkChPrm->enableAnalyticinfo      = pChPrm->enableAnalyticinfo;
            pLinkChPrm->maxBitRate              = pChPrm->maxBitRate;
            pLinkChPrm->encodingPreset          = pChPrm->encodingPreset;
            pLinkChPrm->rateControlPreset       = IVIDEO_USER_DEFINED; //pChPrm->rcType;
            pLinkChPrm->enableHighSpeed         = FALSE;
            pLinkChPrm->enableWaterMarking      = pChPrm->enableWaterMarking;
            pLinkChPrm->StreamPreset            = gUI_mcfw_config.StreamPreset[i];

            pLinkDynPrm->intraFrameInterval     = pDynPrm->intraFrameInterval;
            pLinkDynPrm->targetBitRate          = pDynPrm->targetBitRate;
            pLinkDynPrm->interFrameInterval     = 1;
            pLinkDynPrm->mvAccuracy             = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
            pLinkDynPrm->inputFrameRate         = pDynPrm->inputFrameRate;
            pLinkDynPrm->rcAlg                  = pDynPrm->rcAlg;
            pLinkDynPrm->qpMin                  = pDynPrm->qpMin;
            pLinkDynPrm->qpMax                  = pDynPrm->qpMax;
            pLinkDynPrm->qpInit                 = pDynPrm->qpInit;
            pLinkDynPrm->vbrDuration            = pDynPrm->vbrDuration;
            pLinkDynPrm->vbrSensitivity         = pDynPrm->vbrSensitivity;

            encPrm.numBufPerCh[i] = 4;
            gVencModuleContext.encFormat[i] = pLinkChPrm->format;
        }
    }

    /* Video Encoder Framerate */
#ifdef IMGS_OMNIVISION_OV10630
    encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;  // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
#elif defined IMGS_SONY_IMX104
    encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;  // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
#elif defined IMGS_MICRON_MT9M034
    encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;  //
#else
    encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 60;  // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
#endif
    encPrm.chCreateParams[1].defaultDynamicParams.inputFrameRate = 30;  // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;

    encPrm.vsEnable = gUI_mcfw_config.vsEnable;

    if(gUI_mcfw_config.vaUseCase == TRUE)
    {
        encPrm.isVaUseCase = 1;
    }
    else
    {
        encPrm.isVaUseCase = 0;
    }

    for (i = VENC_PRIMARY_CHANNELS; i < (VENC_CHN_MAX - 1); i++)
    {
        encPrm.chCreateParams[i].format = IVIDEO_MJPEG;
        encPrm.chCreateParams[i].profile = 0;
        encPrm.chCreateParams[i].dataLayout = IVIDEO_PROGRESSIVE;
        encPrm.chCreateParams[i].fieldMergeEncodeEnable = FALSE;
        encPrm.chCreateParams[i].defaultDynamicParams.intraFrameInterval = 0;
        encPrm.chCreateParams[i].encodingPreset = 0;
        encPrm.chCreateParams[i].enableAnalyticinfo = 0;
        encPrm.chCreateParams[i].enableWaterMarking = 0;
        encPrm.chCreateParams[i].defaultDynamicParams.inputFrameRate = 60;
        encPrm.chCreateParams[i].rateControlPreset = 0;
        encPrm.chCreateParams[i].defaultDynamicParams.targetBitRate =
            100 * 1000;
        encPrm.chCreateParams[i].defaultDynamicParams.interFrameInterval = 0;
        encPrm.chCreateParams[i].defaultDynamicParams.mvAccuracy = 0;
    }
    encPrm.inQueParams.prevLinkId = ipcInVideoId;
    encPrm.inQueParams.prevLinkQueId = 0;
    encPrm.outQueParams.nextLink = gVencModuleContext.ipcBitsOutRTOSId;

    /* IPC Bits Out VIDEO Link params */
    ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkId =
        gVencModuleContext.encId;
    ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcBitsOutVideoPrm.baseCreateParams.numOutQue = 1;
    ipcBitsOutVideoPrm.baseCreateParams.outQueParams[0].nextLink =
        gVencModuleContext.ipcBitsInHLOSId;
    MultiCh_ipcBitsInitCreateParams_BitsOutRTOS(&ipcBitsOutVideoPrm, TRUE);

    /* IPC Bits In HOST Link params */
    ipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkId =
        gVencModuleContext.ipcBitsOutRTOSId;
    ipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkQueId = 0;
    MultiCh_ipcBitsInitCreateParams_BitsInHLOS(&ipcBitsInHostPrm0);

    /* Links Creation */
    /* Camera Link */
    System_linkCreate(gVcamModuleContext.cameraId, &cameraPrm,
                      sizeof(cameraPrm));
    System_linkControl(gVcamModuleContext.cameraId,
                       CAMERA_LINK_CMD_DETECT_VIDEO, NULL, 0, TRUE);

    if(gUI_mcfw_config.glbceEnable)
    {
#ifndef WDR_ON
        System_linkCreate(glbceSupportId, &glbceSupportPrm, sizeof(glbceSupportPrm));
#else
        System_linkCreate(wdrSupportId, &wdrSupportPrm, sizeof(wdrSupportPrm));
#endif
        /* glbce link create */
#ifdef YUV_M2M_DRV_TEST
#else
#ifndef WDR_ON
        System_linkCreate(glbceId, &glbcePrm, sizeof(glbcePrm));
#else
        System_linkCreate(wdrId, &wdrPrm, sizeof(wdrPrm));
#endif
#endif
        /* cam pp link create */
        System_linkCreate(ispId, &ispPrm, sizeof(ispPrm));
        gIsGlbceInitDone = 1;
    }
    else
    {
        gIsGlbceInitDone = 0;
    }

    if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        /* NSF Link */
        System_linkCreate(gVcamModuleContext.nsfId, &nsfPrm, sizeof(nsfPrm));
    else
        /* Vnf Link */
        System_linkCreate(gVcamModuleContext.vnfId, &vnfPrm, sizeof(vnfPrm));

    /* Dup link */
    System_linkCreate(dupId[MJPEG_DUP_LINK_IDX], &dupPrm[MJPEG_DUP_LINK_IDX],
                      sizeof(dupPrm[MJPEG_DUP_LINK_IDX]));

    /* Dup Link for Scaler */
    System_linkCreate(dupId[SCALER_DUP_IDX], &dupPrm[SCALER_DUP_IDX],
                      sizeof(dupPrm[SCALER_DUP_IDX]));

    /* Merge Link */
    System_linkCreate(mergeId[CAM_STREAM_MERGE_IDX],
                      &mergePrm[CAM_STREAM_MERGE_IDX],
                      sizeof(mergePrm[CAM_STREAM_MERGE_IDX]));

    /* SWOSD Link */
    System_linkCreate(gVsysModuleContext.swOsdId, &swosdPrm, sizeof(swosdPrm));

    /* Dup link for display */
    System_linkCreate(dupId[DIS_DUP_IDX], &dupPrm[DIS_DUP_IDX],
                      sizeof(dupPrm[DIS_DUP_IDX]));

    /* Scaler Link */
    System_linkCreate(gVcamModuleContext.sclrId[0], &sclrPrm, sizeof(sclrPrm));

    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
    {
        /* Dup link for VA */
        System_linkCreate(dupId[VA_DUP_IDX], &dupPrm[VA_DUP_IDX], sizeof(dupPrm[VA_DUP_IDX]));

#ifdef VA_ON_DSP
        /* IPC Frames links */
        System_linkCreate(ipcFramesOutVpssId, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));
        System_linkCreate(ipcFramesInDspId, &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));
#endif

        /* VA link */
        System_linkCreate(gVsysModuleContext.vaId, &vaPrm, sizeof(vaPrm));


    }

    ///////////////////////////////////////////////////////////////////////
#if ADD_MY_ALG


    System_linkCreate(alg_ipcFramesOutVpssId, &alg_ipcFramesOutVpssPrm, sizeof(alg_ipcFramesOutVpssPrm));
    System_linkCreate(alg_ipcFramesInDspId, &alg_ipcFramesInDspPrm, sizeof(alg_ipcFramesInDspPrm));


    System_linkCreate(dspAlgId, &dspAlgPrm, sizeof(dspAlgPrm));
#endif
//////////////////////////////////////////////////////////////////////

    /* FD Link */
    System_linkCreate(gVsysModuleContext.fdId, &fdPrm, sizeof(fdPrm));

    /* IPC Links */
    System_linkCreate(ipcOutVpssId, &ipcOutVpssPrm, sizeof(ipcOutVpssPrm));
    System_linkCreate(ipcInVideoId, &ipcInVideoPrm, sizeof(ipcInVideoPrm));

    /* Video Encoder Link */
    System_linkCreate(gVencModuleContext.encId, &encPrm, sizeof(encPrm));

    /* VSTAB link */
    System_linkCreate(vstabId, &vstabPrm, sizeof(vstabPrm));

    /* IPC Bits Links */
    System_linkCreate(gVencModuleContext.ipcBitsOutRTOSId, &ipcBitsOutVideoPrm,
                      sizeof(ipcBitsOutVideoPrm));
    System_linkCreate(gVencModuleContext.ipcBitsInHLOSId, &ipcBitsInHostPrm0,
                      sizeof(ipcBitsInHostPrm0));

    /* display link */
    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_HDMI], &displayPrm,
                      sizeof(displayPrm));

    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm_SD,
                      sizeof(displayPrm_SD));

    OSA_printf("USECASE SETUP DONE\n");
}

/* ===================================================================
 *  @func     MultiCh_deleteTriStreamFullFtr
 *
 *  @desc     Function does the following
 *
 *  @modif    This function modifies the following structures
 *
 *  @inputs   This function takes the following inputs
 *            <argument name>
 *            Description of usage
 *            <argument name>
 *            Description of usage
 *
 *  @outputs  <argument name>
 *            Description of usage
 *
 *  @return   Return value of this function if any
 *  ==================================================================
 */
Void MultiCh_deleteTriStreamFullFtr()
{
    UInt32 ispId;
    UInt32 glbceId;
    UInt32 mergeId[NUM_MERGE_LINK];
    UInt32 ipcOutVpssId;
    UInt32 ipcInVideoId;
    UInt32 ipcFramesOutVpssId;
    UInt32 ipcFramesInDspId;
    UInt32 dupId[NUM_DUP_LINK];
    UInt32 vstabId;
    UInt32 glbceSupportId;
#ifdef WDR_ON
    UInt32 wdrId;
    UInt32 wdrSupportId;
#endif

////////////////////////////////////////////////
#if ADD_MY_ALG
    UInt32 dspAlgId;

    UInt32 alg_ipcFramesOutVpssId;
    UInt32 alg_ipcFramesInDspId;
#endif
///////////////////////////////////////////////


    mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
    dupId[DIS_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_0;
    dupId[MJPEG_DUP_LINK_IDX] = SYSTEM_VPSS_LINK_ID_DUP_1;
    dupId[SCALER_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_2;
    dupId[VA_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_3;
    gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
    gVsysModuleContext.fdId = SYSTEM_LINK_ID_FD;
    gVsysModuleContext.swOsdId = SYSTEM_LINK_ID_SWOSD_0;
    ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
    ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
    ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
    ipcFramesInDspId   = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
    ispId = SYSTEM_LINK_ID_ISP_0;
    glbceId = SYSTEM_LINK_ID_GLBCE;
    vstabId = SYSTEM_LINK_ID_VSTAB_0;
    glbceSupportId = SYSTEM_LINK_ID_GLBCE_SUPPORT_0;

#ifdef WDR_ON
    wdrId = SYSTEM_LINK_ID_WDR;
    wdrSupportId = SYSTEM_LINK_ID_WDR_SUPPORT;
#endif



////////////////////my link/////////////////////////////////////////////////
#if ADD_MY_ALG

    dspAlgId = SYSTEM_LINK_ID_ALG_0;
    alg_ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_1;
    alg_ipcFramesInDspId   = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_1;
#endif
///////////////////////////////////////////////////////////////////////

    /* Links Deletion in reverse order from sink to source */

    /* display link */
    System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_HDMI]);

    System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_SD]);

    /* IPC Bits Links */
    System_linkDelete(gVencModuleContext.ipcBitsOutRTOSId);
    System_linkDelete(gVencModuleContext.ipcBitsInHLOSId);

    /* VSTAB Link */
    System_linkDelete(vstabId);

    /* Video Encoder Link */
    System_linkDelete(gVencModuleContext.encId);

    /* IPC Links */
    System_linkDelete(ipcOutVpssId);
    System_linkDelete(ipcInVideoId);

    /* FD Link */
    System_linkDelete(gVsysModuleContext.fdId);

    if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
    {
        /* VA link */
        System_linkDelete(gVsysModuleContext.vaId);

#ifdef VA_ON_DSP
        /* IPC Frames Links */
        System_linkDelete(ipcFramesOutVpssId);
        System_linkDelete(ipcFramesInDspId);
#endif

        /* Dup for VA link */
        System_linkDelete(dupId[VA_DUP_IDX]);
    }


    ////////////////////my link/////////////////////////////////////////////////
#if ADD_MY_ALG
    System_linkDelete(alg_ipcFramesOutVpssId);
    System_linkDelete(alg_ipcFramesInDspId);
    System_linkDelete(dspAlgId);
#endif
///////////////////////////////////////////////////////////////////////

    /* Scaler Link */
    System_linkDelete(gVcamModuleContext.sclrId[0]);

    /* dup link for display */
    System_linkDelete(dupId[DIS_DUP_IDX]);

    /* SWOSD Link */
    System_linkDelete(gVsysModuleContext.swOsdId);

    /* Merge Link */
    System_linkDelete(mergeId[CAM_STREAM_MERGE_IDX]);

    /* Dup link for Scaler */
    System_linkDelete(dupId[SCALER_DUP_IDX]);

    /* Dup Link */
    System_linkDelete(dupId[MJPEG_DUP_LINK_IDX]);

    if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
        /* NSF Link */
        System_linkDelete(gVcamModuleContext.nsfId);
    else
        /* VNF Link */
        System_linkDelete(gVcamModuleContext.vnfId);

    if(gIsGlbceInitDone)
    {
        System_linkDelete(ispId);
#ifdef YUV_M2M_DRV_TEST
#else
#ifndef WDR_ON
        System_linkDelete(glbceId);
        System_linkDelete(glbceSupportId);
#else
        System_linkDelete(wdrId);
        System_linkDelete(wdrSupportId);
#endif
#endif
        gIsGlbceInitDone = 0;
    }

    /* Camera Link */
    System_linkDelete(gVcamModuleContext.cameraId);

    /* Print the HWI, SWI and all tasks load */
    /* Reset the accumulated timer ticks */
    MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);

    OSA_printf("USECASE TEARDOWN DONE\n");
}
//////////////////////////
日志如下:
********** SMART ANALYTICS USECASE ********

 [host] ********* Entered Smart Analytics usecase - H264 1080p @60fps + H264 D1 @30fps + MJPEG 1080p @5fps ********


 [host]  133: MCFW  : CPU Revision [ES2.1] !!!

 [host]  134: MCFW  : Detected [UNKNOWN] Board !!!

 [host]  134: MCFW  : Base Board Revision [REV A] !!!
 [m3vpss ] VPS_DCTRL_INST_0
 [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_DVO2
 [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_HDMI
 [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_SD
 [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_CLK_SRC VPS_DC_VENC_HDMI | VPS_DC_VENC_DVO2
 [m3vpss ]  11795: CAMERA: Create in progress !!!
 [m3vpss ]  11795: CAMERA: VIP0 PortA camera mode is [ 8-bit, Non-mux Embedded Sync] !!!
 [m3vpss ]  11806: CAMERA: VIP 0: VID DEC 268436736 (0x36): bebebebe:bebebebe:8ebd60d8, AUD_STATUS -1094795586
 [m3vpss ] Stream ID 0: chId = 0 VpsUtils_queCreate.
 [m3vpss ] Stream ID 1: chId = 0 VpsUtils_queCreate.
 [m3vpss ]  12014: CAMERA: Create Done !!!
 [m3vpss ]  12102: CAMERA: Detect video in progress !!!
 [m3vpss ]  12102: CAMERA: Detect video Done !!!
 [m3vpss ]  12102: VNF:
 [m3vpss ] Create in progress ... !!!
 [m3vpss ]  12103: VNF:
 [m3vpss ] Input Channel CH0 of 1952 x 1112, pitch = (1984, 1984) [0,0][PROGRESSIVE] [7] ...
 [m3vpss ]  12354: VNF:
 [m3vpss ] Create ... DONE !!!
 [m3vpss ]  12451: DUP   : Create Done !!!
 [m3vpss ]  12456: DUP   : Create Done !!!
 [m3vpss ]  12458: MERGE   : Create Done !!!
 [m3vpss ] DCC server task running
 [m3vpss ] {SWOSD} edma3Handle->tccVal = 36
 [m3vpss ] {SWOSD} edma3Handle->chId   = 36
 [m3vpss ] {SWOSD} edma3Handle->tccVal = 37
 [m3vpss ] {SWOSD} edma3Handle->chId   = 37
 [m3vpss ] {SWOSD} edma3Handle->tccVal = 38
 [m3vpss ] {SWOSD} edma3Handle->chId   = 38
 [m3vpss ]  12432: SWOSD   : Create Done !!!
 [m3vpss ]  12528: DUP   : Create Done !!!
 [m3vpss ]  12529: SCLR: Create in progress !!!
 [m3vpss ]  12534: SCLR    : Loading Up-scaling Co-effs ...
 [m3vpss ]  12534: SCLR    : Co-effs Loading ... DONE !!!
 [c6xdsp ]  12363: IPC_FRAMES_IN   : Create in progress !!!
 [c6xdsp ]  12363: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_23] ...
 [m3vpss ] SCLR:HEAPID:0        USED:64
 [c6xdsp ]  12363: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_23] ...
 [m3vpss ] SCLR:HEAPID:1        USED:5952
 [c6xdsp ]  12364: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 [m3vpss ]  12535: SCLR: Create Done !!!
 [m3vpss ]  12540: DUP   : Create Done !!!
 [m3vpss ]  12541: IPC_FRAMES_OUT   : Create in progress !!!
queue id:0
 [m3vpss ]  12544: IPC_FRAMES_OUT   : Create Done !!!
 [c6xdsp ] IPC_FRAMES_IN:HEAPID:0       USED:304
 [m3vpss ]  12554: IPC_FRAMES_OUT   : Create in progress !!!
 [c6xdsp ]  12366: IPC_FRAMES_IN   : Create Done !!!
 [c6xdsp ]  12370: VA   : Create Done !!!
 [c6xdsp ]  -----------------dsp---82--------------------------------------------------------------
 [m3vpss ]  12557: IPC_FRAMES_OUT   : Create Done !!!
 [c6xdsp ]  -----------------dsp---82--------------------------------------------------------------
 [c6xdsp ]  -----------------dsp---82--------------------------------------------------------------
 [m3video]  12583: IPC_IN_M3   : Create in progress !!!
 [m3vpss ]  12489: FD   : Alg Create Done !!!
 [m3video]  12583: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_0] ...
 [m3vpss ]  12489: FD   : Create Done !!!
 [c6xdsp ]  12371: VA   : ALG Init Done !!!
 [m3video]  12583: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_0] ...
 [m3vpss ]  12581: IPC_OUT_M3   : Create in progress !!!
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: 9172967 bytes required for DMVAL instance.
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: 4128 bytes required for DMVAL output.
 [m3video]  12587: IPC_IN_M3   : Create Done !!!
 [m3vpss ]  12582: IPC_OUT_M3   : Create Done !!!
 [c6xdsp ]  12375: IPC_FRAMES_IN   : Create in progress !!!
 [m3video]  12587: ENCODE: Create in progress ... !!!
 [c6xdsp ]  12376: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_24] ...
 [c6xdsp ]  12376: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_24] ...
 [c6xdsp ] IPC_FRAMES_IN:HEAPID:0       USED:304
 [c6xdsp ]  12379: IPC_FRAMES_IN   : Create Done !!!
 [c6xdsp ]  12379: ALG : Create in progress !!!
 [c6xdsp ] ALGLINK:HEAPID:0     USED:2616
 [c6xdsp ] ALGLINK:HEAPID:1     USED:6024
 [c6xdsp ]  12392: ALG : Create Done !!!
 [c6xdsp ]  12433: VA   : MEMALLOC 9172967 bytes for DMVAL memory at addr 0x89081000!!!
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: Library framework initialized for the 1st time.
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: Assigned memory to Camera Tamper Detection application.
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: Completed memory assignments to library applications.
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: Library framework reset.
 [c6xdsp ] DMVAL:
 [c6xdsp ] > DMVAL: Initialized library applications.
 [c6xdsp ]  12446: VA   : ALG Create Done !!!
 [c6xdsp ]  -----------------dsp---85--------------------------------------------------------------
 [c6xdsp ]  -----------------dsp---85--------------------------------------------------------------
 [c6xdsp ]  -----------------dsp---85--------------------------------------------------------------
 [m3video]  12651: ENCODE: Creating CH0 of 1920 x 1080, pitch = (1952, 1952) [PROGRESSIVE] [NON-TILED  ], bitrate = 8000 Kbps ...
 [m3video] ENCLINK_H264:HEAPID:0        USED:13808
 [m3video]  12757: ENCODE: Creating CH1 of 720 x 480, pitch = (720, 720) [PROGRESSIVE] [NON-TILED  ], bitrate = 8000 Kbps ...

 [host] IpcBitsInLink_tskMain:Entered
 [host]  1124: IPC_BITS_IN   : Create in progress !!!

 [host]  1124: IPC_BITS_IN   : ListMPOpen start !!!

 [host]  1124: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_28] ...

 [host]  1126: SYSTEM: Opening ListMP [VIDEO-M3_IPC_IN_28] ...

 [host]  1128: IPC_BITS_IN   : ListMPOpen done !!!

 [host]  1129: IPC_BITS_IN   : System_linkGetInfo done !!!

 [host]  1129: IPC_BITS_IN   : Create Done !!!
 [m3vpss ]  12879: DISPLAY: Create in progress !!!
 [m3video] ENCLINK_H264:HEAPID:0        USED:11912
 [m3vpss ]  12880: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
 [m3video]  12866: ENCODE: Creating CH2 of 1920 x 1080, pitch = (1952, 1952) [PROGRESSIVE] [NON-TILED  ], bitrate = 100 Kbps ...
 [m3vpss ]  12885: Assertion @ Line: 1152 in links_m3vpss/display/displayLink_drv.c: pPrm->inQueParams[pPrm->activeQueue].prevLinkQueId < pObj->inTskInfo[pPrm->activeQueue].numQue : failed !!!
 [m3video] ENCLINK_JPEG:HEAPID:0        USED:4432
 [m3video]  12867: ENCODE: All CH Create ... DONE !!!
 [m3video] ENCLINK:HEAPID:0     USED:30472
 [m3video]  12870: ENCODE: Create ... DONE !!!
 [m3video]  12770: VSTAB   : Alg Create Done !!!
 [m3video]  12770: VSTAB   : Create Done !!!
 [m3video]  12871: IPC_BITS_OUT   : Create in progress !!!
 [m3video]  12873: IPC_BITS_OUT   : Create Done !!!
ApproDrvInit: 7
queue id:131076
TimeOut occure in boot_proc.
Program exit.
TimeOut occure in boot_proc.
Program exit.

x 出现错误。请重试或与管理员联系。