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.

SwmsLINK CreateTime Fault



Hi, TIers

I'm using DM8168 with RDK 3.0.

The diagram of my usecase is depicted in file

4111.Chain_0.05.03.1_HotCh_withRemoteRecv_try.pdf

my usecase file:

/************************************************************************************
*   Copyright(C), 20130411, TsingTao EastSoft										*
*   FileName:		Chain_ES_ITC_0_02_00_1.c										*
*   Author:			MA Dong-Mei, YU Ri-Ping											*
*   Version:		0.02.00.1														*
*   Date:			20130411														*
*   Description:	Main LINK Chain													*
*   Function List:																	*
*   History:																		*
************************************************************************************/

#include <demos/link_api_demos/common/chains_common.h>
#include <demos/link_api_demos/common/Channels.h>
#include <demos/link_api_demos/common/swms.h>
#include <demos/link_api_demos/common/log.h>
#include <demos/link_api_demos/common/ipcBits.h>
#include <demos/link_api_demos/common/chains_ipcFrames.h>
#include <demos/link_api_demos/interface/ControllingInterface.h>
#include <demos/link_api_demos/common/esvoiceStimulate.h>
#include <demos/link_api_demos/interface/set_osd.h>
#include <demos/link_api_demos/common/esvoiceStimulate.h>
#include <demos/link_api_demos/vpss_chains/demo_text.h>
#include <mcfw/interfaces/link_api/system_common.h>
#include <demos/link_api_demos/common/system_param.h>
#include <demos/link_api_demos/common/ipcFrame.h>
#include <osa.h>

#include <link_api/system.h>
#include <link_api/captureLink.h>
#include <link_api/deiLink.h>
#include <link_api/nsfLink.h>
#include <link_api/algLink.h>
#include <link_api/displayLink.h>
#include <link_api/nullLink.h>
#include <link_api/grpxLink.h>
#include <link_api/dupLink.h>
#include <link_api/swMsLink.h>
#include <link_api/selectLink.h>
#include <link_api/sclrLink.h>
#include <link_api/mergeLink.h>
#include <link_api/nullSrcLink.h>
#include <link_api/ipcLink.h>
#include <link_api/systemLink_m3vpss.h>
#include <link_api/systemLink_m3video.h>
#include <link_api/encLink.h>
#include <link_api/decLink.h>

#include <ti/xdais/xdas.h>
#include <ti/xdais/dm/xdm.h>
#include <ti/xdais/dm/ivideo.h>
#include <ih264enc.h>
#include <ih264vdec.h>

static OSD_WinTextInfoM font = {
      	        SYSTEM_DF_YUV422I_YUYV,
      	        {100,32},
      	        FONTSIZE48_48_24,
      	        YELLOW,
      	        TRANSPARENTBACKGROUND,
      	        720
      	    };

static OSD_WinTextInfoM Ip_font = {
      	        SYSTEM_DF_YUV422I_YUYV,
      	        {100,128},
      	        FONTSIZE48_48_24,
      	        WHITE,
      	        TRANSPARENTBACKGROUND,
      	        720
      	    };

  Ptr               osdWinSrAddr[ALG_LINK_OSD_MAX_CH][CHAINS_OSD_NUM_WINDOWS];
  Ptr               osdWinBuPtr[ALG_LINK_OSD_MAX_CH][CHAINS_OSD_NUM_WINDOWS];
  Ptr               osdWinSrAddr1[ALG_LINK_OSD_MAX_CH][CHAINS_OSD_NUM_WINDOWS];
  Ptr               osdWinBuPtr1[ALG_LINK_OSD_MAX_CH][CHAINS_OSD_NUM_WINDOWS];

  static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl =
  {
      .isPopulated = 1,
      .ivaMap[0] =
      {
          .EncNumCh  = 1,
          .EncChList = {4},
          .DecNumCh  = 1,
          .DecChList = {0},
      },
      .ivaMap[1] =
      {
          .EncNumCh  = 2,
          .EncChList = {0, 2},
          .DecNumCh  = 0,
          .DecChList = {0},
      },
      .ivaMap[2] =
      {
          .EncNumCh  = 2,
          .EncChList = {1, 3},
          .DecNumCh  = 0,
          .DecChList = {0},
      },
  };

IpcBitsOutLinkHLOS_CreateParams  	esipcBitsOutHostPrm0;
IpcBitsInLinkRTOS_CreateParams   	esipcBitsInVideoPrm0;
DecLink_CreateParams             	esdecPrm0;
IpcLink_CreateParams              	esipcOutVideoPrm0;
IpcLink_CreateParams              	esipcInVpssPrm0;
SwMsLink_CreateParams             	esswMsPrm3;

IpcFramesOutLinkHLOS_CreateParams    esipcFramesOutHostPrm0;
IpcFramesInLinkRTOS_CreateParams     esipcFramesInVpssPrm0;

CaptureLink_CreateParams  		  	escapturePrm;
CaptureLink_VipInstParams 		  	* espCaptureInstPrm;
CaptureLink_OutParams     		  	* espCaptureOutPrm;
MergeLink_CreateParams    		  	esmergePrm0;

IpcFramesOutLinkRTOS_CreateParams   esipcFramesOutVpssPrm0;
IpcFramesInLinkRTOS_CreateParams    esipcFramesInDspPrm0;
AlgLink_CreateParams                esosdPrm0;

DupLink_CreateParams			  	esdupPrm2;
SwMsLink_CreateParams             	esswMsPrm[HD_DISPLAY_NUMBER];

IpcFramesOutLinkRTOS_CreateParams   esipcFramesOutVpssPrm1;
IpcFramesInLinkRTOS_CreateParams    esipcFramesInDspPrm1;
AlgLink_CreateParams                esosdPrm1;

DupLink_CreateParams              	esdupPrm[HD_DISPLAY_NUMBER];
DisplayLink_CreateParams          	esdisplayPrm[HD_DISPLAY_NUMBER];
MergeLink_CreateParams				esmergePrm1;
DupLink_CreateParams				esdupPrm3;
SelectLink_CreateParams				esselPrm0;
SelectLink_CreateParams				esselPrm1;
SclrLink_CreateParams	            essclrPrm0;
SelectLink_CreateParams				esselPrm3;
MergeLink_CreateParams				esmergePrm2;
SelectLink_CreateParams				esselPrm2;
SwMsLink_CreateParams             	esswMsPrm2;
DisplayLink_CreateParams          	esdisplayPrm2;
NsfLink_CreateParams        		esnsfPrm0;
IpcLink_CreateParams                esipcOutVpssPrm0;
IpcLink_CreateParams                esipcInVideoPrm0;
EncLink_CreateParams                esencPrm0;
IpcBitsOutLinkRTOS_CreateParams     esipcBitsOutVideoPrm0;
IpcBitsInLinkHLOS_CreateParams      esipcBitsInHostPrm0;

SwMsLink_CreateParams * swMsPrmList[2] = { esswMsPrm, esswMsPrm + 1 };

//////////////////////////////////////////////////////////////////////////////////////////////////////

UInt32 esipcBitsOutHostId0;
UInt32 esipcBitsInVideoId0;
UInt32 esdecId0;
UInt32 esipcOutVideoId0;
UInt32 esipcInVpssId0;
UInt32 esswMsId3;

UInt32 esipcFramesOutHostId0;
UInt32 esipcFramesInVpssId0;

UInt32 escaptureId, esvipInstId;
UInt32 esmergeId0;
UInt32 esipcFramesOutVpssId0, esipcFramesInDspId0, esosdId0;
UInt32 esdupId2;
UInt32 esswMsId[HD_DISPLAY_NUMBER];
UInt32 esipcFramesOutVpssId1, esipcFramesInDspId1, esosdId1;
UInt32 esdupId[HD_DISPLAY_NUMBER];
UInt32 esdisplayId[HD_DISPLAY_NUMBER];
UInt32 esmergeId1;
UInt32 esdupId3;
UInt32 esselId0;
UInt32 esselId1;
UInt32 essclrId0;
UInt32 esselId3;
UInt32 esmergeId2;
UInt32 esselId2;
UInt32 esswMsId2;
UInt32 esdisplayId2;
UInt32 esnsfId0;
UInt32 esipcOutVpssId0;
UInt32 esipcInVideoId0;
UInt32 esencId0;
UInt32 esipcBitsOutVideoId0;
UInt32 esipcBitsInHostId0;

//add by ningbo 20131205 begin
#include <demos/link_api_demos/interface/CI_xml.h>
OSD_DATETIME_PARAM osdDatetimeParam={1};
//add by ningbo 20131205 end

static void Demo_updateTime(int signo)
{
    static struct tm tmCur;
    time_t timeval;
    char osdStr[40];
    Int32 chId;
    AlgLink_OsdWindowPrm TimeWindowPrm;

    static int count =15;

    for(chId = 0; chId < 1 ;chId ++)
    {
        switch(signo)
        {
            case SIGALRM:
            	if (count >= 0)
            	{
            		count --;
            	}
                if (count == 0)
                {
                	AlgLink_OsdChWinParams *chWinPrm  =		&esosdPrm1.osdChCreateParams[chId].chDefaultParams;
                	chWinPrm->winPrm[4].globalAlpha            = FALSE;
                	System_linkControl(esosdId1, ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM, chWinPrm, sizeof(AlgLink_OsdChWinParams), TRUE);
                }

                time(&timeval);
                localtime_r(&timeval, &tmCur);
                sprintf(osdStr,"%04d-%02d-%02d %02d:%02d:%02d",
                		tmCur.tm_year+1900, tmCur.tm_mon+1, tmCur.tm_mday, tmCur.tm_hour, tmCur.tm_min, tmCur.tm_sec);
                osdDrawText(osdStr,font,(char*)osdWinBuPtr1[chId][3],&TimeWindowPrm,0);

                //if (voiceStimulateThr.hndl)
                if( uart_commu_info.voiceStimulate_flag == TRUE )
                {
                	if (vsResetDownCounter > 0)
                	{
                		vsResetDownCounter --;

                		if (0 == vsResetDownCounter)
                		{
                			UInt8 win;
                			for (win = 0; win < GetLayoutWinNUM(layoutidAtStartup); win ++)
                			{
                				SwMsMapChtoWin(esswMsId[0], win, win2chlistAtStartup[win], &esswMsPrm[0]);
                			}
                		}
                	}
                }

                if ((osdSupInfo.bOnDisplay) && (osdSupInfo.lDurationTimeSec > 0))
                {
                	osdSupInfo.lDurationTimeSec --;
                	if (0 == osdSupInfo.lDurationTimeSec)
                	{
                		AlgLink_OsdChWinParams * chWinPrm  = &esosdPrm1.osdChCreateParams[0].chDefaultParams;

                		int i;
                		for (i = 0; i < 3; i ++)
                		{
                			chWinPrm->winPrm[i].globalAlpha		=	FALSE;
                			System_linkControl(esosdId1, ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM,
                					chWinPrm, sizeof(AlgLink_OsdChWinParams), TRUE);
                		}

                		osdSupInfo.bOnDisplay			=	FALSE;
                		osdSupInfo.lDurationTimeSec		=	-1;
                	}
                }

                break;
            default:
                break;
        }
    }
}

