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.

After we plug one more 720P60 camera,the live555 server in dm8168 will be unnormal.Why?

Hello,TI man!

We use live555 to be a live stream server in our dm8168 custom board.

And when we plug three 720P60 camera,and send 3 720P60 video/audio mix stream.The video in VLC is normal.

But when we plug FOUR 720P60 HD camera,and send same 3720P60 video/audio mix stream(2 Cam Stream and 1 Multiviewer).The Video in VLC is not smooth.

What may cause this problem?More Camera will lag the Softmosaic?

We use DVRRDK 3.0.

Thanks for any reply.

  • When you say plug four streams but only send 3 streams what does it mean.Is the 816x receiving 4 channels but decoding only 3 streams ?

    1.Ensure the transmiting source is not the problem.If VLC is not smooth it indicates problem with the IPNC source unable to handle multicast of 4 channels 720P.

    2. Check A8 load on 816x using mpstat (prints average load) to check loading is not greater than 90%.If issue is A8 load on 816x you have to migrate to RDK 4.0 release where are there are a number of optimizations to reduce load

    3. Check stats under /proc/net/dev on 816x to check if packet loss is happening.

    4. Check with using UDP instead of TCP and check if you start seeing decoding artifacts and decoder errors.

    5. Try storing the stream to a file on hdd and playback the 4 ch 720P stream using decode display demo. If you still see some issue share the logs of Vsys_printDetailedStatistics

     

     

  • So sorry for my bad description.

    Plug three 720P60 camera,I mean that dm8168 connects to THREE CAMERA through vip port,not through ethernet from ipnc source.

  • Pls attach your usecase file where you create and connect the links and logs of Vsys_printDetailedStatistics. When you plugin 4 channels and stream only 3 channels what happens to the fourth channel ? Are you disabling encoding of the fourth channel ? I

  • /************************************************************************************
    *   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:																		*
    ************************************************************************************/
    
    
    #define yrpchaineslink
    
    #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/ControllingInterface.h>
    #include <demos/link_api_demos/vpss_chains/demo_text.h>
    #include <mcfw/interfaces/link_api/system_common.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;
    
      Ptr               osdWinSrAddr[16][2];
      Ptr               osdWinBuPtr[16][2];
      Ptr               osdWinSrAddr1[2][3];
      Ptr               osdWinBuPtr1[2][3];
    
    static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl =
    {
        .isPopulated = 1,
        .ivaMap[0] =
        {
            .EncNumCh  = 0,
            .EncChList = {0},
            .DecNumCh  = 2,
            .DecChList = {0, 1},
        },
        .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;
    
    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;
    MergeLink_CreateParams				esmergePrm2;
    SelectLink_CreateParams				esselPrm2;
    NullLink_CreateParams				esnullPrm0;
    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 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 esmergeId2;
    UInt32 esselId2;
    UInt32 esnullId0;
    UInt32 esswMsId2;
    UInt32 esdisplayId2;
    UInt32 esnsfId0;
    UInt32 esipcOutVpssId0;
    UInt32 esipcInVideoId0;
    UInt32 esencId0;
    UInt32 esipcBitsOutVideoId0;
    UInt32 esipcBitsInHostId0;
    
    
    void Demo_updateTime(int signo)
    {
        static struct tm tmCur;
        time_t timeval;
        char osdStr[40];
        Int32 chId;
        AlgLink_OsdWindowPrm TimeWindowPrm;
        for(chId = 0; chId < GetCameraNum(&channels) ;chId ++)
        {
            switch(signo)
            {
                case SIGALRM:
                    time(&timeval);
                    localtime_r(&timeval, &tmCur);
                    //update time every time
                    sprintf(osdStr,"%02d:%02d:%02d",tmCur.tm_hour,tmCur.tm_min,tmCur.tm_sec);
            	    osdDrawText(osdStr,font,(char*)osdWinBuPtr[chId][0],
            			&TimeWindowPrm,TRUE);
                    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 font1 = {
              	        SYSTEM_DF_YUV422I_YUYV,
              	        {100,32},
              	        FONTSIZE24_24_16,
              	        WHITE,
              	        TRANSPARENTBACKGROUND,
              	        720
              	    };
        OSD_WinTextInfoM font2 = {
              	        SYSTEM_DF_YUV422I_YUYV,
              	        {400,96},
              	        FONTSIZE32_32_16,
              	        PURPLE,
              	        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();
    
    #define yruppppppdpfpd
    
        IPCBitsOutDataStructInit(&ipc_ctrl);
        IPCBitsOutCoreThreadsStart(&ipc_ctrl);
    //    PeripheralGetStreamsStart();
    /*    if((pChannels->hChannelList[CHANNEL_CLS_STREAM]->body.sum) != 0)
        {
            startAudioDecPla(pChannels->hAudio);
        }//*/
    
    
        IPCBitsInDataStructInit(&ipc_ctrl);
        IPCBitsEnvironmentInit(&ipc_ctrl);
        PeripheralProcessEncodedDataStart();
        IPCBitsInCoreCopyThreadsStart();
    
        //////////////////////////////////////////////////////////////////////////////////////////////////////
    
        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(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,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;
    
        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;
        esmergeId2			= SYSTEM_VPSS_LINK_ID_MERGE_2;
        esselId2              = SYSTEM_VPSS_LINK_ID_SELECT_2;
        esnullId0				= SYSTEM_VPSS_LINK_ID_NULL_0;
        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);
        SwMsLayoutInit();
    
        //////////////////////////////////////////////////////////////////////////////////////////////////////
    
        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    = esmergeId0;
        esipcInVpssPrm0.notifyNextLink              = TRUE;
        esipcInVpssPrm0.notifyPrevLink              = TRUE;
        esipcInVpssPrm0.noNotifyMode                = FALSE;
    
        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                   = 0;
        esipcFramesOutHostPrm0.inQueInfo.chInfo[0].codingformat                = 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;//
        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             = 16;
        escapturePrm.numExtraBufs             = 0;
        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 ++)
        {
            //vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA + 2 * 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));
    
        /*    for (i=0; i<chainsCfg->chNum; i++)
        {
        	chainsCfg->chCfg[chainsCfg->streamNum+i].inStd = capturePrm.vipInst[i].standard;
        	Vsys_getStdSize(chainsCfg->chCfg[chainsCfg->streamNum+i].inStd,
        			&chainsCfg->chCfg[chainsCfg->streamNum+i].inWidth,
        			&chainsCfg->chCfg[chainsCfg->streamNum+i].inHeight);
        	Vsys_getStdRate(chainsCfg->chCfg[chainsCfg->streamNum+i].inStd,
        			&chainsCfg->chCfg[chainsCfg->streamNum+i].inFrameRate);
        }//*/
    
        //////////////////////////////////////////////////////////////////////////////////////////////////////
    
        esmergePrm0.numInQue                       = 3;
        esmergePrm0.inQueParams[0].prevLinkId      = esipcInVpssId0;
        esmergePrm0.inQueParams[0].prevLinkQueId   = 0;
        esmergePrm0.inQueParams[1].prevLinkId      = esipcFramesInVpssId0;
        esmergePrm0.inQueParams[1].prevLinkQueId   = 0;
        esmergePrm0.inQueParams[2].prevLinkId      = escaptureId;
        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;
    /*
        for(chId = 0; chId < GetCameraNum(pChannels); chId++)
        {
            char cnExample[20] = "Camera:";
            char channel[6];
            length = strlen(cnExample);
            sprintf(channel,"%2d",chId);
            font = font1;
            cnExample[length++] = channel[0];
            cnExample[length++] = channel[1];
            esosdPrm0.osdChCreateParams[chId].maxWidth    = CHAINS_OSD_WIN_MAX_WIDTH;
            esosdPrm0.osdChCreateParams[chId].maxHeight   = CHAINS_OSD_WIN_MAX_HEIGHT;
    
            AlgLink_OsdChWinParams * chWinPrm       = &esosdPrm0.osdChCreateParams[chId].chDefaultParams;
            chWinPrm->chId                          = chId;
            chWinPrm->numWindows                    = CHAINS_OSD_NUM_WINDOWS;
            chWinPrm->colorKey[0]                   = 0x60;
            chWinPrm->colorKey[1]                   = 0x60;
            chWinPrm->colorKey[2]                   = 0x60;
    
            for(winId=0; winId < 2; winId++)
            {
            	 chWinPrm->winPrm[winId].transperencyEnable = CHAINS_OSD_TRANSPARENCY;
            	 chWinPrm->winPrm[winId].enableWin          = CHAINS_OSD_ENABLE_WIN;
                 chWinPrm->winPrm[winId].globalAlpha        = CHAINS_OSD_GLOBAL_ALPHA;
    
                 if(winId != 0)
                 {
                	 //font.winposition.StartY        += (chWinPrm->winPrm[winId-1].height + 20);
                	 font.winposition = OSDposition[3];
                 }
                 Chains_createBuf(&chWinPrm->winPrm[winId].addr[0][0],
            	                   &osdWinBuPtr[chId][winId], &osdWinSrAddr[chId][winId],
            	                   MAX_YUVBUF_SIZE,SYSTEM_IPC_SR_CACHED);
                 if(winId == 0)
                 {
                    osdDrawText("00:00:00",font,(char*)osdWinBuPtr[chId][0],&chWinPrm->winPrm[0],TRUE);
                	//osdDrawText(cnExample,font,(char*)osdWinBuPtr[chId][winId],&chWinPrm->winPrm[winId],TRUE);
                 }
                 else if(winId == 1)
                 {
                	 osdDrawText(cnExample,font,(char*)osdWinBuPtr[chId][winId],&chWinPrm->winPrm[winId],TRUE);
                 }
                 else if((winId!=0))
                 {
                	 chWinPrm->winPrm[winId].globalAlpha          = 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  ///////////////////////////////////////////////////////////////////////////////
    
        esdupPrm2.inQueParams.prevLinkId		=	esipcFramesOutVpssId0;
        esdupPrm2.inQueParams.prevLinkQueId		=	0;
        esdupPrm2.numOutQue						=	3;
        esdupPrm2.outQueParams[0].nextLink		=	esswMsId[0];
        esdupPrm2.outQueParams[1].nextLink		=	esswMsId[1];
        esdupPrm2.outQueParams[2].nextLink		=	esmergeId1;
        esdupPrm2.notifyNextLink				=	TRUE;
    
        //////////////////////////////////////////////////  O  S  D  //////////////////////////////////////////////////////////////////////////
    
        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             = FALSE;
        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               = FALSE;
        esipcFramesInDspPrm1.baseCreateParams.notifyNextLink               = TRUE;
    
        esosdPrm1.enableOSDAlg                     = TRUE;
        esosdPrm1.enableSCDAlg                     = FALSE;
        esosdPrm1.inQueParams.prevLinkId           = esipcFramesInDspId1;
        esosdPrm1.inQueParams.prevLinkQueId        = 0;
        for(chId = 0; chId < 2; 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                    = 3;
            chWinPrm1->colorKey[0]                   = 0x60;
            chWinPrm1->colorKey[1]                   = 0x60;
            chWinPrm1->colorKey[2]                   = 0x60;
            for(winId = 0; winId < chWinPrm1->numWindows ;winId++)
            {
            	chWinPrm1->winPrm[winId].transperencyEnable = CHAINS_OSD_TRANSPARENCY;
       	        chWinPrm1->winPrm[winId].enableWin          = FALSE;
                Chains_createBuf(&chWinPrm1->winPrm[winId].addr[0][0],
       	                   &osdWinBuPtr1[chId][winId], &osdWinSrAddr1[chId][0],
       	                   MAX_YUVBUF_SIZE,SYSTEM_IPC_SR_CACHED/*SYSTEM_IPC_SR_NON_CACHED_DEFAULT*/);
            //osdDrawText("�ൺ����A1",swmsFont,(char*)osdWinBuPtr1[chId][0],&chWinPrm1->winPrm[0],FALSE);
            }
        }
    
        //////////////////////////////////////////////////  O  S  D  ///////////////////////////////////////////////////////////////////////////////
    
        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]	 = 1;
    /*    	esswMsPrm[i].swMsInstId[2]         = SYSTEM_SW_MS_SC_INST_VIP0_SC;
        	esswMsPrm[i].swMsInstStartWin[2]	 = 2;//*/
            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      = FALSE;
            esswMsPrm[i].layoutPrm.outputFPS       = pHChannelNode->body.hChannel->entity.swms.frameRate;
            esswMsPrm[i].maxInputQueLen            = 64;
            esswMsPrm[i].maxOutRes                 = pHChannelNode->body.hChannel->entity.swms.std;
            esswMsPrm[i].numOutBuf                 = 256;
            if (0 == i)
            {
            	SwMsSetLayoutParams(esswMsId[i], SWMS_LAYOUT_PATTERN_1PLUS5, &esswMsPrm[i]);
            }
            else if (1 == i)
            {
            	SwMsSetLayoutParams(esswMsId[i], SWMS_LAYOUT_PATTERN_1, &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;
    
    
            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                    = 2;
        esselPrm0.outQueParams[0].nextLink     = esmergeId2;
        esselPrm0.outQueChInfo[0].outQueId     = 0;
        esselPrm0.outQueChInfo[0].numOutCh     = GetRawEncoderNum(pChannels);
        esselPrm0.outQueParams[1].nextLink     = esnullId0;
        esselPrm0.outQueChInfo[1].outQueId     = 1;
        esselPrm0.outQueChInfo[1].numOutCh     = GetChannelsNum(pChannels) - 1 - GetRawEncoderNum(pChannels);
    
    	GetGlobeChannelSelMatrixRawEnc(pChannels, &gChMat);
    
    	for (i=0; i<gChMat.encChNum; i++)
    	{
    		esselPrm0.outQueChInfo[0].inChNum[i] = gChMat.channel[0][i];
    	}
    	for (i=0; i<gChMat.nonencChNum; i++)
    	{
    		esselPrm0.outQueChInfo[1].inChNum[i] = gChMat.channel[1][i];
    	}
    
        esselPrm1.inQueParams.prevLinkId       = esdupId3;
        esselPrm1.inQueParams.prevLinkQueId    = 1;
        esselPrm1.numOutQue                    = 2;
        esselPrm1.outQueParams[0].nextLink     = essclrId0;
        esselPrm1.outQueChInfo[0].outQueId     = 0;
        esselPrm1.outQueChInfo[0].numOutCh     = GetSCEncoderNum(pChannels);
        esselPrm1.outQueParams[1].nextLink     = esnullId0;
        esselPrm1.outQueChInfo[1].outQueId     = 1;
        esselPrm1.outQueChInfo[1].numOutCh     = GetChannelsNum(pChannels) - 1 - 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;
    /*
        essclrPrm0.inQueParams.prevLinkId		         =	esselId1;
        essclrPrm0.inQueParams.prevLinkQueId		     =	0;
        essclrPrm0.outQueParams.nextLink			     =	esmergeId2;
        essclrPrm0.pathId						         =	SCLR_LINK_SC5;
        essclrPrm0.scaleMode                            =  SCLR_SCALE_MODE_RATIO;
        essclrPrm0.outScaleFactor.ratio.widthRatio.numerator		=	1;
        essclrPrm0.outScaleFactor.ratio.widthRatio.denominator	=	2;
        essclrPrm0.outScaleFactor.ratio.heightRatio.numerator		=	1;
        essclrPrm0.outScaleFactor.ratio.heightRatio.denominator	=	2;
        essclrPrm0.inputFrameRate                     = GetChannelFrameRate(GetHCHANNELFromHENCODER(GetHANDLESCEnc(pChannels)));
        essclrPrm0.outputFrameRate                    = GetChannelFrameRate(GetHCHANNELFromHENCODER(GetHANDLESCEnc(pChannels)));
        essclrPrm0.tilerEnable                        = FALSE;
        essclrPrm0.enableLineSkipSc                   = FALSE;//*/
    
        esmergePrm2.numInQue		=	2;
        esmergePrm2.inQueParams[0].prevLinkId		=	esselId0;
        esmergePrm2.inQueParams[0].prevLinkQueId	=	0;
        esmergePrm2.inQueParams[1].prevLinkId		=	essclrId0;
        esmergePrm2.inQueParams[1].prevLinkQueId	=	0;
        esmergePrm2.outQueParams.nextLink			=	esnsfId0;
        esmergePrm2.notifyNextLink	=	TRUE;
    
    	esselPrm2.inQueParams.prevLinkId       = esdupId3;
    	esselPrm2.inQueParams.prevLinkQueId    = 2;
    	esselPrm2.numOutQue                    = 2;
    	esselPrm2.outQueParams[0].nextLink     = esswMsId2;
    	esselPrm2.outQueChInfo[0].outQueId     = 0;
    	esselPrm2.outQueChInfo[0].numOutCh     = 1;
    	esselPrm2.outQueParams[1].nextLink     = esnullId0;
    	esselPrm2.outQueChInfo[1].outQueId     = 1;
    	esselPrm2.outQueChInfo[1].numOutCh     = (GetChannelsNum(pChannels) - 1) - 1;
    
        gChannel		= 0;
        UInt8 selSDChIdx    = 0;
        UInt8 selNonSDChIdx = 0;
        for (gChannel = 0; gChannel <= (GetChannelsNum(pChannels) - 1) - 1; gChannel ++)
        {
        	if (gChannel == pChannels->hChannelList[CHANNEL_CLS_SWMS]->next->next->next->body.hChannel->entity.swms.info.sdChannel)
          	{
        		esselPrm2.outQueChInfo[0].inChNum[selSDChIdx ++] = gChannel;
          	}
           	else
           	{
           		esselPrm2.outQueChInfo[1].inChNum[selNonSDChIdx ++] = gChannel;
           	}
        }
    
        esnullPrm0.numInQue					= 3;
        esnullPrm0.inQueParams[0].prevLinkId	= esselId0;
        esnullPrm0.inQueParams[0].prevLinkQueId= 1;
        esnullPrm0.inQueParams[1].prevLinkId	= esselId1;
        esnullPrm0.inQueParams[1].prevLinkQueId= 1;
        esnullPrm0.inQueParams[2].prevLinkId	= esselId2;
        esnullPrm0.inQueParams[2].prevLinkQueId= 1;
    
        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.swMsInstStartWin[0]	   = 0;
    	esswMsPrm2.swMsInstId[1]             = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
    	esswMsPrm2.swMsInstStartWin[1]	   = 1;//*/
    /*	esswMsPrm2.swMsInstId[2]             = SYSTEM_SW_MS_SC_INST_VIP0_SC;
    	esswMsPrm2.swMsInstStartWin[2]	   = 2;//*/
        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.maxOutRes                 = pHChannelNode->body.hChannel->entity.swms.std;
        esswMsPrm2.numOutBuf                 = 0;
      	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      = GetChannelFrameRate(hChannel);
            esencPrm0.chCreateParams[i].defaultDynamicParams.targetFrameRate     = GetChannelFrameRate(hChannel);
            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   = GetChannelFrameRate(hChannel);
        }
        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(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]));
        }
    
        //Chains_ipcFramesInit();
    
        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(esmergeId2, &esmergePrm2, sizeof(esmergePrm2));
        System_linkCreate(esselId2, &esselPrm2, sizeof(esselPrm2));
        System_linkCreate(esnullId0, &esnullPrm0, sizeof(esnullPrm0));
        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(essclrId0);
            System_linkStart(esnullId0);
            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(esipcInVpssId0);
            System_linkStart(esipcOutVideoId0);
            System_linkStart(esdecId0);
            System_linkStart(esipcBitsInVideoId0);
            System_linkStart(esipcBitsOutHostId0);
            startAudioCapEnc(pChannels);
    
            //////////////////////////////////////////////////////////////////////////////////////////////////////
    
            //swms layout and channel to win mapping adjusting for demo...to be erased latter...
    /*
            SwMsSetLayout(esswMsId[0], SWMS_LAYOUT_PATTERN_1PLUS5, &esswMsPrm[0]);
    
            SwMsMapChtoWin(esswMsId[0], 0, 2, &esswMsPrm[0]);
            SwMsMapChtoWin(esswMsId[0], 1, 3, &esswMsPrm[0]);
            SwMsMapChtoWin(esswMsId[0], 2, 4, &esswMsPrm[0]);
            //SwMsMapChtoWin(esswMsId[0], 3, 5, &esswMsPrm[0]);
            SwMsMapChtoWin(esswMsId[0], 4, 0, &esswMsPrm[0]);
            SwMsMapChtoWin(esswMsId[0], 5, 1, &esswMsPrm[0]);//*/
    
    //        SwMsSwitchChannel(0, FALSE, swMsPrmList);
    //        SwMsSwitchChannel(1, FALSE, swMsPrmList);
    
            //////////////////////////////////////////////////////////////////////////////////////////////////////
    
            while(1)
            {
                ch = Chains_menuRunTime();
                if(ch=='0')
                    break;
                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, 15, 0);
                	UInt32 chId   = Chains_getIntValue("Channel Id : ", 0, 15, 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, 15, 0);
                	UInt32 winid2 = Chains_getIntValue("Window Id 2 : ", 0, 15, 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, 15, 0);
                	UInt32 enable = Chains_getIntValue("On/Off (1/0) : ", 0, 1, 1);
    /*
                	UInt32 dispId;
                	SwMsLink_CreateParams * swMsPrmList[2];
                	for (dispId = 0; dispId < 2; dispId ++)
                	{
                		swMsPrmList[dispId] = &esswMsPrm[dispId];
                	}//*/
    
                	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 == 'b')
                {
                	Chains_prfLoadCalcEnable(1, 0, 0);
                }
                if (ch == 'd')
                {
                	Chains_prfLoadCalcEnable(0, 1, 1);
                }
            }
    
        //////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
            PeripheralProcessEncodedDataStop();
            sleep(1);
    /*
     * Add code to stop ipcbits...
     */
    
            PeripheralGetStreamsStop();
            PutFullOutStop(&ipc_ctrl);
            GetEmptyOutStop(&ipc_ctrl);
    
    
    
            System_linkStop(escaptureId);
            System_linkStop(esipcBitsOutHostId0);
            System_linkStop(esipcBitsInVideoId0);
            System_linkStop(esdecId0);
            System_linkStop(esipcOutVideoId0);
            System_linkStop(esipcInVpssId0);
            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(esmergeId2);
            System_linkStop(esnullId0);
            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(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(esmergeId2);
        System_linkDelete(esnullId0);
        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 attached our code file.

    When we plugin 4 channels,stream only 3 channels,we didn't encode the fourth channel.

  • hello,we found that after we plugin 4channel 720P camera,the m3 codec doesn't send 60 frame h.264 bitstream buffer during one second.it's just about 50 frames h.264 bitstreams,maybe this cause our stream server don't work.

    But,why m3 codec send LESS h.264 biestream buffers??

  • Is this the same usecase you shared the data flow diagram for in another post ? If so pls share the logs of Vsys_printDetailedStatistics when you see the issue.

  • logs as following:

    ===================printDetailedStatistics:==================
    audioCaptureInit done.......
    [m3vpss ]
    [m3vpss ] 99958: LOAD: CPU: 39.0% HWI: 4.5%, SWI:2.6%
    [m3vpss ]
    [m3vpss ] 99958: LOAD: TSK: IPC_OUT_M30 : 1.3%
    [m3vpss ] 99958: LOAD: TSK: IPC_FRAMES_OUT0 : 1.0%
    [m3vpss ] 99960: LOAD: TSK: IPC_FRAMES_OUT1 : 0.6%
    [m3vpss ] 99961: LOAD: TSK: CAPTURE : 6.8%
    [m3vpss ] 99961: LOAD: TSK: NSF0 : 2.1%
    [m3vpss ] 99961: LOAD: TSK: DISPLAY0 : 0.7%
    [m3vpss ] 99961: LOAD: TSK: DISPLAY1 : 0.5%
    [m3vpss ] 99961: LOAD: TSK: DISPLAY2 : 0.2%
    [m3vpss ] 99961: LOAD: TSK: NULL0 : 1.0%
    [m3vpss ] 99961: LOAD: TSK: DUP0 : 0.2%
    [m3vpss ] 99962: LOAD: TSK: DUP1 : 0.4%
    [m3vpss ] 99962: LOAD: TSK: DUP2 : 0.4%
    [m3vpss ] 99962: LOAD: TSK: DUP3 : 1.0%
    [m3vpss ] 99962: LOAD: TSK: Scalar0 : 1.5%
    [m3vpss ] 99962: LOAD: TSK: SWMS0 : 3.1%
    [m3vpss ] 99962: LOAD: TSK: SWMS1 : 2.5%
    [m3vpss ] 99962: LOAD: TSK: SWMS2 : 0.8%
    [m3vpss ] 99963: LOAD: TSK: MERGE0 : 0.2%
    [m3vpss ] 99963: LOAD: TSK: MERGE1 : 0.5%
    [m3vpss ] 99963: LOAD: TSK: MERGE2 : 0.5%
    [m3vpss ] 99963: LOAD: TSK: SELECT0 : 0.8%
    [m3vpss ] 99963: LOAD: TSK: SELECT1 : 0.4%
    [m3vpss ] 99963: LOAD: TSK: SELECT2 : 0.4%
    [m3vpss ] 99964: LOAD: TSK: MISC : 5.0%
    [m3vpss ]
    [m3video]
    [m3video] 100456: LOAD: CPU: 12.8% HWI: 1.4%, SWI:1.3%
    [m3video]
    [m3video] 100456: LOAD: TSK: IPC_IN_M30 : 0.5%
    [m3video] 100456: LOAD: TSK: IPC_BITS_OUT0 : 1.9%
    [m3video] 100456: LOAD: TSK: ENC0 : 2.4%
    [m3video] 100456: LOAD: TSK: DEC0 : 0.5%
    [m3video] 100456: LOAD: TSK: ENC_PROCESS_TSK_1 : 2.2%
    [m3video] 100456: LOAD: TSK: ENC_PROCESS_TSK_2 : 2.1%
    [m3video] 100457: LOAD: TSK: MISC : 0.5%
    [m3video]

    ===================printDetailedStatistics:==================
    14.644190 [ GetEmptyBuffersfromIPCBitsOutHLOSLINK] execute 1800, Get 0 Empty Frames(current 0)
    14.644301 [ PutFullBufferstoIPCBitsOutHLOSLINK] execute 1800, Put 0 Full Frames(current 0)
    16.955857 [ CbFxn_IPCBitsInHLOSLINK] execute 1800
    [m3vpss ]
    [m3vpss ] 109791: LOAD: CPU: 35.0% HWI: 5.2%, SWI:3.0%
    [m3vpss ]
    [m3vpss ] 109791: LOAD: TSK: IPC_OUT_M30 : 1.5%
    [m3vpss ] 109792: LOAD: TSK: IPC_FRAMES_OUT0 : 1.2%
    [m3vpss ] 109792: LOAD: TSK: IPC_FRAMES_OUT1 : 0.7%
    [m3vpss ] 109792: LOAD: TSK: CAPTURE : 1.0%
    [m3vpss ] 109792: LOAD: TSK: NSF0 : 2.6%
    [m3vpss ] 109792: LOAD: TSK: DISPLAY0 : 0.7%
    [m3vpss ] 109792: LOAD: TSK: DISPLAY1 : 0.6%
    [m3vpss ] 109792: LOAD: TSK: DISPLAY2 : 0.2%
    [m3vpss ] 109793: LOAD: TSK: NULL0 : 1.2%
    [m3vpss ] 109793: LOAD: TSK: DUP0 : 0.2%
    [m3vpss ] 109793: LOAD: TSK: DUP1 : 0.4%
    [m3vpss ] 109793: LOAD: TSK: DUP2 : 0.5%
    [m3vpss ] 109793: LOAD: TSK: DUP3 : 1.2%
    [m3vpss ] 109793: LOAD: TSK: Scalar0 : 1.5%
    [m3vpss ] 109793: LOAD: TSK: SWMS0 : 2.4%
    [m3vpss ] 109794: LOAD: TSK: SWMS1 : 1.6%
    [m3vpss ] 109794: LOAD: TSK: SWMS2 : 0.5%
    [m3vpss ] 109794: LOAD: TSK: MERGE0 : 0.3%
    [m3vpss ] 109794: LOAD: TSK: MERGE1 : 0.5%
    [m3vpss ] 109794: LOAD: TSK: MERGE2 : 0.6%
    [m3vpss ] 109795: LOAD: TSK: SELECT0 : 0.9%
    [m3vpss ] 109795: LOAD: TSK: SELECT1 : 0.5%
    [m3vpss ] 109795: LOAD: TSK: SELECT2 : 0.4%
    [m3vpss ] 109796: LOAD: TSK: MISC : 5.6%
    [m3vpss ]
    [m3video]
    [m3video] 110288: LOAD: CPU: 13.4% HWI: 1.6%, SWI:1.5%
    [m3video]
    [m3video] 110288: LOAD: TSK: IPC_IN_M30 : 0.6%
    [m3video] 110288: LOAD: TSK: IPC_BITS_OUT0 : 1.6%
    [m3video] 110288: LOAD: TSK: ENC0 : 2.1%
    [m3video] 110288: LOAD: TSK: DEC0 : 0.5%
    [m3video] 110288: LOAD: TSK: ENC_PROCESS_TSK_1 : 2.5%
    [m3video] 110288: LOAD: TSK: ENC_PROCESS_TSK_2 : 2.4%
    [m3video] 110288: LOAD: TSK: MISC : 0.6%
    [m3video]

    ===================printDetailedStatistics:==================
    29.193220 [ GetEmptyBuffersfromIPCBitsOutHLOSLINK] execute 3600, Get 0 Empty Frames(current 0)
    29.193303 [ PutFullBufferstoIPCBitsOutHLOSLINK] execute 3600, Put 0 Full Frames(current 0)
    [m3vpss ]
    [m3vpss ] 119623: LOAD: CPU: 34.9% HWI: 5.2%, SWI:3.0%
    [m3vpss ]
    [m3vpss ] 119623: LOAD: TSK: IPC_OUT_M30 : 1.5%
    [m3vpss ] 119624: LOAD: TSK: IPC_FRAMES_OUT0 : 1.2%
    [m3vpss ] 119624: LOAD: TSK: IPC_FRAMES_OUT1 : 0.7%
    [m3vpss ] 119624: LOAD: TSK: CAPTURE : 0.9%
    [m3vpss ] 119624: LOAD: TSK: NSF0 : 2.5%
    [m3vpss ] 119624: LOAD: TSK: DISPLAY0 : 0.8%
    [m3vpss ] 119624: LOAD: TSK: DISPLAY1 : 0.6%
    [m3vpss ] 119625: LOAD: TSK: DISPLAY2 : 0.2%
    [m3vpss ] 119625: LOAD: TSK: NULL0 : 1.2%
    [m3vpss ] 119625: LOAD: TSK: DUP0 : 0.2%
    [m3vpss ] 119625: LOAD: TSK: DUP1 : 0.4%
    [m3vpss ] 119625: LOAD: TSK: DUP2 : 0.5%
    [m3vpss ] 119625: LOAD: TSK: DUP3 : 1.2%
    [m3vpss ] 119625: LOAD: TSK: Scalar0 : 1.5%
    [m3vpss ] 119626: LOAD: TSK: SWMS0 : 2.3%
    [m3vpss ] 119626: LOAD: TSK: SWMS1 : 1.6%
    [m3vpss ] 119626: LOAD: TSK: SWMS2 : 0.6%
    [m3vpss ] 119626: LOAD: TSK: MERGE0 : 0.2%
    [m3vpss ] 119626: LOAD: TSK: MERGE1 : 0.5%
    [m3vpss ] 119626: LOAD: TSK: MERGE2 : 0.6%
    [m3vpss ] 119626: LOAD: TSK: SELECT0 : 0.9%
    [m3vpss ] 119627: LOAD: TSK: SELECT1 : 0.4%
    [m3vpss ] 119627: LOAD: TSK: SELECT2 : 0.4%
    [m3vpss ] 119627: LOAD: TSK: MISC : 5.8%
    [m3vpss ]
    [m3video]
    [m3video] 120119: LOAD: CPU: 13.3% HWI: 1.6%, SWI:1.5%
    [m3video]
    [m3video] 120119: LOAD: TSK: IPC_IN_M30 : 0.6%
    [m3video] 120119: LOAD: TSK: IPC_BITS_OUT0 : 1.6%
    [m3video] 120119: LOAD: TSK: ENC0 : 2.1%
    [m3video] 120120: LOAD: TSK: DEC0 : 0.5%
    [m3video] 120120: LOAD: TSK: ENC_PROCESS_TSK_1 : 2.5%
    [m3video] 120120: LOAD: TSK: ENC_PROCESS_TSK_2 : 2.4%
    [m3video] 120120: LOAD: TSK: MISC : 0.5%
    [m3video]

    ===================printDetailedStatistics:==================
    32.531160 [ CbFxn_IPCBitsInHLOSLINK] execute 3600
    39.135288 [ ProcessEncodedData- 2] execute 1800, Process 1800 Frames(current )
    39.139310 [ ProcessEncodedData- 0] execute 1800, Process 1800 Frames(current )
    39.143038 [ ProcessEncodedData- 3] execute 1800, Process 1800 Frames(current )
    39.169901 [ ProcessEncodedData- 1] execute 1800, Process 1800 Frames(current )
    [m3vpss ]
    [m3vpss ] 129455: LOAD: CPU: 35.0% HWI: 5.3%, SWI:3.0%
    [m3vpss ]
    [m3vpss ] 129455: LOAD: TSK: IPC_OUT_M30 : 1.5%
    [m3vpss ] 129455: LOAD: TSK: IPC_FRAMES_OUT0 : 1.2%
    [m3vpss ] 129456: LOAD: TSK: IPC_FRAMES_OUT1 : 0.7%
    [m3vpss ] 129456: LOAD: TSK: CAPTURE : 0.9%
    [m3vpss ] 129456: LOAD: TSK: NSF0 : 2.6%
    [m3vpss ] 129456: LOAD: TSK: DISPLAY0 : 0.7%
    [m3vpss ] 129456: LOAD: TSK: DISPLAY1 : 0.6%
    [m3vpss ] 129456: LOAD: TSK: DISPLAY2 : 0.2%
    [m3vpss ] 129458: LOAD: TSK: NULL0 : 1.2%
    [m3vpss ] 129458: LOAD: TSK: DUP0 : 0.2%
    [m3vpss ] 129458: LOAD: TSK: DUP1 : 0.4%
    [m3vpss ] 129458: LOAD: TSK: DUP2 : 0.5%
    [m3vpss ] 129458: LOAD: TSK: DUP3 : 1.2%
    [m3vpss ] 129459: LOAD: TSK: Scalar0 : 1.5%
    [m3vpss ] 129459: LOAD: TSK: SWMS0 : 2.3%
    [m3vpss ] 129459: LOAD: TSK: SWMS1 : 1.7%
    [m3vpss ] 129459: LOAD: TSK: SWMS2 : 0.5%
    [m3vpss ] 129459: LOAD: TSK: MERGE0 : 0.3%
    [m3vpss ] 129459: LOAD: TSK: MERGE1 : 0.5%
    [m3vpss ] 129460: LOAD: TSK: MERGE2 : 0.6%
    [m3vpss ] 129460: LOAD: TSK: SELECT0 : 0.9%
    [m3vpss ] 129460: LOAD: TSK: SELECT1 : 0.4%
    [m3vpss ] 129460: LOAD: TSK: SELECT2 : 0.4%
    [m3vpss ] 129460: LOAD: TSK: MISC : 5.7%
    [m3vpss ]
    [m3video]
    [m3video] 129952: LOAD: CPU: 13.4% HWI: 1.6%, SWI:1.5%
    [m3video]
    [m3video] 129953: LOAD: TSK: IPC_IN_M30 : 0.6%
    [m3video] 129953: LOAD: TSK: IPC_BITS_OUT0 : 1.7%
    [m3video] 129953: LOAD: TSK: ENC0 : 2.1%
    [m3video] 129953: LOAD: TSK: DEC0 : 0.5%
    [m3video] 129953: LOAD: TSK: ENC_PROCESS_TSK_1 : 2.5%
    [m3video] 129953: LOAD: TSK: ENC_PROCESS_TSK_2 : 2.4%
    [m3video] 129953: LOAD: TSK: MISC : 0.5%
    [m3video]

    ===================printDetailedStatistics:==================
    43.742845 [ GetEmptyBuffersfromIPCBitsOutHLOSLINK] execute 5400, Get 0 Empty Frames(current 0)
    43.742938 [ PutFullBufferstoIPCBitsOutHLOSLINK] execute 5400, Put 0 Full Frames(current 0)
    48.199938 [ CbFxn_IPCBitsInHLOSLINK] execute 5400
    [m3vpss ]
    [m3vpss ] 139288: LOAD: CPU: 34.8% HWI: 5.2%, SWI:3.0%
    [m3vpss ]
    [m3vpss ] 139289: LOAD: TSK: IPC_OUT_M30 : 1.5%
    [m3vpss ] 139289: LOAD: TSK: IPC_FRAMES_OUT0 : 1.2%
    [m3vpss ] 139290: LOAD: TSK: IPC_FRAMES_OUT1 : 0.7%
    [m3vpss ] 139290: LOAD: TSK: CAPTURE : 0.9%
    [m3vpss ] 139290: LOAD: TSK: NSF0 : 2.5%
    [m3vpss ] 139290: LOAD: TSK: DISPLAY0 : 0.7%
    [m3vpss ] 139291: LOAD: TSK: DISPLAY1 : 0.6%
    [m3vpss ] 139291: LOAD: TSK: DISPLAY2 : 0.2%
    [m3vpss ] 139291: LOAD: TSK: NULL0 : 1.2%
    [m3vpss ] 139291: LOAD: TSK: DUP0 : 0.2%
    [m3vpss ] 139291: LOAD: TSK: DUP1 : 0.4%
    [m3vpss ] 139291: LOAD: TSK: DUP2 : 0.5%
    [m3vpss ] 139292: LOAD: TSK: DUP3 : 1.2%
    [m3vpss ] 139292: LOAD: TSK: Scalar0 : 1.5%
    [m3vpss ] 139292: LOAD: TSK: SWMS0 : 2.4%
    [m3vpss ] 139293: LOAD: TSK: SWMS1 : 1.6%
    [m3vpss ] 139293: LOAD: TSK: SWMS2 : 0.6%
    [m3vpss ] 139293: LOAD: TSK: MERGE0 : 0.2%
    [m3vpss ] 139293: LOAD: TSK: MERGE1 : 0.5%
    [m3vpss ] 139293: LOAD: TSK: MERGE2 : 0.6%
    [m3vpss ] 139293: LOAD: TSK: SELECT0 : 0.9%
    [m3vpss ] 139294: LOAD: TSK: SELECT1 : 0.5%
    [m3vpss ] 139294: LOAD: TSK: SELECT2 : 0.4%
    [m3vpss ] 139294: LOAD: TSK: MISC : 5.6%
    [m3vpss ]
    [m3video]
    [m3video] 139786: LOAD: CPU: 13.0% HWI: 1.4%, SWI:1.5%
    [m3video]
    [m3video] 139786: LOAD: TSK: IPC_IN_M30 : 0.6%
    [m3video] 139786: LOAD: TSK: IPC_BITS_OUT0 : 1.4%
    [m3video] 139787: LOAD: TSK: ENC0 : 2.2%
    [m3video] 139787: LOAD: TSK: DEC0 : 0.5%
    [m3video] 139787: LOAD: TSK: ENC_PROCESS_TSK_1 : 2.5%
    [m3video] 139787: LOAD: TSK: ENC_PROCESS_TSK_2 : 2.4%
    [m3video] 139787: LOAD: TSK: MISC : 0.5%
    [m3video]

  • There is no statistics in this logs. I want detailed statistics for each link. For this you have to register your linkIDs in gVcapModuleContext/gVdisModuleContext/gVencModuleContext,/gVdecModuleContext as is done in other usecase. If this is not possible looks at the implementation of Vsys_printDetailedStatistics and call all the linkControl cmds passing the correct linkIDs.

  • ===================printDetailedStatistics:==================
    [m3vpss ]
    [m3vpss ] *** Capture Driver Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] VIP Parser Reset Count : 0
    [m3vpss ]
    [m3vpss ] | Total Even Odd Total Even Odd Min / Max Min / Max Dropped Fid Repeat Frame Error Y/C
    [m3vpss ] CH | Fields Fields Fields FPS FPS FPS Width Height Fields Count (Desc Error Y/C)
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 000 | 611 611 0 61 61 0 1280 / 1280 720 / 720 118 0 0/0 (0/0)
    [m3vpss ] 100 | 610 610 0 61 61 0 1280 / 1280 720 / 720 118 0 0/0 (0/0)
    [m3vpss ] 200 | 610 610 0 61 61 0 1280 / 1280 720 / 720 119 0 0/0 (0/0)
    [m3vpss ] 300 | 610 610 0 61 61 0 1280 / 1280 720 / 720 119 0 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 0 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ] VIP Capture Port 1 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ] VIP Capture Port 3 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 5005
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 0, Min = 0, Avg = 0, Total = 0
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 983, 990)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x0000d400
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x0000d400
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x00ae0000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 131130: CAPTURE: Fields = 1966 (fps = 196, CPU Load = 0)
    [m3vpss ] 131131: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 131131: SYSTEM : FREE SPACE : System Heap = 4024 B, Mbx = 10232 msgs)
    [m3vpss ] 131131: SYSTEM : FREE SPACE : SR0 Heap = 11003648 B (10 MB)
    [m3vpss ] 131131: SYSTEM : FREE SPACE : Frame Buffer = 76411776 B (72 MB)
    [m3vpss ] 131131: SYSTEM : FREE SPACE : Bitstream Buffer = 333181568 B (317 MB)
    [m3vpss ]
    [m3vpss ] *** [Scalar0 ] SCLR Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 9 secs
    [m3vpss ] Total Fields Processed : 492
    [m3vpss ] Total Fields FPS : 267 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out Skip Out User Out Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS Skip FPS Min / Max
    [m3vpss ] ---------------------------------------------------------------------
    [m3vpss ] 0 | 53 0 53 53 0 0 26 60
    [m3vpss ]
    [m3vpss ] 131137: SYSTEM : FREE SPACE : Tiler 8-bit = 101495296 B (96 MB) - TILER ON
    [m3vpss ] 131137: SYSTEM : FREE SPACE : Tiler 16-bit = 118145024 B (112 MB) - TILER ON
    [m3vpss ]
    [m3vpss ] *** [NSF0] NSF Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 9 secs
    [m3vpss ] Total Fields Processed : 1969
    [m3vpss ] Total Fields FPS : 272 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out User Out Out
    [m3vpss ] Num | FPS FPS FPS FPS Skip FPS Skip FPS
    [m3vpss ] ------------------------------------------------
    [m3vpss ] 0 | 54 0 54 54 0 0
    [m3vpss ] 1 | 54 0 54 54 0 0
    [m3vpss ] 2 | 53 0 53 53 0 0
    [m3vpss ] 3 | 53 0 53 53 0 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 9 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 53 fps (479 frames)
    [m3vpss ] Output Actual FPS : 53 fps (479 frames)
    [m3vpss ] Output Drop FPS : 0 fps (0 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 20 ms
    [m3vpss ] Scaling Internal min : 20 ms
    [m3vpss ] Scaling Internal max : 23 ms
    [m3vpss ]
    [m3vpss ] Win | Window Repeat Drop Recv Que FID Invlid Acc Event Invalid Que Reject Reject Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS Count (Max/Min) CH Frames Frames Frames Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 53 0 0 0 0 0 ( 0/255) 0 0 0 255 / 0
    [m3vpss ] 1 | 53 0 0 0 53 0 0 ( 0/255) 0 0 0 226 / 267
    [m3vpss ] 2 | 53 0 0 0 53 0 0 ( 0/255) 0 0 0 226 / 269
    [m3vpss ] 3 | 53 0 0 0 53 0 0 ( 0/255) 0 0 0 226 / 269
    [m3vpss ] 4 | 53 0 0 0 53 0 0 ( 0/255) 0 0 0 224 / 269
    [m3vpss ] 5 | 0 0 0 0 0 0 0 ( 0/255) 0 0 0 255 / 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] 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 | 1280 x 720 | 2560 / 0 | NON-TILED | 0, 0 | 856 x 480 | 2560 / 0 | NON-TILED | OFF | 0 | 422I | ON |
    [m3vpss ] 1 | 1 | 0, 0 | 1280 x 720 | 2560 / 2560 | NON-TILED | 856, 0 | 424 x 240 | 2560 / 0 | NON-TILED | OFF | 1 | 422I | OFF |
    [m3vpss ] 2 | 2 | 0, 0 | 1280 x 720 | 2560 / 2560 | NON-TILED | 856, 240 | 424 x 240 | 2560 / 0 | NON-TILED | OFF | 1 | 422I | OFF |
    [m3vpss ] 3 | 3 | 0, 0 | 1280 x 720 | 2560 / 2560 | NON-TILED | 0, 480 | 424 x 240 | 2560 / 0 | NON-TILED | OFF | 1 | 422I | OFF |
    [m3vpss ] 4 | 4 | 0, 0 | 1280 x 720 | 2560 / 2560 | NON-TILED | 424, 480 | 432 x 240 | 2560 / 0 | NON-TILED | OFF | 1 | 422I | OFF |
    [m3vpss ] 5 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 856, 480 | 424 x 240 | 2560 / 0 | NON-TILED | OFF | 1 | 422I | ON |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS1] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 9 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 68 fps (620 frames)
    [m3vpss ] Output Actual FPS : 67 fps (607 frames)
    [m3vpss ] Output Drop FPS : 1 fps (13 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 15 ms
    [m3vpss ] Scaling Internal min : 13 ms
    [m3vpss ] Scaling Internal max : 24 ms
    [m3vpss ]
    [m3vpss ] Win | Window Repeat Drop Recv Que FID Invlid Acc Event Invalid Que Reject Reject Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS Count (Max/Min) CH Frames Frames Frames Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 67 0 0 0 0 0 ( 0/255) 0 0 0 255 / 0
    [m3vpss ]
    [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 | 0 | 0, 0 | 1280 x 720 | 2560 / 0 | NON-TILED | 0, 0 | 1280 x 720 | 2560 / 0 | NON-TILED | OFF | 0 | 422I | ON |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS2] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 9 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 27 fps (248 frames)
    [m3vpss ] Output Actual FPS : 27 fps (248 frames)
    [m3vpss ] Output Drop FPS : 0 fps (0 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 39 ms
    [m3vpss ] Scaling Internal min : 39 ms
    [m3vpss ] Scaling Internal max : 47 ms
    [m3vpss ]
    [m3vpss ] Win | Window Repeat Drop Recv Que FID Invlid Acc Event Invalid Que Reject Reject Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS Count (Max/Min) CH Frames Frames Frames Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 27 0 0 0 0 0 ( 0/255) 0 0 0 255 / 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS2] Mosaic Parameters ***
    [m3vpss ]
    [m3vpss ] Output FPS: 25
    [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 | 1280 x 720 | 2560 / 0 | NON-TILED | 0, 0 | 720 x 576 | 1472 / 0 | NON-TILED | OFF | 0 | 422I | ON |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 133165: DISPLAY: HDDAC(BP0) : 60 fps, Latency (Min / Max) = ( 22 / 63 ), Callback Interval (Min / Max) = ( 15 / 17 ) !!!
    [m3vpss ] 133165: DISPLAY: UNDERFLOW COUNT: HDMI(BP0) 608, HDDAC(BP0) 607, DVO2(BP1) 605, SDDAC(SEC1) 0
    [m3vpss ] 133165: SYSTEM : FREE SPACE : System Heap = 4024 B, Mbx = 10229 msgs)
    [m3vpss ] 133165: SYSTEM : FREE SPACE : SR0 Heap = 11003648 B (10 MB)
    [m3vpss ] 133165: SYSTEM : FREE SPACE : Frame Buffer = 76411776 B (72 MB)
    [m3vpss ] 133166: SYSTEM : FREE SPACE : Bitstream Buffer = 333181568 B (317 MB)
    [m3vpss ] 133166: SYSTEM : FREE SPACE : Tiler 8-bit = 101495296 B (96 MB) - TILER ON
    [m3vpss ] 133167: SYSTEM : FREE SPACE : Tiler 16-bit = 118145024 B (112 MB) - TILER ON
    [m3vpss ] 133167: DISPLAY: DVO2(BP1) : 60 fps, Latency (Min / Max) = ( 2 / 37 ), Callback Interval (Min / Max) = ( 16 / 17 ) !!!
    [m3vpss ] 133168: DISPLAY: SDDAC(SEC1): 25 fps, Latency (Min / Max) = ( 1 / 56 ), Callback Interval (Min / Max) = ( 39 / 40 ) !!!
    [m3vpss ]
    [m3vpss ] *** IpcFramesOutRTOS Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 9 secs
    [m3vpss ] Total Fields Processed : 1914
    [m3vpss ] Total Fields FPS : 212 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Process In Skip
    [m3vpss ] Num | FPS FPS FPS
    [m3vpss ] --------------------------------
    [m3vpss ] 0 | 0 0 0
    [m3vpss ] 1 | 53 53 0
    [m3vpss ] 2 | 53 53 0
    [m3vpss ] 3 | 53 53 0
    [m3vpss ] 4 | 53 53 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** IpcFramesOutRTOS Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 9 secs
    [m3vpss ] Total Fields Processed : 478
    [m3vpss ] Total Fields FPS : 53 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Process In Skip
    [m3vpss ] Num | FPS FPS FPS
    [m3vpss ] --------------------------------
    [m3vpss ] 0 | 53 53 0
    [m3vpss ]
    14.655661 [ GetEmptyBuffersfromIPCBitsOutHLOSLINK] execute 1800, Get 0 Empty Frames(current 0)
    14.671865 [ PutFullBufferstoIPCBitsOutHLOSLINK] execute 1800, Put 0 Full Frames(current 0)
    17.526629 [ CbFxn_IPCBitsInHLOSLINK] execute 1800
    [m3video] 137101: HDVICP-ID:0
    [m3video] All percentage figures are based off totalElapsedTime
    [m3video] totalAcquire2wait :0 %
    [m3video] totalWait2Isr :0 %
    [m3video] totalIsr2Done :0 %
    [m3video] totalWait2Done :0 %
    [m3video] totalDone2Release :0 %
    [m3video] totalAcquire2Release :0 %
    [m3video] totalAcq2acqDelay :0 %
    [m3video] totalElapsedTime in msec : 0
    [m3video] numAccessCnt: 0
    [m3video] IVA-FPS : 0
    [m3video] Average time spent per frame in microsec: 0
    [m3video] 137102: HDVICP-ID:1
    [m3video] All percentage figures are based off totalElapsedTime
    [m3video] totalAcquire2wait :1 %
    [m3video] totalWait2Isr :48 %
    [m3video] totalIsr2Done :0 %
    [m3video] totalWait2Done :48 %
    [m3video] totalDone2Release :0 %
    [m3video] totalAcquire2Release :50 %
    [m3video] totalAcq2acqDelay :49 %
    [m3video] totalElapsedTime in msec : 16086
    [m3video] numAccessCnt: 18564
    [m3video] IVA-FPS : 1160
    [m3video] Average time spent per frame in microsec: 415
    [m3video] 137103: HDVICP-ID:2
    [m3video] All percentage figures are based off totalElapsedTime
    [m3video] totalAcquire2wait :1 %
    [m3video] totalWait2Isr :36 %
    [m3video] totalIsr2Done :0 %
    [m3video] totalWait2Done :36 %
    [m3video] totalDone2Release :0 %
    [m3video] totalAcquire2Release :38 %
    [m3video] totalAcq2acqDelay :61 %
    [m3video] totalElapsedTime in msec : 16084
    [m3video] numAccessCnt: 18456
    [m3video] IVA-FPS : 1153
    [m3video] Average time spent per frame in microsec: 313
    [m3video]
    [m3video] *** ENCODE Statistics ***
    [m3video]
    [m3video] Elasped Time : 9 secs
    [m3video]
    [m3video]
    [m3video] CH | In Recv In Skip In User Out Latency
    [m3video] Num | FPS FPS Skip FPS FPS Min / Max
    [m3video] --------------------------------------------
    [m3video] 0 | 53 0 0 53 15 / 43
    [m3video] 1 | 53 0 0 53 15 / 43
    [m3video] 2 | 53 0 0 53 36 / 71
    [m3video] 3 | 53 0 0 53 39 / 83
    [m3video]
    [m3video] Multi Channel Encode Average Submit Batch Size
    [m3video] Max Submit Batch Size : 24
    [m3video] IVAHD_0 Average Batch Size : 0
    [m3video] IVAHD_0 Max achieved Batch Size : 0
    [m3video] IVAHD_1 Average Batch Size : 1
    [m3video] IVAHD_1 Max achieved Batch Size : 2
    [m3video] IVAHD_2 Average Batch Size : 1
    [m3video] IVAHD_2 Max achieved Batch Size : 2
    [m3video]
    [m3video] Multi Channel Encode Batch break Stats
    [m3video] Total Number of Batches created: 0
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 0 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 0 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3video] Total Number of Batches created: 957
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 99 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 0 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3video] Total Number of Batches created: 948
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 97 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 2 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3video]
    [m3video] *** DECODE Statistics ***
    [m3video]
    [m3video] Elasped Time : 9 secs
    [m3video]
    [m3video]
    [m3video] CH | In Recv In User Out
    [m3video] Num | FPS Skip FPS FPS
    [m3video] -----------------------------------
    [m3video]
    [m3video] Multi Channel Decode Average Submit Batch Size
    [m3video] Max Submit Batch Size : 24
    [m3video] IVAHD_0 Average Batch Size : 0
    [m3video] IVAHD_0 Max achieved Batch Size : 0
    [m3video] IVAHD_1 Average Batch Size : 0
    [m3video] IVAHD_1 Max achieved Batch Size : 0
    [m3video] IVAHD_2 Average Batch Size : 0
    [m3video] IVAHD_2 Max achieved Batch Size : 0
    [m3video]
    [m3video] Multi Channel Decode Batch break Stats
    [m3video] Total Number of Batches created: 0
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 0 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 0 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3video] Total Number of Batches created: 0
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 0 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 0 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3video] Total Number of Batches created: 0
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 0 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 0 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3video]
    [m3vpss ]
    [m3vpss ] 139075: LOAD: CPU: 35.2% HWI: 5.1%, SWI:3.2%
    [m3vpss ]
    [m3vpss ] 139075: LOAD: TSK: IPC_OUT_M30 : 1.5%
    [m3vpss ] 139075: LOAD: TSK: IPC_FRAMES_OUT0 : 1.2%
    [m3vpss ] 139076: LOAD: TSK: IPC_FRAMES_OUT1 : 0.7%
    [m3vpss ] 139076: LOAD: TSK: CAPTURE : 1.3%
    [m3vpss ] 139076: LOAD: TSK: NSF0 : 2.6%
    [m3vpss ] 139076: LOAD: TSK: DISPLAY0 : 0.8%
    [m3vpss ] 139076: LOAD: TSK: DISPLAY1 : 0.6%
    [m3vpss ] 139076: LOAD: TSK: DISPLAY2 : 0.2%
    [m3vpss ] 139077: LOAD: TSK: NULL0 : 1.0%
    [m3vpss ] 139077: LOAD: TSK: DUP0 : 0.2%
    [m3vpss ] 139077: LOAD: TSK: DUP1 : 0.4%
    [m3vpss ] 139078: LOAD: TSK: DUP2 : 0.5%
    [m3vpss ] 139078: LOAD: TSK: DUP3 : 1.1%
    [m3vpss ] 139078: LOAD: TSK: Scalar0 : 1.6%
    [m3vpss ] 139078: LOAD: TSK: SWMS0 : 2.4%
    [m3vpss ] 139079: LOAD: TSK: SWMS1 : 1.6%
    [m3vpss ] 139079: LOAD: TSK: SWMS2 : 0.5%
    [m3vpss ] 139079: LOAD: TSK: MERGE0 : 0.3%
    [m3vpss ] 139080: LOAD: TSK: MERGE1 : 0.5%
    [m3vpss ] 139080: LOAD: TSK: MERGE2 : 0.6%
    [m3vpss ] 139080: LOAD: TSK: SELECT0 : 0.8%
    [m3vpss ] 139080: LOAD: TSK: SELECT1 : 0.4%
    [m3vpss ] 139080: LOAD: TSK: SELECT2 : 0.4%
    [m3vpss ] 139080: LOAD: TSK: MISC : 5.7%
    [m3vpss ]
    [m3video]
    [m3video] 139576: LOAD: CPU: 13.2% HWI: 1.6%, SWI:1.4%
    [m3video]
    [m3video] 139576: LOAD: TSK: IPC_IN_M30 : 0.6%
    [m3video] 139576: LOAD: TSK: IPC_BITS_OUT0 : 1.5%
    [m3video] 139576: LOAD: TSK: ENC0 : 2.0%
    [m3video] 139576: LOAD: TSK: DEC0 : 0.6%
    [m3video] 139576: LOAD: TSK: ENC_PROCESS_TSK_1 : 2.6%
    [m3video] 139577: LOAD: TSK: ENC_PROCESS_TSK_2 : 2.4%
    [m3video] 139577: LOAD: TSK: MISC : 0.5%
    [m3video]

  • The frame drop is because capture is dropping frames.

    The capture is dropping frames because output buffers are not available.

    Output buffers will not be available if the nextLink of capture link is not realtime and is not freeing frames in correct interval.

    The nextLink which can cause the frame drop are ipcFramesOut and SwMsLink.

    To confirm ipcFramesOut is not the bottleneck disableOSD and confirm you still see the reduced FPS.

     

    It looks like the frame drop is because SWMS0 is not realtime as the scaling interval is around 20ms but for 60 fps output it requires to be 16ms.

    Try creating swms with 4 scaler instances :

     

        swMsPrm[0].swMsInstId[0]        = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
        swMsPrm[0].swMsInstId[1]        = SYSTEM_SW_MS_SC_INST_VIP1_SC;

        swMsPrm[0].swMsInstId[0]        = SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI;
        swMsPrm[0].swMsInstId[1]        = SYSTEM_SW_MS_SC_INST_VIP0_SC;

        swMsPrm[0].numSwMsInst          = 4;

        swMsPrm[0].swMsInstStartWin[0]  = 0;
        swMsPrm[0].swMsInstStartWin[1]  = 1;

        swMsPrm[0].swMsInstStartWin[2]  = 2;

        swMsPrm[0].swMsInstStartWin[2]  = 3;

      

     Also DEI has performance issue when used in DEI bypass mode and this issue is resolved in DVR RDK 4.0 . So you should migrate to DVR RDK 4.0 to resolve the DEI bypass performance issue.

    Also the following are wrong in your usecase file.Fix all occurences of

    All of below should be TRUE:

        esipcFramesOutVpssPrm0.baseCreateParams.notifyPrevLink             = FALSE;

        esipcFramesInDspPrm0.baseCreateParams.notifyPrevLink               = FALSE;

         esipcOutVideoPrm0.notifyPrevLink            = FALSE;

         esipcFramesOutVpssPrm1.baseCreateParams.notifyPrevLink             = FALSE;

        esipcFramesInDspPrm1.baseCreateParams.notifyPrevLink               = FALSE;

    THis is wrong:

    esswMsPrm[i].numOutBuf                 = 256;

    It should be some reasonable number like 4/5/6.

    Also SwMsPrm.enableProcessTieWithDisplay and SwMsPrm.enableOuputDup should be set to FALSE for SwMs0 and swms1 as they are not connected to display.

    Your usecase is quite complex. Pls explain the requirement so that the data flow can be reviewed and probably a simpler usecase can be implemented.

     

     

  • thanks very much for your so detailed reply.

    I will be trying modifying above codes and some other related parts.

  • thank you very much!

    I solved that problem.It is reason that scalar problem.One scalar process too much channel video.

  • We have adjusted our scalar instances arrangement, and fixed our occurences according to your suggestions, and can guarantee that capture LINK do not drop frames when OSD is disabled.

    But when we enable OSD, frame dropping appears again.

    Pls do me a favor to tell me how can I solve this issue.

    Thanks very a lot

  • Share printDetailedStatistics again with OSD enabled and the latest usecase modification to avoid capture frame drop

  • Hi Badri,

    "Also DEI has performance issue when used in DEI bypass mode and this issue is resolved in DVR RDK 4.0 . So you should migrate to DVR RDK 4.0 to resolve the DEI bypass performance issue."

    We are also working on RDK3.0 with 8107 and having the same problem in the live/playback for 16 channel use-case. Can I know whether the above problem is as due to the DEI bypass mode issue. If that is the case is it possible for us to get a patch for the same. I am attaching logs in our case.

    4452.log_1.txt



  • Hi,

          Any update on the issue?.

    Thanks 

    Faizel

  • From the log it is not DEI performance issue. I don't understand your usecase.Is this log for the issue you have posted here:RE: DM8107 Video Frame loss

  • Hi Badri,

                   Thanks for your attention. Yes it is the same problem I mentioned in that post. The logs I have attached is for 16 channel use-case on RDK3.0. 

    Thanks 

    Faizel