Void Chain_ES_ITC_0_02_00_1(P_CHANNEL_DISCRIPTOR pChannels)
{
    UInt32        chId,winId;
    unsigned char test[MAX_INPUT_STR_SIZE];
    OSD_WinTextInfoM font2 = {
          	        SYSTEM_DF_YUV422I_YUYV,
          	        {400,96},
          	        FONTSIZE32_32_16,
          	        YELLOW,
          	        TRANSPARENTBACKGROUND,
          	        720
          	    };
    OSD_WinTextInfoM        dynamicFont,swmsFont;
	Position                OSDposition[4] =
	                        {
								{100,32},
		    					{1800,32},
		    					{100,600},
		    					{2000,600}
						    };

    unsigned int length;
    struct itimerval oneSec;

    UInt32 displayVector[LEN_DISPLAY_VECTOR];
    P_HCHANNEL_NODE pHChannelNode = NULL;
    P_HENCODER_NODE pHEncoderNode = NULL;
    GLOBE_CHANNEL_MATRIX gChMat;
    UInt32 i;
    Char   ch;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    CI_Start();
    IpcFramesInit();

    IPCBitsOutDataStructInit(&ipc_ctrl);
    IPCBitsOutCoreThreadsStart(&ipc_ctrl);

    IPCBitsInDataStructInit(&ipc_ctrl);
    IPCBitsEnvironmentInit(&ipc_ctrl);
    PeripheralProcessEncodedDataStart();
    IPCBitsInCoreCopyThreadsStart();
    uart_init(&uart_commu_info);
    voiceStimulateCreate(&uart_commu_info);
    UartVolumCreate(&uart_commu_info);

    PeripheralGetStreamsStart();
   // startAudioDecPlay(channels.hAudio);
    audio_createDecode(pChannels);


    CHAINS_INIT_STRUCT(IpcBitsOutLinkHLOS_CreateParams,esipcBitsOutHostPrm0);
    CHAINS_INIT_STRUCT(IpcBitsInLinkRTOS_CreateParams,esipcBitsInVideoPrm0);
    CHAINS_INIT_STRUCT(DecLink_CreateParams,esdecPrm0);
    CHAINS_INIT_STRUCT(IpcLink_CreateParams,esipcOutVideoPrm0);
    CHAINS_INIT_STRUCT(IpcLink_CreateParams,esipcInVpssPrm0);
    CHAINS_INIT_STRUCT(SwMsLink_CreateParams,esswMsPrm3);

    CHAINS_INIT_STRUCT(IpcFramesOutLinkHLOS_CreateParams,esipcFramesOutHostPrm0);
    CHAINS_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,esipcFramesInVpssPrm0);

    CaptureLink_CreateParams_Init(&escapturePrm);

    CHAINS_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,esipcFramesInDspPrm0);
    CHAINS_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,esipcFramesOutVpssPrm0);

    CHAINS_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,esipcFramesInDspPrm1);
    CHAINS_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,esipcFramesOutVpssPrm1);

    for (i=0; i<HD_DISPLAY_NUMBER; i++)
    {
        CHAINS_INIT_STRUCT(SwMsLink_CreateParams,esswMsPrm[i]);
        CHAINS_INIT_STRUCT(DisplayLink_CreateParams,esdisplayPrm[i]);
    }
    CHAINS_INIT_STRUCT(SelectLink_CreateParams,esselPrm0);
    CHAINS_INIT_STRUCT(SelectLink_CreateParams,esselPrm1);
    SclrLink_CreateParams_Init (&essclrPrm0);
    CHAINS_INIT_STRUCT(SelectLink_CreateParams,esselPrm3);
    CHAINS_INIT_STRUCT(SelectLink_CreateParams,esselPrm2);
    CHAINS_INIT_STRUCT(SwMsLink_CreateParams,esswMsPrm2);
    CHAINS_INIT_STRUCT(DisplayLink_CreateParams,esdisplayPrm2);
    CHAINS_INIT_STRUCT(NsfLink_CreateParams,esnsfPrm0);
    CHAINS_INIT_STRUCT(IpcLink_CreateParams,esipcOutVpssPrm0);
    CHAINS_INIT_STRUCT(IpcLink_CreateParams,esipcInVideoPrm0);
    CHAINS_INIT_STRUCT(EncLink_CreateParams,esencPrm0);
    CHAINS_INIT_STRUCT(IpcBitsOutLinkRTOS_CreateParams,esipcBitsOutVideoPrm0);
    CHAINS_INIT_STRUCT(IpcBitsInLinkHLOS_CreateParams,esipcBitsInHostPrm0);

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    esipcBitsOutHostId0   = SYSTEM_HOST_LINK_ID_IPC_BITS_OUT_0;
    esipcBitsInVideoId0   = SYSTEM_VIDEO_LINK_ID_IPC_BITS_IN_0;
    esdecId0              = SYSTEM_LINK_ID_VDEC_0;
    esipcOutVideoId0      = SYSTEM_VIDEO_LINK_ID_IPC_OUT_M3_0;
    esipcInVpssId0        = SYSTEM_VPSS_LINK_ID_IPC_IN_M3_0;
    esswMsId3			  =	SYSTEM_LINK_ID_SW_MS_MULTI_INST_3;

    esipcFramesOutHostId0  = SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0;
    esipcFramesInVpssId0   = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_IN_0;

    escaptureId     		= SYSTEM_LINK_ID_CAPTURE;
    esmergeId0      		= SYSTEM_VPSS_LINK_ID_MERGE_0;

    esipcFramesOutVpssId0   = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
    esipcFramesInDspId0     = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
    esosdId0                = SYSTEM_LINK_ID_ALG_0;

    esdupId2				= SYSTEM_VPSS_LINK_ID_DUP_2;
    esswMsId[0]             = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
    esswMsId[1]             = SYSTEM_LINK_ID_SW_MS_MULTI_INST_1;

    esipcFramesOutVpssId1  = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_1;
    esipcFramesInDspId1    = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_1;
    esosdId1               = SYSTEM_LINK_ID_ALG_1;

    esdupId[0]      		= SYSTEM_VPSS_LINK_ID_DUP_0;
    esdupId[1]      		= SYSTEM_VPSS_LINK_ID_DUP_1;
    esdisplayId[0]          = SYSTEM_LINK_ID_DISPLAY_0;
    esdisplayId[1]          = SYSTEM_LINK_ID_DISPLAY_1;
    esmergeId1	  		    = SYSTEM_VPSS_LINK_ID_MERGE_1;
    esdupId3				= SYSTEM_VPSS_LINK_ID_DUP_3;
    esselId0                = SYSTEM_VPSS_LINK_ID_SELECT_0;
    esselId1                = SYSTEM_VPSS_LINK_ID_SELECT_1;
    essclrId0				= SYSTEM_LINK_ID_SCLR_INST_0;
    esselId3                = SYSTEM_VPSS_LINK_ID_SELECT_3;
    esmergeId2			    = SYSTEM_VPSS_LINK_ID_MERGE_2;
    esselId2                = SYSTEM_VPSS_LINK_ID_SELECT_2;
    esswMsId2				= SYSTEM_LINK_ID_SW_MS_MULTI_INST_2;
    esdisplayId2			= SYSTEM_LINK_ID_DISPLAY_2;
    esnsfId0         		= SYSTEM_LINK_ID_NSF_0;
    esipcOutVpssId0  		= SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
    esipcInVideoId0  		= SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
    esencId0         		= SYSTEM_LINK_ID_VENC_0;
    esipcBitsOutVideoId0   = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
    esipcBitsInHostId0     = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

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

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    GetDisplayVector(pChannels, displayVector);
    Chains_displayCtrlInit(displayVector);

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    System_LinkQueInfo queInfo;
    queInfo.numCh = GetStreamNum(pChannels);
    for (pHChannelNode = pChannels->hChannelList[CHANNEL_CLS_STREAM]->next, i = 0;
    		pHChannelNode && (i < GetStreamNum(pChannels));
    		pHChannelNode = pHChannelNode->next, i ++)
    {
        queInfo.chInfo[i].bufType           = SYSTEM_BUF_TYPE_VIDBITSTREAM;
        queInfo.chInfo[i].codingformat      = pHChannelNode->body.hChannel->entity.stream.format;
        queInfo.chInfo[i].height            = pHChannelNode->body.hChannel->entity.stream.height;
        queInfo.chInfo[i].width             = pHChannelNode->body.hChannel->entity.stream.width;
        queInfo.chInfo[i].memType           = SYSTEM_MT_TILEDMEM;
        queInfo.chInfo[i].dataFormat        = SYSTEM_DF_YUV420P;
        queInfo.chInfo[i].scanFormat        = Vsys_isStdInterlaced(pHChannelNode->body.hChannel->entity.stream.std) ?
                                              SYSTEM_SF_INTERLACED : SYSTEM_SF_PROGRESSIVE;
    }

    esipcBitsOutHostPrm0.baseCreateParams.numOutQue                    = 1;
    esipcBitsOutHostPrm0.baseCreateParams.numChPerOutQue[0]            = GetStreamNum(pChannels);
    esipcBitsOutHostPrm0.baseCreateParams.outQueParams[0].nextLink     = esipcBitsInVideoId0;
    esipcBitsOutHostPrm0.bufPoolPerCh                                  = FALSE;
    esipcBitsOutHostPrm0.numBufPerCh[0]                                = 16;
    IPCBitsOutHLOS_Params_Init(&esipcBitsOutHostPrm0, &queInfo);

    esipcBitsInVideoPrm0.baseCreateParams.inQueParams.prevLinkId       = esipcBitsOutHostId0;
    esipcBitsInVideoPrm0.baseCreateParams.inQueParams.prevLinkQueId    = 0;
    esipcBitsInVideoPrm0.baseCreateParams.numOutQue                    = 1;
    esipcBitsInVideoPrm0.baseCreateParams.numChPerOutQue[0]            = GetStreamNum(pChannels);
    esipcBitsInVideoPrm0.baseCreateParams.outQueParams[0].nextLink     = esdecId0;
    IPCBitsInRTOS_Params_Init(&esipcBitsInVideoPrm0);

    for (pHChannelNode = pChannels->hChannelList[CHANNEL_CLS_STREAM]->next, i = 0;
    		pHChannelNode && (i < GetStreamNum(pChannels));
    		pHChannelNode = pHChannelNode->next, i ++)
    {
        esdecPrm0.chCreateParams[i].format							   = pHChannelNode->body.hChannel->entity.stream.format;
        esdecPrm0.chCreateParams[i].profile                              = IH264VDEC_PROFILE_ANY;
        esdecPrm0.chCreateParams[i].targetMaxWidth                       = pHChannelNode->body.hChannel->entity.stream.width;
        esdecPrm0.chCreateParams[i].targetMaxHeight                      = pHChannelNode->body.hChannel->entity.stream.height;
        esdecPrm0.chCreateParams[i].fieldMergeDecodeEnable               = FALSE;
        esdecPrm0.chCreateParams[i].algCreateStatus                      = DEC_LINK_ALG_CREATE_STATUS_CREATE;
        esdecPrm0.chCreateParams[i].defaultDynamicParams.targetFrameRate = pHChannelNode->body.hChannel->entity.stream.frameRate;
        esdecPrm0.chCreateParams[i].defaultDynamicParams.targetBitRate   = pHChannelNode->body.hChannel->entity.stream.targetBitRate;
        esdecPrm0.chCreateParams[i].numBufPerCh                          = 16;
        esdecPrm0.chCreateParams[i].algCreateStatus	                  =	TRUE;
    }
    esdecPrm0.inQueParams.prevLinkId    = esipcBitsInVideoId0;
    esdecPrm0.inQueParams.prevLinkQueId = 0;
    esdecPrm0.outQueParams.nextLink     = esipcOutVideoId0;
    esdecPrm0.tilerEnable               = TRUE;

    esipcOutVideoPrm0.inQueParams.prevLinkId    = esdecId0;
    esipcOutVideoPrm0.inQueParams.prevLinkQueId = 0;
    esipcOutVideoPrm0.numOutQue                 = 1;
    esipcOutVideoPrm0.outQueParams[0].nextLink  = esipcInVpssId0;
    esipcOutVideoPrm0.notifyNextLink            = TRUE;
    esipcOutVideoPrm0.notifyPrevLink            = FALSE;
    esipcOutVideoPrm0.noNotifyMode              = FALSE;

    esipcInVpssPrm0.inQueParams.prevLinkId      = esipcOutVideoId0;
    esipcInVpssPrm0.inQueParams.prevLinkQueId   = 0;
    esipcInVpssPrm0.numOutQue                   = 1;
    esipcInVpssPrm0.outQueParams[0].nextLink    = esswMsId3;
    esipcInVpssPrm0.notifyNextLink              = TRUE;
    esipcInVpssPrm0.notifyPrevLink              = TRUE;
    esipcInVpssPrm0.noNotifyMode                = FALSE;

    ////////////////////////////////////////////////////////////////////////////////

    esswMsPrm3.numSwMsInst               = 1;
	esswMsPrm3.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI;
    esswMsPrm3.inQueParams.prevLinkId    = esipcInVpssId0;
    esswMsPrm3.inQueParams.prevLinkQueId = 0;
    esswMsPrm3.outQueParams.nextLink     = esmergeId0;
    esswMsPrm3.lineSkipMode              = FALSE;
    esswMsPrm3.enableLayoutGridDraw      = FALSE;
    esswMsPrm3.layoutPrm.outputFPS       = 60;
    esswMsPrm3.maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
    esswMsPrm3.maxOutRes                 = VSYS_STD_720P_60;
    esswMsPrm3.numOutBuf                 = 0;
  	SwMsSetLayoutParams(esswMsId3, SWMS_LAYOUT_PATTERN_1, &esswMsPrm3);

    ////////////////////////////////////////////////////////////////////////////////

    esipcFramesOutHostPrm0.baseCreateParams.inQueParams.prevLinkId         = SYSTEM_LINK_ID_INVALID;
    esipcFramesOutHostPrm0.baseCreateParams.inQueParams.prevLinkQueId      = 0;
    esipcFramesOutHostPrm0.baseCreateParams.numOutQue                      = 1;
    esipcFramesOutHostPrm0.baseCreateParams.numChPerOutQue[0]              = 1;
    esipcFramesOutHostPrm0.baseCreateParams.outQueParams[0].nextLink       = esipcFramesInVpssId0;
    esipcFramesOutHostPrm0.baseCreateParams.inputFrameRate                 = 60;	////****~~~~
    esipcFramesOutHostPrm0.baseCreateParams.outputFrameRate                = 60;	////****~~~~
    //esipcFramesOutHostPrm0.baseCreateParams.notifyNextLink                 = FALSE;//TRUE;//suggested by Badri on 20130611
    esipcFramesOutHostPrm0.baseCreateParams.notifyNextLink                 = TRUE;
    esipcFramesOutHostPrm0.baseCreateParams.notifyPrevLink                 = FALSE;
    esipcFramesOutHostPrm0.baseCreateParams.notifyProcessLink              = FALSE;
    //esipcFramesOutHostPrm0.baseCreateParams.noNotifyMode                   = TRUE;//FALSE;//suggested by Badri on 20130611
    esipcFramesOutHostPrm0.baseCreateParams.noNotifyMode                   = FALSE;

    esipcFramesOutHostPrm0.inQueInfo.numCh                                 = 1;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].startX                      = 0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].startY                      = 0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].height                      = 720;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].width                       = 1280;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].pitch[0]                    = 2560;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].bufType                     = SYSTEM_BUF_TYPE_VIDFRAME;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].bufferFmt                   = 1;//0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].codingformat                = IVIDEO_H264HP;//0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].memType                     = SYSTEM_MT_NONTILEDMEM;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].dataFormat                  = SYSTEM_DF_YUV422I_YUYV;
//    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].scanFormat                  = /*SYSTEM_SF_PROGRESSIVE;*/SYSTEM_SF_INTERLACED;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].scanFormat                  = SYSTEM_SF_PROGRESSIVE;
    System_linkCreate(esipcFramesOutHostId0, &esipcFramesOutHostPrm0, sizeof(esipcFramesOutHostPrm0));

    esipcFramesInVpssPrm0.baseCreateParams.inQueParams.prevLinkId      = esipcFramesOutHostId0;
    esipcFramesInVpssPrm0.baseCreateParams.inQueParams.prevLinkQueId   = 0;
    esipcFramesInVpssPrm0.baseCreateParams.inputFrameRate              = 60;
    //esipcFramesInVpssPrm0.baseCreateParams.noNotifyMode                = TRUE;//FALSE;//suggested by Badri on 20130611
    esipcFramesInVpssPrm0.baseCreateParams.noNotifyMode                = FALSE;
    esipcFramesInVpssPrm0.baseCreateParams.notifyNextLink              = TRUE;
    //esipcFramesInVpssPrm0.baseCreateParams.notifyPrevLink              = FALSE;//TRUE;//suggested by Badri on 20130611
    esipcFramesInVpssPrm0.baseCreateParams.notifyPrevLink              = TRUE;
    esipcFramesInVpssPrm0.baseCreateParams.numOutQue                   = 1;
    esipcFramesInVpssPrm0.baseCreateParams.numChPerOutQue[0]           = 1;
    esipcFramesInVpssPrm0.baseCreateParams.outQueParams[0].nextLink    = esmergeId0;
    esipcFramesInVpssPrm0.baseCreateParams.outputFrameRate             = 60;

    escapturePrm.numVipInst               = GetCameraNum(pChannels);
    escapturePrm.tilerEnable              = FALSE;
    escapturePrm.numBufsPerCh             = 4 ; //16;  //zhoushuai 
    escapturePrm.numExtraBufs             = 16; //0;  //zhoushuai 
    escapturePrm.maxBlindAreasPerCh       = 0;
    escapturePrm.isPalMode                = FALSE;
    escapturePrm.enableSdCrop             = FALSE;
    escapturePrm.doCropInCapture          = FALSE;

    for (pHChannelNode = pChannels->hChannelList[CHANNEL_CLS_CAMERA]->next, i = 0;
    		pHChannelNode && (i < GetCameraNum(pChannels));
    		pHChannelNode = pHChannelNode->next, i ++)
    {
    	esvipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA + i;
        espCaptureInstPrm                     = &escapturePrm.vipInst[i];
        espCaptureInstPrm->vipInstId          = esvipInstId % SYSTEM_CAPTURE_INST_MAX;
        //pCaptureInstPrm->videoDecoderId     = SYSTEM_DEVICE_VID_DEC_SII9233A_DRV;
        espCaptureInstPrm->videoDecoderId     = 0;
        espCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;
        espCaptureInstPrm->standard           = pHChannelNode->body.hChannel->entity.camera.std;
        espCaptureInstPrm->numOutput          = 1;
        espCaptureInstPrm->numChPerOutput     = 1;
        espCaptureInstPrm->frameCaptureMode   = FALSE;
        espCaptureInstPrm->fieldsMerged       = FALSE;

        espCaptureOutPrm                      = &espCaptureInstPrm->outParams[0];
        espCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV;
        espCaptureOutPrm->scEnable            = FALSE;
        espCaptureOutPrm->outQueId            = 0;
    }
    escapturePrm.outQueParams[0].nextLink     = esmergeId0;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    System_linkCreate(escaptureId, &escapturePrm, sizeof(escapturePrm));

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    esmergePrm0.numInQue                       = 3;
    esmergePrm0.inQueParams[0].prevLinkId      = escaptureId;
    esmergePrm0.inQueParams[0].prevLinkQueId   = 0;
    esmergePrm0.inQueParams[1].prevLinkId      = esipcFramesInVpssId0;
    esmergePrm0.inQueParams[1].prevLinkQueId   = 0;
    esmergePrm0.inQueParams[2].prevLinkId      = esswMsId3;
    esmergePrm0.inQueParams[2].prevLinkQueId   = 0;
    esmergePrm0.outQueParams.nextLink          = esipcFramesOutVpssId0;
    esmergePrm0.notifyNextLink                 = TRUE;

    ///////////////////////////////////////////////////  O  S  D  //////////////////////////////////////////////////////////////////////////

    esipcFramesOutVpssPrm0.baseCreateParams.inQueParams.prevLinkId     = esmergeId0;
    esipcFramesOutVpssPrm0.baseCreateParams.inQueParams.prevLinkQueId  = 0;
    esipcFramesOutVpssPrm0.baseCreateParams.numOutQue                  = 1;
    esipcFramesOutVpssPrm0.baseCreateParams.outQueParams[0].nextLink   = esdupId2;
    esipcFramesOutVpssPrm0.baseCreateParams.processLink                = esipcFramesInDspId0;
    esipcFramesOutVpssPrm0.baseCreateParams.noNotifyMode               = FALSE;
    esipcFramesOutVpssPrm0.baseCreateParams.notifyPrevLink             = FALSE;
    esipcFramesOutVpssPrm0.baseCreateParams.notifyNextLink             = TRUE;
    esipcFramesOutVpssPrm0.baseCreateParams.notifyProcessLink          = TRUE;

    esipcFramesInDspPrm0.baseCreateParams.inQueParams.prevLinkId       = esipcFramesOutVpssId0;
    esipcFramesInDspPrm0.baseCreateParams.inQueParams.prevLinkQueId    = 0;
    esipcFramesInDspPrm0.baseCreateParams.numOutQue                    = 1;
    esipcFramesInDspPrm0.baseCreateParams.outQueParams[0].nextLink     = esosdId0;
    esipcFramesInDspPrm0.baseCreateParams.noNotifyMode                 = FALSE;
    esipcFramesInDspPrm0.baseCreateParams.notifyPrevLink               = FALSE;
    esipcFramesInDspPrm0.baseCreateParams.notifyNextLink               = TRUE;

    esosdPrm0.enableOSDAlg                     = TRUE;
    esosdPrm0.enableSCDAlg                     = FALSE;
    esosdPrm0.inQueParams.prevLinkId           = esipcFramesInDspId0;
    esosdPrm0.inQueParams.prevLinkQueId        = 0;

    //////////////////////////////////////////////////  O  S  D  ///////////////////////////////////////////////////////////////////////////////

    esdupPrm2.inQueParams.prevLinkId		=	esipcFramesOutVpssId0;
    esdupPrm2.inQueParams.prevLinkQueId		=	0;
    esdupPrm2.numOutQue						=	4;
    esdupPrm2.outQueParams[0].nextLink		=	esswMsId[0];
    esdupPrm2.outQueParams[1].nextLink		=	esswMsId[1];
    esdupPrm2.outQueParams[2].nextLink		=	esmergeId1;
    esdupPrm2.outQueParams[3].nextLink		=	esselId3;
    esdupPrm2.notifyNextLink				=	TRUE;

    for (pHChannelNode = pChannels->hChannelList[CHANNEL_CLS_SWMS]->next, i = 0;
    		pHChannelNode && (i < 2);
    		pHChannelNode = pHChannelNode->next, i ++)
    {
   		esswMsPrm[i].numSwMsInst			= 2;
    	esswMsPrm[i].swMsInstId[0]         	= SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI;
    	esswMsPrm[i].swMsInstStartWin[0]	= 0;
   		esswMsPrm[i].swMsInstId[1]         	= SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
    	esswMsPrm[i].swMsInstStartWin[1]	= 3;

        esswMsPrm[i].inQueParams.prevLinkId    = esdupId2;
        esswMsPrm[i].inQueParams.prevLinkQueId = i;
        if (0 == i)
        {
        	esswMsPrm[i].outQueParams.nextLink     = esipcFramesOutVpssId1;
        }
        else
        {
        	esswMsPrm[i].outQueParams.nextLink     = esdupId[i];
        }
        esswMsPrm[i].lineSkipMode              = FALSE;
        esswMsPrm[i].enableLayoutGridDraw      = TRUE;
        esswMsPrm[i].layoutPrm.outputFPS       = pHChannelNode->body.hChannel->entity.swms.frameRate;
       // esswMsPrm[i].maxInputQueLen            = 64;
        esswMsPrm[i].maxInputQueLen            = 8+i*8;  //zhoushaui
        esswMsPrm[i].maxOutRes                 = pHChannelNode->body.hChannel->entity.swms.std;
        ///esswMsPrm[i].numOutBuf                 = 256;
        esswMsPrm[i].numOutBuf                 = 5+i*3;//zhoushaui

        SwMsSetLayoutParams(esswMsId[i], pHChannelNode->body.hChannel->entity.swms.info.hd_info.currlayout, &esswMsPrm[i]);

        if (0 == i)
        {
			esdupPrm[i].inQueParams.prevLinkId           = esipcFramesOutVpssId1;
			esdupPrm[i].inQueParams.prevLinkQueId        = 0;
        }
        else
        {
			esdupPrm[i].inQueParams.prevLinkId           = esswMsId[i];
			esdupPrm[i].inQueParams.prevLinkQueId        = 0;
        }
      	esdupPrm[i].numOutQue                 	   	 = 2;
        esdupPrm[i].outQueParams[0].nextLink         = esdisplayId[i];
        esdupPrm[i].outQueParams[1].nextLink         = esmergeId1;
        esdupPrm[i].notifyNextLink                   = TRUE;

        esipcFramesOutVpssPrm1.baseCreateParams.inQueParams.prevLinkId     = esswMsId[0];
        esipcFramesOutVpssPrm1.baseCreateParams.inQueParams.prevLinkQueId  = 0;
        esipcFramesOutVpssPrm1.baseCreateParams.numOutQue                  = 1;
        esipcFramesOutVpssPrm1.baseCreateParams.outQueParams[0].nextLink   = esdupId[0];
        esipcFramesOutVpssPrm1.baseCreateParams.processLink                = esipcFramesInDspId1;
        esipcFramesOutVpssPrm1.baseCreateParams.noNotifyMode               = FALSE;
        esipcFramesOutVpssPrm1.baseCreateParams.notifyPrevLink             = TRUE;
        esipcFramesOutVpssPrm1.baseCreateParams.notifyNextLink             = TRUE;
        esipcFramesOutVpssPrm1.baseCreateParams.notifyProcessLink          = TRUE;

        esipcFramesInDspPrm1.baseCreateParams.inQueParams.prevLinkId       = esipcFramesOutVpssId1;
        esipcFramesInDspPrm1.baseCreateParams.inQueParams.prevLinkQueId    = 0;
        esipcFramesInDspPrm1.baseCreateParams.numOutQue                    = 1;
        esipcFramesInDspPrm1.baseCreateParams.outQueParams[0].nextLink     = esosdId1;
        esipcFramesInDspPrm1.baseCreateParams.noNotifyMode                 = FALSE;
        esipcFramesInDspPrm1.baseCreateParams.notifyPrevLink               = TRUE;
        esipcFramesInDspPrm1.baseCreateParams.notifyNextLink               = TRUE;

        esosdPrm1.enableOSDAlg                     = TRUE;
        esosdPrm1.enableSCDAlg                     = FALSE;
        esosdPrm1.inQueParams.prevLinkId           = esipcFramesInDspId1;
        esosdPrm1.inQueParams.prevLinkQueId        = 0;
        for(chId = 0; chId < 1; chId++)
        {
            esosdPrm1.osdChCreateParams[chId].maxWidth    = CHAINS_OSD_WIN_MAX_WIDTH;
            esosdPrm1.osdChCreateParams[chId].maxHeight   = CHAINS_OSD_WIN_MAX_HEIGHT;

            AlgLink_OsdChWinParams * chWinPrm1       = &esosdPrm1.osdChCreateParams[chId].chDefaultParams;

            chWinPrm1->chId                          = chId;
            chWinPrm1->numWindows                    = 5;
            chWinPrm1->colorKey[0]                   = COLORKEY;
            chWinPrm1->colorKey[1]                   = COLORKEY;
            chWinPrm1->colorKey[2]                   = COLORKEY;
            for(winId = 0; winId < chWinPrm1->numWindows ;winId++)

            {
            	chWinPrm1->winPrm[winId].format             = SYSTEM_DF_YUV422I_YUYV;
            	chWinPrm1->winPrm[winId].transperencyEnable = CHAINS_OSD_TRANSPARENCY;
       	        chWinPrm1->winPrm[winId].enableWin          = FALSE;
       	        chWinPrm1->winPrm[winId].globalAlpha        = CHAINS_OSD_GLOBAL_ALPHA;

                Chains_createBuf(&chWinPrm1->winPrm[winId].addr[0][0],
       	                   &osdWinBuPtr1[chId][winId], &osdWinSrAddr1[chId][winId],
       	                   MAX_YUVBUF_SIZE, 0);
                if (winId == 3)
                {
                	//modify by ningbo 20131205 begin
                	//use CurrentConf_sim.xml/Channels/ChannelList/channel6/osd_datetime to control datetime show or not
                	//chWinPrm1->winPrm[winId].enableWin          = CHAINS_OSD_ENABLE_WIN;
                	chWinPrm1->winPrm[winId].enableWin          = osdDatetimeParam.show;
                	//modify by ningbo 20131205 end

                	if (SWMS_LAYOUT_PATTERN_1PLUS3 == layoutidAtStartup)
                	{
                		font.winposition.StartX	=	350;
                	}

                	osdDrawText("1999-12-23 00:00:00",font,(char*)osdWinBuPtr1[chId][winId],&chWinPrm1->winPrm[winId],FALSE);
                }

                if (winId == 4)
                {
                	system_get_ip();
              	    char  OSDIP[30] = "IP: ";
              	    strcat(OSDIP,set_ip_param_conf->address);
              	    chWinPrm1->winPrm[winId].enableWin          = CHAINS_OSD_ENABLE_WIN;
                	if (SWMS_LAYOUT_PATTERN_1PLUS3 == layoutidAtStartup)
                	{
                		Ip_font.winposition.StartX	=	350;
                	}
              	    osdDrawText(OSDIP,Ip_font,(char*)osdWinBuPtr1[chId][winId],&chWinPrm1->winPrm[winId],FALSE);
                }
            }
        }

        {
            signal(SIGALRM, Demo_updateTime);
            oneSec.it_value.tv_sec = 1;
            oneSec.it_value.tv_usec = 0;
            oneSec.it_interval.tv_sec = 1;
            oneSec.it_interval.tv_usec = 0;
            setitimer(ITIMER_REAL, &oneSec, NULL);
        }
        //////////////////////////////////////////////////  O  S  D  ///////////////////////////////////////////////////////////////////////////////

        esdisplayPrm[i].numInputQueues                = 1;
        esdisplayPrm[i].activeQueue                   = 0;
        esdisplayPrm[i].inQueParams[0].prevLinkId     = esdupId[i];
        esdisplayPrm[i].inQueParams[0].prevLinkQueId  = 0;
        esdisplayPrm[i].displayRes                    = pHChannelNode->body.hChannel->entity.swms.std;
        esdisplayPrm[i].forceFieldSeparatedInputMode  = FALSE;
    }

    esmergePrm1.numInQue		=	3;
    esmergePrm1.inQueParams[0].prevLinkId		=	esdupId2;
    esmergePrm1.inQueParams[0].prevLinkQueId	=	2;
    esmergePrm1.inQueParams[1].prevLinkId		=	esdupId[0];
    esmergePrm1.inQueParams[1].prevLinkQueId	=	1;
    esmergePrm1.inQueParams[2].prevLinkId		=	esdupId[1];
    esmergePrm1.inQueParams[2].prevLinkQueId	=	1;
    esmergePrm1.outQueParams.nextLink			=	esdupId3;
    esmergePrm1.notifyNextLink	=	TRUE;

    esdupPrm3.inQueParams.prevLinkId			=	esmergeId1;
    esdupPrm3.inQueParams.prevLinkQueId			=	0;
    esdupPrm3.numOutQue							=	3;
    esdupPrm3.outQueParams[0].nextLink			=	esselId0;
    esdupPrm3.outQueParams[1].nextLink			=	esselId1;
    esdupPrm3.outQueParams[2].nextLink			=	esselId2;
    esdupPrm3.notifyNextLink					=	TRUE;

    esselPrm0.inQueParams.prevLinkId       = esdupId3;
    esselPrm0.inQueParams.prevLinkQueId    = 0;
    esselPrm0.numOutQue                    = 1;
    esselPrm0.outQueParams[0].nextLink     = esmergeId2;
    esselPrm0.outQueChInfo[0].outQueId     = 0;
    esselPrm0.outQueChInfo[0].numOutCh     = GetRawEncoderNum(pChannels) - 1;	// to modified...

	GetGlobeChannelSelMatrixRawEnc(pChannels, &gChMat);

	for (i=0; i<gChMat.encChNum; i++)
	{
		esselPrm0.outQueChInfo[0].inChNum[i] = gChMat.channel[0][i];
	}

    esselPrm1.inQueParams.prevLinkId       = esdupId3;
    esselPrm1.inQueParams.prevLinkQueId    = 1;
    esselPrm1.numOutQue                    = 1;
    esselPrm1.outQueParams[0].nextLink     = essclrId0;
    esselPrm1.outQueChInfo[0].outQueId     = 0;
    esselPrm1.outQueChInfo[0].numOutCh     = GetSCEncoderNum(pChannels);

    UInt8 gChScEnc		   = GetGlobeChannel(GetHCHANNELFromHENCODER(GetHANDLESCEnc(pChannels)));
    UInt8 gChannel		   = 0;
    UInt8 selSCEncChIdx    = 0;
    UInt8 selNonSCEncChIdx = 0;
    for (gChannel = 0; gChannel <= (GetChannelsNum(pChannels) - 1) - 1; gChannel ++)
    {
    	if (gChannel == gChScEnc)
      	{
    		esselPrm1.outQueChInfo[0].inChNum[selSCEncChIdx ++] = gChannel;
      	}
       	else
       	{
//       		esselPrm1.outQueChInfo[1].inChNum[selNonSCEncChIdx ++] = gChannel;
       	}
    }

    essclrPrm0.inQueParams.prevLinkId		         =	esselId1;
    essclrPrm0.inQueParams.prevLinkQueId		     =	0;
    essclrPrm0.outQueParams.nextLink			     =	esmergeId2;
    essclrPrm0.pathId						         =	SCLR_LINK_SC5;
    essclrPrm0.scaleMode                            =  SCLR_SCALE_MODE_ABSOLUTE;
    essclrPrm0.outScaleFactor.absoluteResolution.outWidth	=	720;
    essclrPrm0.outScaleFactor.absoluteResolution.outHeight	=	576;
    essclrPrm0.inputFrameRate                     = GetChannelFrameRate(GetHCHANNELFromHENCODER(GetHANDLESCEnc(pChannels)));
    essclrPrm0.outputFrameRate                    = GetChannelFrameRate(GetHCHANNELFromHENCODER(GetHANDLESCEnc(pChannels)));
    essclrPrm0.tilerEnable                        = FALSE;
    essclrPrm0.enableLineSkipSc                   = FALSE;

    ///////////////////////////////////////////////////////////////////////////////////////

    esselPrm3.inQueParams.prevLinkId       	= esdupId2;
    esselPrm3.inQueParams.prevLinkQueId    	= 3;
    esselPrm3.numOutQue                    	= 1;
    esselPrm3.outQueParams[0].nextLink     	= esmergeId2;
    esselPrm3.outQueChInfo[0].outQueId     	= 0;
    esselPrm3.outQueChInfo[0].numOutCh     	= 1;
	HCHANNEL hChannelswms0 = channels.hChannelList[CHANNEL_CLS_SWMS]->next->body.hChannel;
	UInt8 currPhyChannelID  = MapIDFromUsrToPhy(hChannelswms0->entity.swms.info.hd_info.ch2win[hChannelswms0->entity.swms.info.hd_info.currlayout][0]);
	UInt8 swmsChannel       = GetSwmsChannel(GetHCHANNELFromID(&channels, currPhyChannelID));
    esselPrm3.outQueChInfo[0].inChNum[0] 	= swmsChannel;

    ///////////////////////////////////////////////////////////////////////////////////////

    esmergePrm2.numInQue		=	3;
    esmergePrm2.inQueParams[0].prevLinkId		=	esselId0;
    esmergePrm2.inQueParams[0].prevLinkQueId	=	0;
    esmergePrm2.inQueParams[1].prevLinkId		=	essclrId0;
    esmergePrm2.inQueParams[1].prevLinkQueId	=	0;
    esmergePrm2.inQueParams[2].prevLinkId		=	esselId3;
    esmergePrm2.inQueParams[2].prevLinkQueId	=	0;
    esmergePrm2.outQueParams.nextLink			=	esnsfId0;
    esmergePrm2.notifyNextLink	=	TRUE;

	esselPrm2.inQueParams.prevLinkId       = esdupId3;
	esselPrm2.inQueParams.prevLinkQueId    = 2;
	esselPrm2.numOutQue                    = 1;
	esselPrm2.outQueParams[0].nextLink     = esswMsId2;
	esselPrm2.outQueChInfo[0].outQueId     = 0;
	esselPrm2.outQueChInfo[0].numOutCh     = 1;

    gChannel		= 0;
    UInt8 selSDChIdx    = 0;
    UInt8 selNonSDChIdx = 0;
    for (gChannel = 0; gChannel <= (GetChannelsNum(pChannels) - 1) - 1; gChannel ++)
    {
    	if (gChannel == GetGlobeChannel(GetHCHANNELFromID(pChannels, GENERATE_ID(CHANNEL_CLS_SWMS, 0))))
      	{
    		esselPrm2.outQueChInfo[0].inChNum[selSDChIdx ++] = gChannel;
      	}
       	else
       	{
       		//esselPrm2.outQueChInfo[1].inChNum[selNonSDChIdx ++] = gChannel;
       	}
    }

    pHChannelNode = pChannels->hChannelList[CHANNEL_CLS_SWMS]->next->next->next;
    esswMsPrm2.numSwMsInst               = 1;
	esswMsPrm2.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI;

    esswMsPrm2.inQueParams.prevLinkId    = esselId2;
    esswMsPrm2.inQueParams.prevLinkQueId = 0;
    esswMsPrm2.outQueParams.nextLink     = esdisplayId2;
    esswMsPrm2.lineSkipMode              = FALSE;
    esswMsPrm2.enableLayoutGridDraw      = FALSE;
    esswMsPrm2.layoutPrm.outputFPS       = pHChannelNode->body.hChannel->entity.swms.frameRate;
    esswMsPrm2.maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
    //esswMsPrm2.maxInputQueLen            = 3;
    esswMsPrm2.maxOutRes                 = pHChannelNode->body.hChannel->entity.swms.std;
    esswMsPrm2.numOutBuf                 = 0;
    //esswMsPrm2.numOutBuf                 = 3;
  	SwMsSetLayoutParams(esswMsId2, SWMS_LAYOUT_PATTERN_1, &esswMsPrm2);

    esdisplayPrm2.numInputQueues                = 1;
    esdisplayPrm2.activeQueue                   = 0;
    esdisplayPrm2.inQueParams[0].prevLinkId     = esswMsId2;
    esdisplayPrm2.inQueParams[0].prevLinkQueId  = 0;
    esdisplayPrm2.displayRes                    = pHChannelNode->body.hChannel->entity.swms.std;
    esdisplayPrm2.forceFieldSeparatedInputMode  = FALSE;

    esnsfPrm0.inQueParams.prevLinkId           = esmergeId2;
    esnsfPrm0.inQueParams.prevLinkQueId        = 0;
    esnsfPrm0.outQueParams[0].nextLink         = esipcOutVpssId0;
    esnsfPrm0.bypassNsf                        = TRUE;
    esnsfPrm0.tilerEnable                      = TRUE;
    esnsfPrm0.numOutQue                        = 1;
    esnsfPrm0.numBufsPerCh                     = 0;

    esipcOutVpssPrm0.inQueParams.prevLinkId    = esnsfId0;
    esipcOutVpssPrm0.inQueParams.prevLinkQueId = 0;
    esipcOutVpssPrm0.numOutQue                 = 1;
    esipcOutVpssPrm0.numChPerOutQue[0]         = 1;
    esipcOutVpssPrm0.outQueParams[0].nextLink  = esipcInVideoId0;
    esipcOutVpssPrm0.notifyNextLink            = TRUE;
    esipcOutVpssPrm0.notifyPrevLink            = FALSE;
    esipcOutVpssPrm0.noNotifyMode              = FALSE;
    esipcOutVpssPrm0.numChPerOutQue[0]         = 0;
    esipcOutVpssPrm0.equallyDivideChAcrossOutQues = FALSE;

    esipcInVideoPrm0.inQueParams.prevLinkId    = esipcOutVpssId0;
    esipcInVideoPrm0.inQueParams.prevLinkQueId = 0;
    esipcInVideoPrm0.numOutQue                 = 1;
    esipcInVideoPrm0.numChPerOutQue[0]         = 1;
    esipcInVideoPrm0.outQueParams[0].nextLink  = esencId0;
    esipcInVideoPrm0.notifyNextLink            = TRUE;
    esipcInVideoPrm0.notifyPrevLink            = FALSE;
    esipcInVideoPrm0.noNotifyMode              = FALSE;
    esipcInVideoPrm0.numChPerOutQue[0]         = 0;
    esipcInVideoPrm0.equallyDivideChAcrossOutQues = FALSE;

    for (pHEncoderNode = pChannels->encoderList->next, i = 0; pHEncoderNode; pHEncoderNode = pHEncoderNode->next, i ++)
    {
    	HCHANNEL hChannel = GetHCHANNELFromHENCODER(pHEncoderNode->body.hEncoder);

    	esencPrm0.chCreateParams[i].format                             = pHEncoderNode->body.hEncoder->format;
    	esencPrm0.chCreateParams[i].profile                            = pHEncoderNode->body.hEncoder->profile;
        esencPrm0.chCreateParams[i].dataLayout                         = IVIDEO_FIELD_SEPARATED;
        esencPrm0.chCreateParams[i].fieldMergeEncodeEnable             = FALSE;
        esencPrm0.chCreateParams[i].enableAnalyticinfo                 = FALSE;
        esencPrm0.chCreateParams[i].enableWaterMarking                 = FALSE;
        esencPrm0.chCreateParams[i].encodingPreset                     = XDM_USER_DEFINED;
        esencPrm0.chCreateParams[i].rateControlPreset                  = IVIDEO_USER_DEFINED;
        esencPrm0.chCreateParams[i].enableHighSpeed                    = FALSE;
        esencPrm0.chCreateParams[i].defaultDynamicParams.interFrameInterval  = 1;
        esencPrm0.chCreateParams[i].defaultDynamicParams.intraFrameInterval  = pHEncoderNode->body.hEncoder->intraFrameInterval;
        esencPrm0.chCreateParams[i].defaultDynamicParams.inputFrameRate      = (hChannel) ? GetChannelFrameRate(hChannel) : 30;
        esencPrm0.chCreateParams[i].defaultDynamicParams.targetFrameRate     = (hChannel) ? GetChannelFrameRate(hChannel) : 30;
        esencPrm0.chCreateParams[i].defaultDynamicParams.targetBitRate       = pHEncoderNode->body.hEncoder->targetBitRate;
        esencPrm0.chCreateParams[i].defaultDynamicParams.mvAccuracy          = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
        esencPrm0.chCreateParams[i].defaultDynamicParams.rcAlg               = pHEncoderNode->body.hEncoder->rcAlg;
        esencPrm0.chCreateParams[i].defaultDynamicParams.qpMin               = 0;
        esencPrm0.chCreateParams[i].defaultDynamicParams.qpMax               = 51;
        esencPrm0.chCreateParams[i].defaultDynamicParams.qpInit              = -1;
        esencPrm0.chCreateParams[i].defaultDynamicParams.vbrDuration         = 8;
        esencPrm0.chCreateParams[i].defaultDynamicParams.vbrSensitivity      = 0;

        EncLink_ChDynamicParams *dynamicParams              = &esencPrm0.chCreateParams[i].defaultDynamicParams;
        dynamicParams->intraCodingParams.intraCodingPreset  = IH264_INTRACODING_USERDEFINED;
        dynamicParams->intraCodingParams.intraRefreshMethod = IH264_INTRAREFRESH_GDR;
        dynamicParams->intraCodingParams.intraRefreshRate   = (hChannel) ? GetChannelFrameRate(hChannel) : 30;
    }

    esencPrm0.inQueParams.prevLinkId   = esipcInVideoId0;
    esencPrm0.inQueParams.prevLinkQueId= 0;
    esencPrm0.outQueParams.nextLink    = esipcBitsOutVideoId0;
    esencPrm0.numBufPerCh[0]           = 0;

    esipcBitsOutVideoPrm0.baseCreateParams.inQueParams.prevLinkId      = esencId0;
    esipcBitsOutVideoPrm0.baseCreateParams.inQueParams.prevLinkQueId   = 0;
    esipcBitsOutVideoPrm0.baseCreateParams.numOutQue                   = 1;
    esipcBitsOutVideoPrm0.baseCreateParams.numChPerOutQue[0]           = 1;
    esipcBitsOutVideoPrm0.baseCreateParams.outQueParams[0].nextLink    = esipcBitsInHostId0;
    esipcBitsOutVideoPrm0.baseCreateParams.notifyNextLink              = FALSE;
    esipcBitsOutVideoPrm0.baseCreateParams.notifyPrevLink              = FALSE;
    esipcBitsOutVideoPrm0.baseCreateParams.noNotifyMode                = TRUE;
    IPCBitsOutRTOS_Params_Init(&esipcBitsOutVideoPrm0);

    esipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkId        = esipcBitsOutVideoId0;
    esipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkQueId     = 0;
    esipcBitsInHostPrm0.baseCreateParams.numOutQue                     = 1;
    esipcBitsInHostPrm0.baseCreateParams.numChPerOutQue[0]             = 1;
    esipcBitsInHostPrm0.baseCreateParams.notifyNextLink                = FALSE;
    esipcBitsInHostPrm0.baseCreateParams.notifyPrevLink                = FALSE;
    esipcBitsInHostPrm0.baseCreateParams.noNotifyMode                  = TRUE;
    IPCBitsInHLOS_Params_Init(&esipcBitsInHostPrm0);

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    System_linkCreate(esipcBitsOutHostId0,&esipcBitsOutHostPrm0,sizeof(esipcBitsOutHostPrm0));
    System_linkCreate(esipcBitsInVideoId0,&esipcBitsInVideoPrm0,sizeof(esipcBitsInVideoPrm0));
    System_linkCreate(esdecId0, &esdecPrm0, sizeof(esdecPrm0));
    System_linkCreate(esipcOutVideoId0, &esipcOutVideoPrm0, sizeof(esipcOutVideoPrm0));
    System_linkCreate(esipcInVpssId0, &esipcInVpssPrm0, sizeof(esipcInVpssPrm0));
    System_linkCreate(esswMsId3, &esswMsPrm3, sizeof(esswMsPrm3));
    System_linkCreate(esipcFramesInVpssId0, &esipcFramesInVpssPrm0, sizeof(esipcFramesInVpssPrm0));
    System_linkCreate(esmergeId0, &esmergePrm0, sizeof(esmergePrm0));

    System_linkCreate(esipcFramesOutVpssId0, &esipcFramesOutVpssPrm0, sizeof(esipcFramesOutVpssPrm0));
    System_linkCreate(esipcFramesInDspId0, &esipcFramesInDspPrm0, sizeof(esipcFramesInDspPrm0));
    System_linkCreate(esosdId0, &esosdPrm0, sizeof(esosdPrm0));

    System_linkCreate(esdupId2, &esdupPrm2, sizeof(esdupPrm2));
    for (i=0; i<2; i++)
    {
        System_linkCreate(esswMsId[i], &esswMsPrm[i], sizeof(esswMsPrm[i]));
        if (0 == i)
        {
            System_linkCreate(esipcFramesOutVpssId1, &esipcFramesOutVpssPrm1, sizeof(esipcFramesOutVpssPrm1));
            System_linkCreate(esipcFramesInDspId1, &esipcFramesInDspPrm1, sizeof(esipcFramesInDspPrm1));
            System_linkCreate(esosdId1, &esosdPrm1, sizeof(esosdPrm1));
        }
        System_linkCreate(esdupId[i], &esdupPrm[i], sizeof(esdupPrm[i]));
        System_linkCreate(esdisplayId[i], &esdisplayPrm[i], sizeof(esdisplayPrm[i]));
    }

    System_linkCreate(esmergeId1, &esmergePrm1, sizeof(esmergePrm1));
    System_linkCreate(esdupId3, &esdupPrm3, sizeof(esdupPrm3));
    System_linkCreate(esselId0, &esselPrm0, sizeof(esselPrm0));
    System_linkCreate(esselId1, &esselPrm1, sizeof(esselPrm1));
    System_linkCreate(essclrId0, &essclrPrm0, sizeof(essclrPrm0));
    System_linkCreate(esselId3, &esselPrm3, sizeof(esselPrm3));
    System_linkCreate(esmergeId2, &esmergePrm2, sizeof(esmergePrm2));
    System_linkCreate(esselId2, &esselPrm2, sizeof(esselPrm2));
    System_linkCreate(esswMsId2, &esswMsPrm2, sizeof(esswMsPrm2));
    System_linkCreate(esdisplayId2, &esdisplayPrm2, sizeof(esdisplayPrm2));
    System_linkCreate(esnsfId0, &esnsfPrm0, sizeof(esnsfPrm0));
    System_linkCreate(esipcOutVpssId0, &esipcOutVpssPrm0, sizeof(esipcOutVpssPrm0));
    System_linkCreate(esipcInVideoId0, &esipcInVideoPrm0, sizeof(esipcInVideoPrm0));
    System_linkCreate(esencId0, &esencPrm0, sizeof(esencPrm0));
    System_linkCreate(esipcBitsOutVideoId0, &esipcBitsOutVideoPrm0, sizeof(esipcBitsOutVideoPrm0));
    System_linkCreate(esipcBitsInHostId0, &esipcBitsInHostPrm0, sizeof(esipcBitsInHostPrm0));//*/

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    Chains_memPrintHeapStatus();

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    {
        System_linkStart(esencId0);
        System_linkStart(esnsfId0);
        System_linkStart(esdisplayId2);
        System_linkStart(esswMsId2);
        System_linkStart(esmergeId2);
        System_linkStart(esselId3);
        System_linkStart(essclrId0);
        System_linkStart(esselId2);
        System_linkStart(esselId1);
        System_linkStart(esselId0);
        System_linkStart(esdupId3);
        System_linkStart(esmergeId1);
        for (i=0; i<2; i++)
        {
            System_linkStart(esdisplayId[i]);
            System_linkStart(esdupId[i]);
            if (0 == i)
            {
                System_linkStart(esipcFramesOutVpssId1);
                System_linkStart(esipcFramesInDspId1);
                System_linkStart(esosdId1);
            }
            System_linkStart(esswMsId[i]);
        }
        System_linkStart(esdupId2);

        System_linkStart(esipcFramesOutVpssId0);
        System_linkStart(esipcFramesInDspId0);
        System_linkStart(esosdId0);

        System_linkStart(esmergeId0);
        System_linkStart(esipcFramesInVpssId0);
        System_linkStart(esipcFramesOutHostId0);
        System_linkStart(escaptureId);
        System_linkStart(esswMsId3);
        System_linkStart(esipcInVpssId0);
        System_linkStart(esipcOutVideoId0);
        System_linkStart(esdecId0);
        System_linkStart(esipcBitsInVideoId0);
        System_linkStart(esipcBitsOutHostId0);

        startAudioCaptEnc(pChannels);
        IPCFrameInit();

        //////////////////////////////////////////////////////////////////////////////////////////////////////

        while(1)
        {
            ch = Chains_menuRunTime();
            if (ch=='0'){
            	exit(0);
                break;
            }
            if (ch == 'r'){
            	system("reboot");
            }
            if(ch == 'd'){
                System_linkControl( SYSTEM_LINK_ID_VENC_0,
                                    ENC_LINK_CMD_PRINT_IVAHD_STATISTICS,
                                    NULL, 0, TRUE);
            }
            if (ch=='l')
            {
            	UInt32 dispid = Chains_menuSelectDisplayNumber();
            	UInt32 swmslayoutid = Chains_menuSelectSwMsLayoutId();

            	SwMsSetLayout(esswMsId[dispid], swmslayoutid, &esswMsPrm[dispid]);
            }
            if (ch=='c')
            {
            	UInt32 dispid = Chains_menuSelectDisplayNumber();
            	UInt32 winid  = Chains_getIntValue("Window Id : ", 0, 255, 0);
            	UInt32 chId   = Chains_getIntValue("Channel Id : ", 0, 255, 0);

            	switch (SwMsMapChtoWin(esswMsId[dispid], winid, chId, &esswMsPrm[dispid]))
            	{
            	case ERR_CHNUM_INVALID:
            		printf("\n Invalid channel ID!!! \n");
            		break;
            	case ERR_CHNUM_INVISIBLE:
            		printf("\n Channel cannot be visible!!! \n");
            		break;
            	case ERR_WINNUM_INVALID:
            		printf("\n Invalid Window ID!!! \n");
            		break;
            	case SUCCEED:
            		break;
            	default:
            		break;
            	}
            }
            if (ch=='x')
            {
            	UInt32 dispid = Chains_menuSelectDisplayNumber();
            	UInt32 winid1 = Chains_getIntValue("Window Id 1 : ", 0, 255, 0);
            	UInt32 winid2 = Chains_getIntValue("Window Id 2 : ", 0, 255, 0);

            	switch (SwMsExchangeWin(esswMsId[dispid], winid1, winid2, &esswMsPrm[dispid]))
            	{
            	case ERR_WINNUM_SAME:
            		printf("\n Window to be exchanged are same!!! \n");
            		break;
            	case ERR_WINNUM_INVALID:
            		printf("\n Invalid window ID!!! \n");
            		break;
            	case ERR_WINNUM_BLANK:
            		printf("\n Blank window!!! \n");
            		break;
            	default:
            		break;
            	}
            }
            if (ch=='s')
            {
            	UInt32 channel = Chains_getIntValue("channel Id : ", 0, 255, 0);
            	UInt32 enable = Chains_getIntValue("On/Off (1/0) : ", 0, 1, 1);

            	switch (SwMsSwitchChannel(channel, enable, swMsPrmList))
            	{
            	case ERR_CHNUM_INVALID:
            		printf("\n channel to be on/off is invalid!!! \n");
            		break;
            	default:
            		break;
            	}
            }
            if (ch == 'm')
            {
            	chId   = 0;
            	winId  = Chains_getIntValue("Window Id : ", 0, CHAINS_OSD_NUM_WINDOWS-1, 0);

            	swmsFont = font2;
                printf("\nInput OSD Window Position:\n");
                swmsFont.winposition.StartX   = Chains_getIntValue("StartX : ", 0,1280, 96);
                swmsFont.winposition.StartY   = Chains_getIntValue("StartY : ", 0,720, 96);
                printf("\nInput character display in osd:\n");
                fflush(stdin);
                scanf("%s",&test);

            	UInt32 fontcolor = Chains_menuSelectOSDFontColor();
            	UInt32 fontcsize = Chains_menuSelectOSDFontSize();

            	swmsFont.fontcolor = fontcolor;
            	swmsFont.fontsize  = fontcsize;

            	AlgLink_OsdChWinParams *chWinPrm  = &esosdPrm1.osdChCreateParams[chId].chDefaultParams;

                chWinPrm->chId                             = chId;
                chWinPrm->colorKey[0]                      = 0x60;
                chWinPrm->colorKey[1]                      = 0x60;
                chWinPrm->colorKey[2]                      = 0x60;
                chWinPrm->winPrm[winId].format             = SYSTEM_DF_YUV422I_YUYV;
                chWinPrm->winPrm[winId].globalAlpha        = CHAINS_OSD_GLOBAL_ALPHA;
                chWinPrm->winPrm[winId].transperencyEnable = CHAINS_OSD_TRANSPARENCY;
                chWinPrm->winPrm[winId].enableWin          = CHAINS_OSD_ENABLE_WIN;
                osdDrawText(test,swmsFont,(char*)osdWinBuPtr1[chId][winId],
                		&chWinPrm->winPrm[winId],FALSE);
                System_linkControl(esosdId1, ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM,
    		                   chWinPrm, sizeof(AlgLink_OsdChWinParams), TRUE);
            }
            if (ch == 'e')
            {
            	winId  = Chains_getIntValue("Window Id: ", 0, 1, 0);
            	AlgLink_OsdChWinParams * chWinPrm  =
            			           &esosdPrm1.osdChCreateParams[0].chDefaultParams;
                chWinPrm->winPrm[winId].globalAlpha            = FALSE;
                System_linkControl(esosdId1, ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM,
     		                  chWinPrm, sizeof(AlgLink_OsdChWinParams), TRUE);
            }
            if (ch == 'n')
            {
            	UInt32 syslinkctrl_status;
            	SelectLink_OutQueChInfo	selqueinfo;
            	selqueinfo.outQueId	=	0;

            	syslinkctrl_status = System_linkControl(esselId3, SELECT_LINK_CMD_GET_OUT_QUE_CH_INFO,
            			&selqueinfo, sizeof(SelectLink_OutQueChInfo), TRUE);
            	printf("======================================== get status = %d\n", syslinkctrl_status);

            	printf("Que ID = %d\n", selqueinfo.outQueId);
            	unsigned char quechindex;
            	for (quechindex = 0; quechindex < selqueinfo.numOutCh; quechindex ++)
            	{
            		printf("\t[%d] = %d\n", quechindex, selqueinfo.inChNum[quechindex]);
            	}

            	selqueinfo.outQueId	=	0;
            	selqueinfo.inChNum[0]	=	Chains_getIntValue("Window Id: ", 0, 6, 0);
            	syslinkctrl_status = System_linkControl(esselId3, SELECT_LINK_CMD_SET_OUT_QUE_CH_INFO,
            			&selqueinfo, sizeof(SelectLink_OutQueChInfo), TRUE);
            	printf("======================================== set status = %d\n", syslinkctrl_status);
            }
            if (ch == 't')
            {
            	EncLink_ChannelInfo	encch;
            	encch.chId	=	3;

            	unsigned char opt	=	Chains_getIntValue("Window Id: ", 0, 1, 1);

            	if (0 == opt)
            		System_linkControl(esencId0, ENC_LINK_CMD_DISABLE_CHANNEL, &encch, sizeof(EncLink_ChannelInfo), TRUE);
            	else if(1 == opt)
            		System_linkControl(esencId0, ENC_LINK_CMD_ENABLE_CHANNEL, &encch, sizeof(EncLink_ChannelInfo), TRUE);
            }
        }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

        PeripheralProcessEncodedDataStop();
        sleep(1);

        PeripheralGetStreamsStop();
        PutFullOutStop(&ipc_ctrl);
        GetEmptyOutStop(&ipc_ctrl);

        uart_communicate_stop();

        uart_volum_stop();

        PeripheralGetStreamsStop();
        // stopAudioDecPlay(channels.hAudio);

        System_linkStop(escaptureId);
        System_linkStop(esipcBitsOutHostId0);
        System_linkStop(esipcBitsInVideoId0);
        System_linkStop(esdecId0);
        System_linkStop(esipcOutVideoId0);
        System_linkStop(esipcInVpssId0);
        System_linkStop(esswMsId3);
        System_linkStop(esipcFramesOutHostId0);
        System_linkStop(esipcFramesInVpssId0);
        System_linkStop(esmergeId0);

    	System_linkStop(esipcFramesOutVpssId0);
    	System_linkStop(esipcFramesInDspId0);
    	System_linkStop(esosdId0);

        System_linkStop(esdupId2);
        for (i=0; i<2; i++)
        {
            System_linkStop(esswMsId[i]);
            if (0 == i)
            {
            	System_linkStop(esipcFramesOutVpssId1);
            	System_linkStop(esipcFramesInDspId1);
            	System_linkStop(esosdId1);
            }
            System_linkStop(esdupId[i]);
            System_linkStop(esdisplayId[i]);
        }
        System_linkStop(esmergeId1);
        System_linkStop(esdupId3);
        System_linkStop(esselId0);
        System_linkStop(esselId1);
        System_linkStop(esselId2);
        System_linkStop(essclrId0);
        System_linkStop(esselId3);
        System_linkStop(esmergeId2);
        System_linkStop(esswMsId2);
        System_linkStop(esdisplayId2);
        System_linkStop(esnsfId0);
        System_linkStop(esencId0);
        System_linkStop(esipcBitsOutVideoId0);
        System_linkStop(esipcBitsInHostId0);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    System_linkDelete(escaptureId);
    System_linkDelete(esipcBitsOutHostId0);
    System_linkDelete(esipcBitsInVideoId0);
    System_linkDelete(esdecId0);
    System_linkDelete(esipcOutVideoId0);
    System_linkDelete(esipcInVpssId0);
    System_linkDelete(esswMsId3);
    System_linkDelete(esipcFramesOutHostId0);
    System_linkDelete(esipcFramesInVpssId0);
    System_linkDelete(esmergeId0);

	System_linkDelete(esipcFramesOutVpssId0);
	System_linkDelete(esipcFramesInDspId0);
	System_linkDelete(esosdId0);

    System_linkDelete(esdupId2);
    for (i=0; i<2; i++)
    {
        System_linkDelete(esswMsId[i]);
        if (0 == i)
        {
        	System_linkDelete(esipcFramesOutVpssId1);
        	System_linkDelete(esipcFramesInDspId1);
        	System_linkDelete(esosdId1);
        }
        System_linkDelete(esdupId[i]);
        System_linkDelete(esdisplayId[i]);
    }
    System_linkDelete(esmergeId1);
    System_linkDelete(esdupId3);
    System_linkDelete(esselId0);
    System_linkDelete(esselId1);
    System_linkDelete(esselId2);
    System_linkDelete(essclrId0);
    System_linkDelete(esselId3);
    System_linkDelete(esmergeId2);
    System_linkDelete(esswMsId2);
    System_linkDelete(esdisplayId2);
    System_linkDelete(esnsfId0);
    System_linkDelete(esipcOutVpssId0);
    System_linkDelete(esipcInVideoId0);
    System_linkDelete(esencId0);
    System_linkDelete(esipcBitsOutVideoId0);
    System_linkDelete(esipcBitsInHostId0);

    Chains_displayCtrlDeInit();
}

I used 4 Swms, Fault occured while the last SwmsLINK is creating, with printed information

 [m3vpss ]  14169: Assertion @ Line: 103 in links_m3vpss/swMs/swMsLink_drv.c: status==FVID2_SOK : failed !!!

full info in the file

root@dm816x:~# ./demo.nfs.yrp.sh
*** Bootargs Validated for mem param ***
*** Bootargs Validated for notifyk.vpssm3 params ***
Kernel bootargs validated
numid=1,iface=MIXER,name='PCM Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=48,step=0
  : values=48,48
  | dBscale-min=0.00dB,step=0.50dB,mute=0
 [c6xdsp ] Remote Debug Shared Memory @ 0xbf000000
 [m3video] Remote Debug Shared Memory @ 0xbf005020
 [m3vpss ] Remote Debug Shared Memory @ 0xbf00a040
 Setting DMM priority for [DUCATI  ] to [0] ( 0x4e000624 = 0x08000000 )
 Setting DMM priority for [HDVICP0 ] to [2] ( 0x4e000634 = 0x0000000a )
 Setting DMM priority for [HDVICP1 ] to [2] ( 0x4e000634 = 0x000a0000 )
 Setting DMM priority for [HDVICP2 ] to [2] ( 0x4e000634 = 0x00a00000 )
Attached to slave procId 2.
Loaded file ../firmware/dvr_rdk_fw_m3vpss.xem3 on slave procId 2.
Started slave procId 2.
After Ipc_loadcallback status [0x00000000]
 [m3vpss ] ***** SYSTEM  : Frequency <ORG> - 250000000, <NEW> - 280000000
 [m3vpss ] notify_attach  rtnVal  0
 [m3vpss ] initProxyServer  rtnVal  0
 [m3vpss ]  
 [m3vpss ]  *** UTILS: CPU KHz = 560000 Khz ***
 [m3vpss ]  
 [m3vpss ]  43: SYSTEM  : System Common Init in progress !!!
 [m3vpss ]  44: SYSTEM: IPC init in progress !!!
 [m3vpss ]  44: SYSTEM: Attaching to [HOST] ... 
 [m3vpss ]  1043: SYSTEM: Attaching to [HOST] ... 
 [m3vpss ]  1045: SYSTEM: Attaching to [HOST] ... SUCCESS !!!
 [m3vpss ]  1045: SYSTEM: Attaching to [DSP] ... 
After Ipc_startcallback status [0x097d2000]
Attached to slave procId 1.
Loaded file ../firmware/dvr_rdk_fw_m3video.xem3 on slave procId 1.
Started slave procId 1.
After Ipc_loadcallback status [0x00000000]
 [m3video] ***** SYSTEM  : Frequency <ORG> - 250000000, <NEW> - 280000000
 [m3vpss ]  2045: SYSTEM: Attaching to [DSP] ... 
 [m3video]  
 [m3video]  *** UTILS: CPU KHz = 560000 Khz ***
 [m3video]  
 [m3video]  1493: SYSTEM  : System Common Init in progress !!!
 [m3video]  1493: SYSTEM: IPC init in progress !!!
 [m3video]  1493: SYSTEM: Attaching to [HOST] ... 
 [m3video]  2493: SYSTEM: Attaching to [HOST] ... 
 [m3video]  2495: SYSTEM: Attaching to [HOST] ... SUCCESS !!!
 [m3video]  2495: SYSTEM: Attaching to [DSP] ... 
After Ipc_startcallback status [0x00000000]
Attached to slave procId 0.
Loaded file ../firmware/dvr_rdk_fw_c6xdsp.xe674 on slave procId 0.
Started slave procId 0.
After Ipc_loadcallback status [0x00000000]
 [c6xdsp ] ***** SYSTEM  : Frequency <ORG> - 800000000, <NEW> - 800000000
 [m3video]  3495: SYSTEM: Attaching to [DSP] ... 
 [m3vpss ]  3045: SYSTEM: Attaching to [DSP] ... 
 [c6xdsp ]  
 [c6xdsp ]  *** UTILS: CPU KHz = 800000 Khz ***
 [c6xdsp ]  
 [c6xdsp ]  5: SYSTEM  : System Common Init in progress !!!
 [c6xdsp ]  5: SYSTEM: IPC init in progress !!!
 [c6xdsp ]  5: SYSTEM: Attaching to [HOST] ... 
 [c6xdsp ]  1029: SYSTEM: Attaching to [HOST] ... 
 [c6xdsp ]  1031: SYSTEM: Attaching to [HOST] ... SUCCESS !!!
 [c6xdsp ]  1031: SYSTEM: Attaching to [VIDEO-M3] ... 
After Ipc_startcallback status [0x00000000]
 [c6xdsp ] Remote Debug Shared Memory @ 0xbf000000
 [m3video] Remote Debug Shared Memory @ 0xbf005020
 [m3vpss ] Remote Debug Shared Memory @ 0xbf00a040
 [m3vpss ]  4045: SYSTEM: Attaching to [DSP] ... 
 [m3video]  4495: SYSTEM: Attaching to [DSP] ... 
 [c6xdsp ]  2055: SYSTEM: Attaching to [VIDEO-M3] ... 
 [m3vpss ]  5045: SYSTEM: Attaching to [DSP] ... 
 [c6xdsp ]  2808: SYSTEM: Attaching to [VIDEO-M3] ... SUCCESS !!!
 [m3video]  5495: SYSTEM: Attaching to [DSP] ... 
 [c6xdsp ]  2808: SYSTEM: Attaching to [VPSS-M3] ... 
 [m3video]  5495: SYSTEM: Attaching to [DSP] ... SUCCESS !!!
 [m3video]  5495: SYSTEM: Attaching to [VPSS-M3] ... 
 [m3vpss ]  6045: SYSTEM: Attaching to [DSP] ... 
 [m3video]  6495: SYSTEM: Attaching to [VPSS-M3] ... 
 [c6xdsp ]  3832: SYSTEM: Attaching to [VPSS-M3] ... 
 [c6xdsp ]  4385: SYSTEM: Attaching to [VPSS-M3] ... SUCCESS !!!
 [m3vpss ]  7045: SYSTEM: Attaching to [DSP] ... 
 [c6xdsp ]  4385: SYSTEM: Opening MsgQ Heap [IPC_MSGQ_MSG_HEAP] ...
 [m3vpss ]  7046: SYSTEM: Attaching to [DSP] ... SUCCESS !!!
 [m3vpss ]  7046: SYSTEM: Attaching to [VIDEO-M3] ... 
 [m3video]  7495: SYSTEM: Attaching to [VPSS-M3] ... 
 [m3video]  8046: SYSTEM: Attaching to [VPSS-M3] ... SUCCESS !!!
 [m3vpss ]  8045: SYSTEM: Attaching to [VIDEO-M3] ... 
 [m3video]  8046: SYSTEM: Opening MsgQ Heap [IPC_MSGQ_MSG_HEAP] ...
 [m3vpss ]  8046: SYSTEM: Attaching to [VIDEO-M3] ... SUCCESS !!!
 [m3video]  8046: SYSTEM: Creating MsgQ [VIDEO-M3_MSGQ] ...
 [m3vpss ]  8046: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP] ...
 [m3video]  8046: SYSTEM: Creating MsgQ [VIDEO-M3_ACK_MSGQ] ...
 [m3vpss ]  8046: SYSTEM: Creating MsgQ [VPSS-M3_MSGQ] ...
 [m3video]  8048: SYSTEM: Notify register to [HOST] line 0, event 15 ... 
 [m3vpss ]  8046: SYSTEM: Creating MsgQ [VPSS-M3_ACK_MSGQ] ...
 [m3video]  8048: SYSTEM: Notify register to [DSP] line 0, event 15 ... 
 [m3vpss ]  8048: SYSTEM: Notify register to [HOST] line 0, event 15 ... 
 [m3video]  8048: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ... 
 [m3vpss ]  8048: SYSTEM: Notify register to [DSP] line 0, event 15 ... 
 [m3video]  8048: SYSTEM: IPC init DONE !!!
 [m3vpss ]  8048: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ... 
 [m3vpss ]  8048: SYSTEM: IPC init DONE !!!
 [c6xdsp ]  5408: SYSTEM: Opening MsgQ Heap [IPC_MSGQ_MSG_HEAP] ...
 [m3video]  8055: MEM: Shared Region 2: Base = 0xb0000000, Length = 0x0e9c0000 (233 MB) 
 [m3vpss ]  8055: MEM: Shared Region 2: Base = 0xb0000000, Length = 0x0e9c0000 (233 MB) 
 [c6xdsp ]  5408: SYSTEM: Creating MsgQ [DSP_MSGQ] ...
 [m3video]  8055: MEM: Shared Region 1: Base = 0x88000000, Length = 0x14a80000 (330 MB) 
 [m3vpss ]  8055: MEM: Shared Region 1: Base = 0x88000000, Length = 0x14a80000 (330 MB) 
 [c6xdsp ]  5408: SYSTEM: Creating MsgQ [DSP_ACK_MSGQ] ...
 [m3video]  8057: SYSTEM  : System Common Init Done !!!
 [m3vpss ]  8057: SYSTEM  : System Common Init Done !!!
 [c6xdsp ]  5409: SYSTEM: Notify register to [HOST] line 0, event 15 ... 
 [m3video]  8057: SYSTEM  : System Video Init in progress !!!
 [m3vpss ]  8057: SYSTEM  : System VPSS Init in progress !!!
 [c6xdsp ]  5409: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ... 
 [m3video]  8057: SYSTEM  : System Video Init Done !!!
 [m3vpss ] === HDVPSS Clocks are enabled ===
 [c6xdsp ]  5409: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ... 
 [m3video]  8058: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_0] in region 0 ...
 [m3vpss ] === HDVPSS is fully functional ===
 [c6xdsp ]  5409: SYSTEM: IPC init DONE !!!
 [m3video]  8058: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_0] in region 0 ...
 [m3vpss ] === HDVPSS module is not in standby ===
 [c6xdsp ]  5411: MEM: Shared Region 2: Base = 0xb0000000, Length = 0x0e9c0000 (233 MB) 
 [m3video]  8058: SYSTEM: ListElem Shared Addr = 0xbf18b680
 [c6xdsp ]  5411: MEM: Shared Region 1: Base = 0x88000000, Length = 0x14a80000 (330 MB) 
 [m3video]  8060: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_1] in region 0 ...
 [c6xdsp ]  5412: SYSTEM  : System Common Init Done !!!
 [m3video]  8060: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_1] in region 0 ...
 [c6xdsp ]  5281: SYSTEM  : System DSP Init in progress !!!
 [m3video]  8060: SYSTEM: ListElem Shared Addr = 0xbf1ae580
 [c6xdsp ]  5281: SYSTEM  : RpeServer_init() done... Ret Val 0!!!
 [c6xdsp ]  5415: SYSTEM: Creating ListMP [DSP_IPC_OUT_19] in region 0 ...
 [c6xdsp ]  5415: SYSTEM: Creating ListMP [DSP_IPC_IN_19] in region 0 ...
 [c6xdsp ]  5415: SYSTEM: ListElem Shared Addr = 0xbf18eb80
 [c6xdsp ]  5416: SYSTEM: Creating ListMP [DSP_IPC_OUT_20] in region 0 ...
 [c6xdsp ]  5416: SYSTEM: Creating ListMP [DSP_IPC_IN_20] in region 0 ...
 [c6xdsp ]  5416: SYSTEM: ListElem Shared Addr = 0xbf1b1a80
 [c6xdsp ]  5417: SYSTEM: Creating ListMP [DSP_IPC_OUT_21] in region 0 ...
 [m3video]  8066: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_19] in region 0 ...
 [m3vpss ] === I2C1 Clk is active ===
 [c6xdsp ]  5417: SYSTEM: Creating ListMP [DSP_IPC_IN_21] in region 0 ...
 [m3video]  8066: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_19] in region 0 ...
 [m3vpss ] PLATFORM: UNKNOWN CPU detected, defaulting to VPS_PLATFORM_CPU_REV_2_0
 [c6xdsp ]  5417: SYSTEM: ListElem Shared Addr = 0xbf1d1700
 [m3video]  8066: SYSTEM: ListElem Shared Addr = 0xbf232e80
 [m3vpss ]  8062: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_0] in region 0 ...
 [c6xdsp ]  5418: SYSTEM: Creating ListMP [DSP_IPC_OUT_24] in region 0 ...
 [m3video]  8068: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_20] in region 0 ...
 [m3vpss ]  8062: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_0] in region 0 ...
 [c6xdsp ]  5418: SYSTEM: Creating ListMP [DSP_IPC_IN_24] in region 0 ...
 [m3video]  8068: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_20] in region 0 ...
 [m3vpss ]  8062: SYSTEM: ListElem Shared Addr = 0xbf1f0e80
 [c6xdsp ]  5418: SYSTEM: ListElem Shared Addr = 0xbf1f4380
 [m3video]  8068: SYSTEM: ListElem Shared Addr = 0xbf252880
 [m3vpss ]  8064: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_1] in region 0 ...
 [c6xdsp ]  5419: SYSTEM: Creating ListMP [DSP_IPC_OUT_25] in region 0 ...
 [m3video]  8071: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_21] in region 0 ...
 [m3vpss ]  8064: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_1] in region 0 ...
 [c6xdsp ]  5419: SYSTEM: Creating ListMP [DSP_IPC_IN_25] in region 0 ...
 [m3video]  8071: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_21] in region 0 ...
 [m3vpss ]  8065: SYSTEM: ListElem Shared Addr = 0xbf22f980
 [c6xdsp ]  5419: SYSTEM: ListElem Shared Addr = 0xbf211e80
 [m3video]  8071: SYSTEM: ListElem Shared Addr = 0xbf272280
 [c6xdsp ] !!WARNING.Resource already registered:2
 [c6xdsp ]  5289: SYSTEM  : Initializing Links !!! 
 [c6xdsp ]  5420: SYSTEM  : FREE SPACE : System Heap      = 10268448 B, Mbx = 10240 msgs) 
 [m3vpss ]  8076: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_19] in region 0 ...
 [m3video]  8082: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_24] in region 0 ...
 [m3vpss ]  8076: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_19] in region 0 ...
 [c6xdsp ]  5303: SYSTEM  : Initializing Links ... DONE !!! 
 [m3vpss ]  8076: SYSTEM: ListElem Shared Addr = 0xbf291c80
 [m3vpss ]  8078: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_20] in region 0 ...
 [c6xdsp ]  5304: SYSTEM  : System DSP Init Done !!!
 [m3vpss ]  8079: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_20] in region 0 ...
 [m3vpss ]  8079: SYSTEM: ListElem Shared Addr = 0xbf2b1680
 [m3vpss ]  8081: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_21] in region 0 ...
 [m3vpss ]  8081: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_21] in region 0 ...
 [m3vpss ]  8081: SYSTEM: ListElem Shared Addr = 0xbf2d1080
 [m3video]  8082: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_24] in region 0 ...
 [m3vpss ]  8083: SYSTEM : HDVPSS Drivers Version: HDVPSS_01_00_01_37
 [m3video]  8082: SYSTEM: ListElem Shared Addr = 0xbf2f0a80
 [m3vpss ]  8083: SYSTEM  : FVID2 Init in progress !!!
 [m3video]  8084: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_25] in region 0 ...
 [m3video]  8084: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_25] in region 0 ...
 [m3video]  8084: SYSTEM: ListElem Shared Addr = 0xbf30e580
 [m3video]  8086: HDVICP: Doing PRCM for IVAHD[0] ... 
 [m3video]  8086: HDVICP: PRCM for IVAHD[0] ... DONE.
 [m3video]  8086: HDVICP: Doing PRCM for IVAHD[1] ... 
 [m3video]  8086: HDVICP: PRCM for IVAHD[1] ... DONE.
 [m3video]  8086: HDVICP: Doing PRCM for IVAHD[2] ... 
 [m3video]  8087: HDVICP: PRCM for IVAHD[2] ... DONE.
 [m3video]  8087: SYSTEM  : Initializing Links !!! 
 [m3video]  8087: SYSTEM  : FREE SPACE : System Heap      = 6280232 B, Mbx = 10240 msgs) 
 [m3video]  8087: SYSTEM  : FREE SPACE : SR0 Heap         = 13452672 B (12 MB) 
 [m3video]  8087: SYSTEM  : FREE SPACE : Frame Buffer     = 245104512 B (233 MB) 
 [m3video]  8088: SYSTEM  : FREE SPACE : Bitstream Buffer = 346554240 B (330 MB) 
 [m3video]  8088: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 [m3vpss ]  8139: SYSTEM  : FVID2 Init in progress DONE !!!
 [m3video]  8088: SYSTEM  : FREE SPACE : Tiler 8-bit      = 134217728 B (128 MB)  - TILER ON 
 [m3vpss ]  8139: SYSTEM  : Device Init in progress !!!
 [m3video]  8089: SYSTEM  : FREE SPACE : Tiler 16-bit     = 134217728 B (128 MB)  - TILER ON 
 [m3vpss ] initPrms.isI2cInitReq = 0
 [m3video]  8110: SYSTEM  : Initializing Links ... DONE !!! 
 [m3vpss ] initPrms.isI2cInitReq = 0
 [m3vpss ]  8142: SYSTEM  : Device Init in progress DONE !!!
 [m3vpss ]  8263: SYSTEM  : System VPSS Init Done !!!
 [m3vpss ]  8263: UTILS: DMA: HWI Create for INT63 !!!
 [m3vpss ]  8263: SYSTEM  : Initializing Links !!! 
 [m3vpss ]  8263: SYSTEM  : FREE SPACE : System Heap      = 13112 B, Mbx = 10240 msgs) 
 [m3vpss ]  8264: SYSTEM  : FREE SPACE : SR0 Heap         = 13452672 B (12 MB) 
 [m3vpss ]  8264: SYSTEM  : FREE SPACE : Frame Buffer     = 240794496 B (229 MB) 
 [m3vpss ]  8264: SYSTEM  : FREE SPACE : Bitstream Buffer = 346554240 B (330 MB) 
 [m3vpss ]  8264: SYSTEM  : FREE SPACE : Tiler 8-bit      = 134217728 B (128 MB)  - TILER ON 
 [m3vpss ]  8264: SYSTEM  : FREE SPACE : Tiler 16-bit     = 134217728 B (128 MB)  - TILER ON 
 [m3vpss ]  8348: SYSTEM  : Initializing Links ... DONE !!! 
 [m3vpss ] Received character 's'
 [m3vpss ]  8348: SYSTEM  : Set Static L3 pressure for HDVPSS as High
 [c6xdsp ] Remote Debug Shared Memory @ 0xbf000000
 [m3video] Remote Debug Shared Memory @ 0xbf005020
 [m3vpss ] Remote Debug Shared Memory @ 0xbf00a040
 [m3video] Received character 's'
 [c6xdsp ] Remote Debug Shared Memory @ 0xbf000000
 [m3video] Remote Debug Shared Memory @ 0xbf005020
 [m3vpss ] Remote Debug Shared Memory @ 0xbf00a040
 [c6xdsp ] Received character 's'
/mnt/opt/dvr_rdk/ti816x
 
 ORG 0x46c00524: 0
 NEW 0x46c00524: 2
 
ATsha204 -1.0
check success
 0: SYSTEM: System Common Init in progress !!!
 0: SYSTEM: IPC init in progress !!!
 18: SYSTEM: Opening MsgQ Heap [IPC_MSGQ_MSG_HEAP] ...
 20: SYSTEM: Creating MsgQ [HOST_MSGQ] ...
 21: SYSTEM: Creating MsgQ [HOST_ACK_MSGQ] ...
 22: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
 23: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
 23: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 24: SYSTEM: Notify register to [DSP] line 0, event 15 ... 
 25: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ... 
 25: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ... 
 26: SYSTEM: IPC init DONE !!!
 27: SYSTEM: Creating ListMP [HOST_IPC_OUT_24] in region 0 ...
 29: SYSTEM: Creating ListMP [HOST_IPC_IN_24] in region 0 ...
 30: SYSTEM: ListElem Shared Addr = 0x4085c080
 32: SYSTEM: Creating ListMP [HOST_IPC_OUT_25] in region 0 ...
 34: SYSTEM: Creating ListMP [HOST_IPC_IN_25] in region 0 ...
 36: SYSTEM: ListElem Shared Addr = 0x40879b80
 38: SYSTEM: Creating ListMP [HOST_IPC_OUT_19] in region 0 ...
 40: SYSTEM: Creating ListMP [HOST_IPC_IN_19] in region 0 ...
 41: SYSTEM: ListElem Shared Addr = 0x40897680
 43: SYSTEM: Creating ListMP [HOST_IPC_OUT_20] in region 0 ...
 45: SYSTEM: Creating ListMP [HOST_IPC_IN_20] in region 0 ...
 46: SYSTEM: ListElem Shared Addr = 0x408b7080
 47: SYSTEM: Creating ListMP [HOST_IPC_OUT_21] in region 0 ...
 49: SYSTEM: Creating ListMP [HOST_IPC_IN_21] in region 0 ...
 51: SYSTEM: ListElem Shared Addr = 0x408d6a80
 68: SYSTEM: System Common Init Done !!!
sii9233 init start
sii9233 init done
MDIN325 Init Done!
pcie video channel Init Done!

 1734: CHAINS  : CPU Revision [ES2.0] !!! 

 1734: CHAINS  : Detected [UNKNOWN] Board !!! 

 1734: CHAINS  : Base Board Revision [REV A] !!! 


 [host]  1958: IPC_FRAMES_OUT   : Create in progress !!!


 [host]  1959: IPC_FRAMES_OUT   : Create Done !!!
 [m3vpss ]  13177: CAPTURE: Create in progress !!!
 [m3vpss ]  13208: CAPTURE: VIP0 PortA capture mode is [ 8-bit, Non-mux Discrete Sync - ACTVID_VSYNC] !!! 
 [m3vpss ] CAPTURE:Create args numBufsPerCh[4] < min[6]Overriding create args
 [m3vpss ]  13261: CAPTURE: VIP0 PortB capture mode is [ 8-bit, Non-mux Discrete Sync - ACTVID_VSYNC] !!! 
 [m3vpss ]  13314: CAPTURE: VIP1 PortA capture mode is [ 8-bit, Non-mux Discrete Sync - ACTVID_VSYNC] !!! 
 [m3vpss ]  13367: CAPTURE: VIP1 PortB capture mode is [ 8-bit, Non-mux Discrete Sync - ACTVID_VSYNC] !!! 
 [m3vpss ]  13559: CAPTURE: 0: 0xb32b1480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 1: 0xb3473480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 2: 0xb3635480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 3: 0xb37f7480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 4: 0xb39b9480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 5: 0xb3b7b480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 6: 0xb3d3d480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13559: CAPTURE: 7: 0xb3eff480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 8: 0xb40c1480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 9: 0xb4283480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 10: 0xb4445480, 1280 x 720, 001c2000 B --> Extra Frames 


 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40ab1900 To Phy:0xbf581900 Shared:0x481900

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40ade900 To Phy:0xbf5ae900 Shared:0x4ae900

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40b0b900 To Phy:0xbf5db900 Shared:0x4db900

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40b38900 To Phy:0xbf608900 Shared:0x508900 [m3vpss ]  13560: CAPTURE: 11: 0xb4607480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 12: 0xb47c9480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 13: 0xb498b480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 14: 0xb4b4d480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  13560: CAPTURE: 15: 0xb4d0f480, 1280 x 720, 001c2000 B --> Extra Frames 
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 58 (58)


 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40b65900 To Phy:0xbf635900 Shared:0x535900DST:0x0080a8c0,FLAGS:0x00000001,GW:0x00000000,MASK:0x00ffffff
DST:0x00000000,FLAGS:0x00000003,GW:0xfe80a8c0,MASK:0x00000000

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40b92900 To Phy:0xbf662900 Shared:0x562900

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40bbf900 To Phy:0xbf68f900 Shared:0x58f900

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40bec900 To Phy:0xbf6bc900 Shared:0x5bc900

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40c19900 To Phy:0xbf6e9900 Shared:0x5e9900 [m3vpss ] CAPTURE::HEAPID:0        USED:992
 [m3vpss ] CAPTURE::HEAPID:4    USED:78336000
 [m3vpss ]  13561: CAPTURE: Create Done !!!


 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40c46900 To Phy:0xbf716900 Shared:0x616900DST:0x0080a8c0,FLAGS:0x00000001,GW:0x00000000,MASK:0x00ffffff
DST:0x00000000,FLAGS:0x00000003,GW:0xfe80a8c0,MASK:0x00000000


 [host]  2389: IPC_BITS_OUT   : Create in progress !!!
###Bit buff of size from the SR # 1 : 33177600


 [host] IPC_BITSOUT:BitBuffer Alloc.PoolID:0,Size:0x1FA4000

 [host] IPCBITSOUTLINK:Translated Addr Virt:0x41754d80 To Phy:0x88160d80

 [host]  2390: IPC_BITS_OUT   : Create Done !!!
 [m3video]  13607: IPC_BITS_IN   : Create in progress !!!
 [m3video]  13608: SYSTEM: Opening ListMP [HOST_IPC_OUT_24] ...
 [m3video]  13608: SYSTEM: Opening ListMP [HOST_IPC_IN_24] ...
 [m3video]  13609: SYSTEM: Opening MsgQ [HOST_MSGQ] ...
 [m3video]  13611: IPC_BITS_IN   : Create Done !!!
 [m3video]  13612: DECODE: Create in progress ... !!!
 [m3vpss ]  13759: IPC_IN_M3   : Create in progress !!!
 [m3video] DECLINK_H264:HEAPID:0        USED:4264
 [m3vpss ]  13760: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_0] ...
 [m3video] DECLINK_H264:HEAPID:3        USED:29274112
 [m3vpss ]  13760: SYSTEM: Opening ListMP [VIDEO-M3_IPC_IN_0] ...
 [m3video]  13754: DECODE: Creating CH0 of 1920 x 1080 [PROGRESSIVE] [TILED      ],target bitrate = 1000 Kbps ... 
 [m3vpss ]  13761: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
 [m3video]  13755: DECODE: All CH Create ... DONE !!!
 [m3vpss ]  13762: IPC_IN_M3   : Create Done !!!
 [m3vpss ]  13763: SWMS: Create in progress !!!
 [m3video] DECLINK:HEAPID:0     USED:4384
 [m3video] DECLINK:HEAPID:3     USED:29274112
 [m3video]  13757: DECODE: Create ... DONE !!!
 [m3video]  13758: IPC_OUT_M3   : Create in progress !!!
 [m3video]  13758: IPC_OUT_M3   : Create Done !!!
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 59 (59)
 [m3vpss ] SWMS: instance 0, sc id 6, start win 0 end win 17
 [m3vpss ]  13810: SWMS    : VipScReq is FALSE!!!
 [m3vpss ]  13813: SWMS3    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  13813: SWMS3    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  13813: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ]  
 [m3vpss ]  13832: SWMS    : ******* Configuring clock 16 secs... 
 [m3vpss ]  13832: SWMS3    : Loading Vertical Co-effs (10/16)x ... 
 [m3vpss ]  13832: SWMS3    : Loading Horizontal Co-effs (11/16)x ... 
 [m3vpss ]  13832: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ]  
 [m3vpss ]  *** [SWMS3] Mosaic Parameters *** 
 [m3vpss ]  
 [m3vpss ]  Output FPS: 60
 [m3vpss ]  
 [m3vpss ]  Win | Ch  | Input      | Input          | Input         | Input       | Output     |  Output         | Output        | Output      | Low Cost | SWMS | Data  | Blank |
 [m3vpss ]  Num | Num | Start X, Y | Width x Height | Pitch Y / C   | Memory Type | Start X, Y |  Width x Height | Pitch Y / C   | Memory Type | ON / OFF | Inst | Format| Frame |
 [m3vpss ]  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [m3vpss ]    0 |   0 |    0,    0 |  1920 x   1080 | 16384 / 32768 | TILED       |    0,    0 |  1280 x    720 |  2560 /      0 | NON-TILED   |      ON  |    0 |  420SP |   OFF |
 [m3vpss ]  
 [c6xdsp ]  11294: IPC_FRAMES_IN   : Create in progress !!!
 [c6xdsp ]  11294: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_19] ...
 [m3vpss ] SWMS:HEAPID:0        USED:360
 [c6xdsp ]  11294: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_19] ...
 [m3vpss ] SWMS:HEAPID:1        USED:19360
 [c6xdsp ]  11295: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 [m3vpss ] SWMS:HEAPID:4        USED:9216000
 [m3vpss ]  13834: SWMS: Create Done !!!
 [m3vpss ]  13835: IPC_FRAMES_IN   : Create in progress !!!
 [m3vpss ]  13835: SYSTEM: Opening ListMP [HOST_IPC_OUT_19] ...
 [m3vpss ]  13835: SYSTEM: Opening ListMP [HOST_IPC_IN_19] ...
 [m3vpss ]  13837: SYSTEM: Opening MsgQ [HOST_MSGQ] ...
 [m3vpss ] IPC_FRAMES_IN:HEAPID:0       USED:304
 [c6xdsp ] IPC_FRAMES_IN:HEAPID:0       USED:304
 [m3vpss ]  13839: IPC_FRAMES_IN   : Create Done !!!
 [c6xdsp ]  11296: IPC_FRAMES_IN   : Create Done !!!
 [m3vpss ]  13840: MERGE   : Create Done !!!
 [c6xdsp ]  11298: ALG : Create in progress !!!
 [m3vpss ]  13841: IPC_FRAMES_OUT   : Create in progress !!!
 [c6xdsp ]  11305: ALG : Create Done !!!
 [m3vpss ]  13843: IPC_FRAMES_OUT   : Create Done !!!
 [m3vpss ]  13860: DUP   : Create Done !!!
 [m3vpss ]  13860: SWMS: Create in progress !!!
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 60 (60)
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 61 (61)
 [m3vpss ] SWMS: instance 0, sc id 6, start win 0 end win 2
 [m3vpss ]  13962: SWMS    : VipScReq is FALSE!!!
 [m3vpss ]  13963: SWMS0    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  13963: SWMS0    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  13963: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ] SWMS: instance 1, sc id 7, start win 3 end win 20
 [m3vpss ]  13963: SWMS    : VipScReq is FALSE!!!
 [m3vpss ]  13967: SWMS0    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  13967: SWMS0    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  13967: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ]  
 [m3vpss ]  13986: SWMS    : ******* Configuring clock 33 secs... 
 [m3vpss ]  13986: SWMS0    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  13986: SWMS0    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  13986: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ]  
 [m3vpss ]  *** [SWMS0] Mosaic Parameters *** 
 [m3vpss ]  
 [m3vpss ]  Output FPS: 30
 [m3vpss ]  
 [m3vpss ]  Win | Ch  | Input      | Input          | Input         | Input       | Output     |  Output         | Output        | Output      | Low Cost | SWMS | Data  | Blank |
 [m3vpss ]  Num | Num | Start X, Y | Width x Height | Pitch Y / C   | Memory Type | Start X, Y |  Width x Height | Pitch Y / C   | Memory Type | ON / OFF | Inst | Format| Frame |
 [m3vpss ]  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [m3vpss ]    0 |   3 |    0,    0 |  1280 x    360 |  5120 /  5120 | NON-TILED   |    0,    0 |  1280 x    720 |  3840 /      0 | NON-TILED   |      ON  |    0 |  422I  |   OFF |
 [m3vpss ]    1 |   1 |    0,    0 |  1280 x    360 |  5120 /  5120 | NON-TILED   | 1280,    0 |   640 x    360 |  3840 /      0 | NON-TILED   |      ON  |    0 |  422I  |   OFF |
 [m3vpss ]    2 |   2 |    0,    0 |  1280 x    360 |  5120 /  5120 | NON-TILED   | 1280,  360 |   640 x    360 |  3840 /      0 | NON-TILED   |      ON  |    0 |  422I  |   OFF |
 [m3vpss ]    3 |   0 |    0,    0 |  1280 x    360 |  5120 /  5120 | NON-TILED   |    0,  720 |   640 x    360 |  3840 /      0 | NON-TILED   |      ON  |    1 |  422I  |   OFF |
 [m3vpss ]    4 |   4 |    0,    0 |  1280 x    720 |  2560 /     0 | NON-TILED   |  640,  720 |   640 x    360 |  3840 /      0 | NON-TILED   |      OFF |    1 |  422I  |   OFF |
 [m3vpss ]    5 |   5 |    0,    0 |  1280 x    360 |  5120 /     0 | NON-TILED   | 1280,  720 |   640 x    360 |  3840 /      0 | NON-TILED   |      ON  |    1 |  422I  |   OFF |
 [m3vpss ]  
 [c6xdsp ]  11450: ALG : Create in progress !!!
 [m3vpss ] SWMS:HEAPID:0        USED:792
 [m3vpss ] SWMS:HEAPID:1        USED:19696
 [c6xdsp ] ALGLINK:HEAPID:0     USED:2616
 [m3vpss ] SWMS:HEAPID:4        USED:20736000
 [c6xdsp ] ALGLINK:HEAPID:1     USED:12304
 [m3vpss ]  13989: SWMS: Create Done !!!
 [c6xdsp ]  11458: ALG : Create Done !!!
 [m3vpss ]  13990: IPC_FRAMES_OUT   : Create in progress !!!
 [m3vpss ]  13992: IPC_FRAMES_OUT   : Create Done !!!
 [m3vpss ]  14011: DUP   : Create Done !!!
 [m3vpss ]  14011: DISPLAY: Create in progress !!!
 [m3vpss ]  14012: DISPLAY: Create Done !!!
 [m3vpss ]  14012: SWMS: Create in progress !!!
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 62 (62)
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 63 (63)
 [m3vpss ] SWMS: instance 0, sc id 6, start win 0 end win 2
 [m3vpss ]  14086: SWMS    : VipScReq is FALSE!!!
 [m3vpss ]  14087: SWMS1    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  14087: SWMS1    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  14087: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ] SWMS: instance 1, sc id 7, start win 3 end win 20
 [m3vpss ]  14087: SWMS    : VipScReq is FALSE!!!
 [m3vpss ]  14090: SWMS1    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  14090: SWMS1    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  14090: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ]  
 [m3vpss ]  14109: SWMS    : ******* Configuring clock 16 secs... 
 [m3vpss ]  14109: SWMS1    : Loading Vertical Co-effs (UPSCALE)x ... 
 [m3vpss ]  14109: SWMS1    : Loading Horizontal Co-effs (UPSCALE)x ... 
 [m3vpss ]  14109: SWMS    : Co-effs Loading ... DONE !!!
 [m3vpss ]  
 [m3vpss ]  *** [SWMS1] Mosaic Parameters *** 
 [m3vpss ]  
 [m3vpss ]  Output FPS: 60
 [m3vpss ]  
 [m3vpss ]  Win | Ch  | Input      | Input          | Input         | Input       | Output     |  Output         | Output        | Output      | Low Cost | SWMS | Data  | Blank |
 [m3vpss ]  Num | Num | Start X, Y | Width x Height | Pitch Y / C   | Memory Type | Start X, Y |  Width x Height | Pitch Y / C   | Memory Type | ON / OFF | Inst | Format| Frame |
 [m3vpss ]  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [m3vpss ]    0 |   4 |    0,    0 |  1280 x    720 |  2560 /     0 | NON-TILED   |    0,    0 |  1280 x    720 |  2560 /      0 | NON-TILED   |      OFF |    0 |  422I  |   OFF |
 [m3vpss ]  
 [m3vpss ] SWMS:HEAPID:0        USED:792
 [m3vpss ] SWMS:HEAPID:1        USED:16176
 [m3vpss ] SWMS:HEAPID:4        USED:14745600
 [m3vpss ]  14111: SWMS: Create Done !!!
 [m3vpss ]  14114: DUP   : Create Done !!!
 [m3vpss ]  14115: DISPLAY: Create in progress !!!
 [m3vpss ]  14115: DISPLAY: Create Done !!!
 [m3vpss ]  14117: MERGE   : Create Done !!!
 [m3vpss ]  14120: DUP   : Create Done !!!
 [m3vpss ]  14121: SELECT: OUT QUE0: OUT CH0: IN CH4: 1280 x 720, pitch = (2560, 0) [PROGRESSIVE] [NON-TILED  ]
 [m3vpss ]  14121: SELECT: OUT QUE0: OUT CH1: IN CH6: 1920 x 1080, pitch = (3840, 0) [PROGRESSIVE] [NON-TILED  ]
 [m3vpss ]  14122: SELECT   : Create Done !!!
 [m3vpss ]  14122: SELECT: OUT QUE0: OUT CH0: IN CH6: 1920 x 1080, pitch = (3840, 0) [PROGRESSIVE] [NON-TILED  ]
 [m3vpss ]  14123: SELECT   : Create Done !!!
 [m3vpss ]  14123: SCLR: Create in progress !!!
 [m3vpss ]  14144: SCLR    : Loading Up-scaling Co-effs ... 
 [m3vpss ]  14144: SCLR    : Co-effs Loading ... DONE !!!
 [m3vpss ] SCLR:HEAPID:0        USED:64
 [m3vpss ] SCLR:HEAPID:1        USED:5952
 [m3vpss ] SCLR:HEAPID:4        USED:4147200
 [m3vpss ]  14144: SCLR: Create Done !!!
 [m3vpss ]  14145: SELECT: OUT QUE0: OUT CH0: IN CH3: 1280 x 720, pitch = (2560, 2560) [PROGRESSIVE] [NON-TILED  ]
 [m3vpss ]  14145: SELECT   : Create Done !!!
 [m3vpss ]  14147: MERGE   : Create Done !!!
 [m3vpss ]  14147: SELECT: OUT QUE0: OUT CH0: IN CH6: 1920 x 1080, pitch = (3840, 0) [PROGRESSIVE] [NON-TILED  ]
 [m3vpss ]  14148: SELECT   : Create Done !!!
 [m3vpss ]  14148: SWMS: Create in progress !!!
 [m3vpss ]  14169: Assertion @ Line: 103 in links_m3vpss/swMs/swMsLink_drv.c: status==FVID2_SOK : failed !!!


2954:!!!SLAVE CORE [VPSS-M3] DOWN!!!
SystemLink_copySlaveCoreExceptionContext:146
mmap of [0xbe9e0000:36864]
mmap virt addresss:0x4006b000
munmap of [0x4006b000:36864]
SystemLink_copySlaveCoreExceptionContext:153


But if I used 3 Swms LINK, SYSTEM_LINK_ID_SW_MS_MULTI_INST_0, SYSTEM_LINK_ID_SW_MS_MULTI_INST_1 are required, then select one from SYSTEM_LINK_ID_SW_MS_MULTI_INST_2 and SYSTEM_LINK_ID_SW_MS_MULTI_INST_3(of course if one SwmsLINK is removed, relative branch will be removed completely), it works properly.

How can I fixed this issue?

Best Regards!