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.

DM385 Video flickering

Other Parts Discussed in Thread: TVP5158, DM385

Hi All,

We are using custom Dm385 board with 1 AR0330 + 4ch tvp5158 analog camera.

In our usecase if we use AR0330 alone there is no issue on display and streaming.

If we use analog camera with AR0330 camera. In display we are facing video flickering on AR0330 output.

 where to increase the cameralink buffer for AR0330?

Is it problem in returning back the buffers from next link? 

 IPNC RDK version:3.5

Regards,

RAJ M

  • Hi Raj,

    I will notify the IPNC RDK team for help.

    Regards,
    Pavel
  • Do you see flickering issue? or buffer repeat issue?

    If you are seeing buffer getting displayed repeatedly, then somewhere your chain is not running real time. Print the performance statistics and check which link is running slower.

    If you are seeing flickering, display of actual and black frame alternately, display is not getting enough bandwidth. What all are you running in the chain? Is total bandwidth of your system going out of supported limit?

    Regards,
    Brijesh
  • Hi Brijesh,

    Thank you for your reply.

    I have captured video file  and attached in it.

    Its look like buffer repeat issue.

    we are enabling and checking performance statistics.will update shortly.

    BR

    RAJ M

  • Hi Raj,


    It looks like sometimes old buffers are getting displayed. This does not happen in display, so most likely it is coming from some link before display. Have you enabled de-interlacing?
    can you check the iss link?

    Regards,
    Brijesh
  • Hi Brijesh,

    Thank you for reply,

    Yes, we are using DEI

    camera 1080p@30 -> scalar       - >

                                                                          merge- > SWMS -> display(SD)

    capture (4CH D1) - > DEI -> NSF ->

    Below  iI have attached my usecase.

    6443.multich_capturedisplay_mosaic.c
    /** ==================================================================
     *  @file   multich_Stream_CaptureDisplay.c
     *
     *  @path    ipnc_mcfw/mcfw/src_linux/mcfw_api/usecases/
     *
     *  @desc   This  File contains.
     * ===================================================================
     *  Copyright (c) Texas Instruments Inc 2011, 2012
     *
     *  Use of this software is controlled by the terms and conditions found
     *  in the license agreement under which this software has been supplied
     * ===================================================================*/
    
    #include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
    #include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"
    #include "demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.h"
    
    /* =============================================================================
     * Externs
     * ============================================================================= */
    
    //#define NULLLINK  1
    
    
    UInt32 gDispSclrId ;
    UInt32 gDeiId;
    /* =============================================================================
     * Use case code
     * ============================================================================= */
    static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl = {
        .isPopulated = 1,
        .ivaMap[0] = {
                      .EncNumCh = 2,
                      .EncChList = {0, 1},
                      .DecNumCh = 2,
                      .DecChList = {0, 1},
                      },
    
    };
    /* Merge Link for camera streams */
    #define NUM_MERGE_LINK              (1) 
    #define NUM_DUP_LINK           (3)
    #define HDMIDIS_DUP_IDX        (0)
    #define RAW_DUP_IDX            (2)
    #define CAM_STREAM_MERGE_IDX        (0)
    
    #define DEI_OUT_MAIN_STRAMER    (DEI_LINK_OUT_QUE_DEI_SC) // (DEI_LINK_OUT_QUE_VIP_SC // YUV422I WB0/1
    #define DEI_OUT_SUB_STRAMER     (DEI_LINK_OUT_QUE_DEI_SC) // (DEI_LINK_OUT_QUE_VIP_SC)
    
    /* ===================================================================
     *  @func     MultiCh_createStreamCaptureDisplay
     *
     *  @desc     Function does the following
     *
     *  @modif    This function modifies the following structures
     *
     *  @inputs   This function takes the following inputs
     *            <argument name>
     *            Description of usage
     *            <argument name>
     *            Description of usage
     *
     *  @outputs  <argument name>
     *            Description of usage
     *
     *  @return   Return value of this function if any
     *  ==================================================================
     */
    //Void MultiCh_createStreamCaptureDisplay()
    Void MultiCh_tvp5158_CaptureDisplay11()
    {
        UInt32 chId;
     
        MergeLink_CreateParams mergePrm[NUM_MERGE_LINK];
        UInt32 mergeId[NUM_MERGE_LINK];
        SclrLink_CreateParams       disp_sclrPrm; 
     
        CameraLink_VipInstParams *pCameraInstPrm;
        CameraLink_OutParams *pCameraOutPrm;
        CameraLink_CreateParams cameraPrm;
    
        CaptureLink_CreateParams capturePrm;
        SwMsLink_CreateParams swMsPrm;
        DisplayLink_CreateParams displayPrm;
    
        //NullLink_CreateParams nulllink ;
        NullLink_CreateParams sdNullPrm;
        NsfLink_CreateParams nsfPrm;
    
        CaptureLink_VipInstParams *pCaptureInstPrm;
        CaptureLink_OutParams *pCaptureOutPrm;
        DeiLink_CreateParams              deiPrm ;
    
        MultiCh_detectBoard();
    
        MULTICH_INIT_STRUCT(DeiLink_CreateParams, deiPrm);
    
        System_linkControl(SYSTEM_LINK_ID_M3VPSS,
                           SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
    
        System_linkControl(SYSTEM_LINK_ID_M3VIDEO,
                           SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
                           &systemVid_encDecIvaChMapTbl,
                           sizeof(SystemVideo_Ivahd2ChMap_Tbl), TRUE);
    
        gVcamModuleContext.cameraId = SYSTEM_LINK_ID_CAMERA;
    
        gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
    
        gVcapModuleContext.nsfId[0]     = SYSTEM_LINK_ID_NSF_0;
        gVcapModuleContext.nsfId[1]     = SYSTEM_LINK_ID_NSF_1;
        gVcapModuleContext.deiId[0]     = SYSTEM_LINK_ID_DEI_0;
    
        gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
        gVdisModuleContext.swMsId[0] = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
        gVdisModuleContext.displayId[VDIS_DEV_SD] = SYSTEM_LINK_ID_DISPLAY_2;
        gDispSclrId = SYSTEM_LINK_ID_SCLR_INST_2 ;
        gDeiId = SYSTEM_LINK_ID_DEI_0;// SYSTEM_LINK_ID_DEI_HQ_1;
        {
    		gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
    		/* Camera Link params */
    		CameraLink_CreateParams_Init(&cameraPrm);
    
    		cameraPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;
    
    	        //cameraPrm.outQueParams[0].nextLink  =  SYSTEM_VPSS_LINK_ID_MERGE_1 ;
    	        cameraPrm.outQueParams[0].nextLink  =  SYSTEM_LINK_ID_SCLR_INST_0 ;
    	        //cameraPrm.outQueParams[0].nextLink  = scalerId[0] ; 
    
    		/* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
    		 * audio channels connected in cascade */
    		cameraPrm.numAudioChannels = 0;
    		cameraPrm.numVipInst = 1;
                    cameraPrm.tilerEnable = FALSE;
    		cameraPrm.vsEnable = 0 ; //gUI_mcfw_config.vsEnable;
    
    		pCameraInstPrm = &cameraPrm.vipInst[0];
    		pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
    		pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
    		pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;
    		pCameraInstPrm->sensorOutWidth  = 1920;
    		pCameraInstPrm->sensorOutHeight = 1080;
    
    		if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
    		{
    			pCameraInstPrm->standard = SYSTEM_STD_1080P_60;
    			//pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
    		}
    		else
    		{
    			pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
    			cameraPrm.issVnfEnable = 1;
    		}
    
    		pCameraInstPrm->numOutput = 1;
    
    		/* First stream */
    		pCameraOutPrm = &pCameraInstPrm->outParams[0];
    		
    	        pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV; 		
    
    		pCameraOutPrm->scEnable = FALSE;
    	        pCameraOutPrm->scOutWidth = 1920;
    	        pCameraOutPrm->scOutHeight = 1080;
    		pCameraOutPrm->outQueId = 0;
    	        cameraPrm.vnfFullResolution = FALSE;
    
                    cameraPrm.vnfLinkId = SYSTEM_LINK_ID_INVALID;
                   
    		/* 2A config */
    		cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
    		cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
    #if 1               
                    /*Display Scaler Configration*/
                     SclrLink_CreateParams_Init(&disp_sclrPrm);
                     {
                         disp_sclrPrm.inQueParams.prevLinkId             = gVcamModuleContext.cameraId ; 
                         disp_sclrPrm.inQueParams.prevLinkQueId          = 0;
                     }
                     disp_sclrPrm.outQueParams.nextLink              =  SYSTEM_VPSS_LINK_ID_MERGE_1 ; //mergeId[CVBS_DUP_LINK_IDX]; 
                     disp_sclrPrm.tilerEnable                        = FALSE;
                     disp_sclrPrm.enableLineSkipSc                   = FALSE;
                     disp_sclrPrm.inputFrameRate                     = 30;//FS:RAJ //60;
                     disp_sclrPrm.outputFrameRate                    = 30;//FS:RAJ //60;
                     disp_sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
                     disp_sclrPrm.outScaleFactor.absoluteResolution.outWidth   = 720;
                     disp_sclrPrm.outScaleFactor.absoluteResolution.outHeight  = 480;
                     disp_sclrPrm.outDataFormat = VF_YUV422I_YUYV;
                     disp_sclrPrm.pathId = SCLR_LINK_SEC0_SC3;
    #endif
    
        }
    
    
        /* Capture Link params */
        CaptureLink_CreateParams_Init(&capturePrm);
        capturePrm.numVipInst		    = 1;
        capturePrm.tilerEnable		    = FALSE;
        capturePrm.numBufsPerCh		    = 5;//FS:RAJ//10; //4;
    
        capturePrm.fakeHdMode                 = FALSE;
        capturePrm.enableSdCrop               = FALSE;
        capturePrm.doCropInCapture            = FALSE;
    
        pCaptureInstPrm                     = &capturePrm.vipInst[0];
        pCaptureInstPrm->vipInstId          = SYSTEM_CAPTURE_INST_VIP1_PORTA; //set capture port ID
        pCaptureInstPrm->videoDecoderId     = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV; //set capture external device ID
        pCaptureInstPrm->standard           = SYSTEM_STD_MUX_4CH_D1; //set capture video standard as 4CH multiplxed D1 capture
        pCaptureInstPrm->numOutput          = 1; //number of output per channel for a port
        pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P; //set input data format as 16-bit YUV422
        pCaptureOutPrm                      = &pCaptureInstPrm->outParams[0];
    	
        pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV; //output data format is YUV422I
        pCaptureOutPrm->scEnable            = FALSE; //inline scaling disabled since this is multi-channel capture
        pCaptureOutPrm->scOutWidth          = 0;
        pCaptureOutPrm->scOutHeight         = 0;
        pCaptureOutPrm->outQueId            = 0;
    
        // next link after capture link is SW Mosaic DEI link
    #ifndef NULLLINK
        //capturePrm.outQueParams[0].nextLink =  gVcapModuleContext.nsfId[0] ; 
        capturePrm.outQueParams[0].nextLink =  gDeiId; 
        //capturePrm.outQueParams[0].nextLink = SYSTEM_VPSS_LINK_ID_MERGE_1 ; // gDeiId; 
    #else
        capturePrm.outQueParams[0].nextLink = SYSTEM_VPSS_LINK_ID_NULL_1 ; 
    #endif
    
    #ifndef NULLLINK
            /*DEI*/
            deiPrm.inQueParams.prevLinkId = gVcapModuleContext.captureId ; // CVBS_DISP
            deiPrm.inQueParams.prevLinkQueId  = 0 ;
            deiPrm.enableLineSkipSc = FALSE ;
            deiPrm.enableDeiForceBypass = FALSE;//TRUE ; //Input is progressive TRUE
            deiPrm.inputDeiFrameRate = 60;
            deiPrm.outputDeiFrameRate = 30;//FS:RAJ///60;
            deiPrm.outQueParams[DEI_OUT_SUB_STRAMER].nextLink =  gVcapModuleContext.nsfId[0] ;
    
            deiPrm.enableOut[DEI_OUT_SUB_STRAMER] = TRUE;
            deiPrm.comprEnable = FALSE;
            deiPrm.setVipScYuv422Format = TRUE;    // FALSE->yuv420sp,  TRUE->yuv422i //From DEI o/p to 422I
            deiPrm.inputFrameRate[DEI_OUT_SUB_STRAMER] = 30;//FS:RAJ //60;
            deiPrm.outputFrameRate[DEI_OUT_SUB_STRAMER] = 30;//FS:RAJ //60;
    
            deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].scaleMode = DEI_SCALE_MODE_ABSOLUTE;
            deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].absoluteResolution.outWidth  = 720;
            deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].absoluteResolution.outHeight = 480;
            for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
                deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][chId] = deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0];
    
    		NsfLink_CreateParams_Init(&nsfPrm);
                    nsfPrm.bypassNsf                        = TRUE;
                    nsfPrm.tilerEnable                      = FALSE;
                    //nsfPrm.inQueParams.prevLinkId           = gVcapModuleContext.captureId  ;
                    nsfPrm.inQueParams.prevLinkId           = gDeiId ;
                    nsfPrm.inQueParams.prevLinkQueId        = 0;
                    nsfPrm.numOutQue                        = 1;
                    nsfPrm.outQueParams[0].nextLink         = SYSTEM_VPSS_LINK_ID_MERGE_1 ;
                    nsfPrm.numBufsPerCh                     = 5;//FS:RAJ //3;
    		nsfPrm.nsfStrength = gUI_mcfw_config.vnfStrength;
    
    #else 
            sdNullPrm.numInQue = 1;
            sdNullPrm.inQueParams[0].prevLinkId =  gVcapModuleContext.captureId  ;
            sdNullPrm.inQueParams[0].prevLinkQueId = 0;
    #endif
    
            /* Merge Link params */
    #ifdef NULLLINK
            mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 1;   
    #else 
            mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 2;   
    #endif
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId =  SYSTEM_LINK_ID_SCLR_INST_0  ; 
            //mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId = gVcamModuleContext.cameraId ; // SYSTEM_LINK_ID_SCLR_INST_0  ; 
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
    #ifndef NULLLINK
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =  gVcapModuleContext.nsfId[0] ;
            //mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =  gDeiId ;
            //mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = gVcapModuleContext.captureId  ; // gDeiId ;
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 0;
    #endif
            mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVdisModuleContext.swMsId[0] ;
            mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;
    
            /* SW MS Link */
            SwMsLink_CreateParams_Init(&swMsPrm);
            swMsPrm.numSwMsInst               = 1;
            //swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_SC5;
            //swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_DEI_SC ; //SYSTEM_SW_MS_SC_INST_VIP0_SC;
            swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_VIP0_SC;
            //swMsPrm.swMsInstStartWin[0]       = 0;
            swMsPrm.inQueParams.prevLinkId    = SYSTEM_VPSS_LINK_ID_MERGE_1 ; //gDeiId; //gVcapModuleContext.captureId;
            swMsPrm.inQueParams.prevLinkQueId = 0;
            swMsPrm.outQueParams.nextLink     = gVdisModuleContext.displayId[VDIS_DEV_SD] ;//gDupId_cbb[DIS_DUP_IDX];
            swMsPrm.maxInputQueLen            =  4 ; // SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
            swMsPrm.maxOutRes                 = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
            swMsPrm.lineSkipMode              = FALSE;
            swMsPrm.enableLayoutGridDraw      = FALSE ; //gVdisModuleContext.vdisConfig.enableLayoutGridDraw;
            swMsPrm.enableProcessTieWithDisplay = FALSE;
            //swMsPrm.layoutPrm.outputFPS = 30 ;
    
            MultiCh_swMsGetDefaultLayoutPrm(SYSTEM_DC_VENC_SD,&swMsPrm,FALSE);
    
            /* display link params */
            MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm);
            displayPrm.inQueParams[0].prevLinkId =  gVdisModuleContext.swMsId[0]; //MergeId[NUM_MERGE_LINK] ; //gVcapModuleContext.captureId;
            displayPrm.inQueParams[0].prevLinkQueId = 0;
            displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
            displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SD ;  // CVBS
    
    
        System_linkCreate(gVcamModuleContext.cameraId, &cameraPrm, sizeof(cameraPrm));
        System_linkControl(gVcamModuleContext.cameraId, CAMERA_LINK_CMD_DETECT_VIDEO, NULL, 0, TRUE);
        
        /* display scaler link */
        System_linkCreate( SYSTEM_LINK_ID_SCLR_INST_0 , &disp_sclrPrm, sizeof(disp_sclrPrm));  
        
        System_linkCreate( gVcapModuleContext.captureId, &capturePrm,  sizeof(capturePrm));
    
        /* null link*/
    #ifdef NULLLINK
        System_linkCreate(SYSTEM_VPSS_LINK_ID_NULL_1 ,&sdNullPrm, sizeof(sdNullPrm));
    #else 
        System_linkCreate(gDeiId,&deiPrm,sizeof(DeiLink_CreateParams));
    
        /* Nsf */ 
        System_linkCreate( gVcapModuleContext.nsfId[0] , &nsfPrm, sizeof(NsfLink_CreateParams));  
    #endif
    
        /* Merge Link */
        System_linkCreate( SYSTEM_VPSS_LINK_ID_MERGE_1 , &mergePrm[CAM_STREAM_MERGE_IDX], sizeof(mergePrm[CAM_STREAM_MERGE_IDX]));
    
        System_linkCreate(gVdisModuleContext.swMsId[0],&swMsPrm,sizeof(swMsPrm));
    
        /* display link */
        System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm,sizeof(displayPrm));
    
        OSA_printf("USECASE SETUP DONE\n");
    }
    
    /* ===================================================================
     *  @func     MultiCh_deleteStreamCaptureDisplay
     *
     *  @desc     Function does the following
     *
     *  @modif    This function modifies the following structures
     *
     *  @inputs   This function takes the following inputs
     *            <argument name>
     *            Description of usage
     *            <argument name>
     *            Description of usage
     *
     *  @outputs  <argument name>
     *            Description of usage
     *
     *  @return   Return value of this function if any
     *  ==================================================================
     */
    //Void MultiCh_deleteStreamCaptureDisplay()
    Void MultiCh_delete_tvp5158_CaptureDisplay()
    {
        UInt32 MergeId[NUM_MERGE_LINK];
    
        MergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
      /* display link */
        System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_SD]);
    
     /* Merge Link */
        System_linkDelete(MergeId[CAM_STREAM_MERGE_IDX]);
    
    //AV support start
    #if 0
        if( Av_scalerId != SYSTEM_LINK_ID_INVALID )
        {
            System_linkDelete(Av_scalerId);
            Av_scalerId = SYSTEM_LINK_ID_INVALID ;
        }
    #endif
    //AV support End
    
        /* Camera Link */
        System_linkDelete(gVcapModuleContext.captureId);
        /* Print the HWI, SWI and all tasks load */
        /* Reset the accumulated timer ticks */
        MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);
        
        OSA_printf("USECASE TEARDOWN DONE\n");
    }
    

    BR

    RAJ M

  • Hi,

    If I reduce the frame rate 30fps ->15fps video shaking(flickering) reduced.

    One more doubt

    Initially cameralink should alloc 6 buffers to queue. but i below log its queue one buffer only

    [m3vpss ] drivers/capture/src/issdrv_captureApi.c Iss_captCreate 1641
    [m3vpss ] Stream ID 0: chId = 0 VpsUtils_queCreate.
    [m3vpss ] drivers/capture/src/issdrv_captureApi.c Iss_captQueue 3741
    [m3vpss ] instId 0 streamId -1914638217 chId -1906131760 , instId,streamId,chId
    [m3vpss ] instId 0 streamId -1914638217 chId -1906131760 , instId,streamId,chId
    [m3vpss ] 8568: CAMERA: Create Done !!!

    BR

    RAJ M

  • Hi expert,

    How to increase the cameralink buffer count?

    #define CAMERA_LINK_MAX_FRAMES_PER_CH (8)

    #define CAMERA_LINK_FRAMES_PER_CH (8)

    is it the right macro?

    BR,

    RAJ M

  • Hi Brijesh,

    Below is my performance statistics


    root@DM385_IPNC:~# [m3vpss ] ==================== CaptureLink_PrintDetails ====================
    [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 ] 200 | 1867 913 954 32 16 16 720 / 720 2 / 288 182 1303 0/0 (0/0)
    [m3vpss ] 201 | 3455 1713 1742 60 30 30 720 / 720 243 / 288 23 31 0/0 (0/0)
    [m3vpss ] 202 | 2890 1446 1444 50 25 25 720 / 720 288 / 288 18 1 0/0 (0/0)
    [m3vpss ] 203 | 3455 1711 1744 60 30 30 720 / 720 243 / 288 3455 31 0/0 (1/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 7203
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 1, Min = 0, Avg = 0, Total = 10
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 980, 993)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x00020000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 67590: CAPTURE: Fields = 7989 (fps = 138, CPU Load = 63)
    [m3vpss ] 67590: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 67590: SYSTEM : FREE SPACE : System Heap = 403424 B, Mbx = 10238 msgs)
    [m3vpss ] 67590: SYSTEM : FREE SPACE : SR0 Heap = 13724032 B (13 MB)
    [m3vpss ] 67590: SYSTEM : FREE SPACE : Frame Buffer = 139714944 B (133 MB)
    [m3vpss ] 67591: SYSTEM : FREE SPACE : Bitstream Buffer = 62390144 B (59 MB)
    [m3vpss ] 67591: SYSTEM : FREE SPACE : Tiler Buffer = 15 B (0 MB) - TILER OFF
    [m3vpss ] =================================================================
    [m3vpss ] 69604: CAMERA: Fields = 1812 (fps = 30), Total Resets = 1 (Avg 2 ms per reset)
    [m3vpss ] 69671: CAMERA: Fields = 1815 (fps = 30, CPU Load = 45)
    [m3vpss ] 69671: CAMERA: Num Resets = 1 (Avg 2 ms per reset)
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 60 secs
    [m3vpss ] Total Fields Processed : 4151
    [m3vpss ] Total Fields FPS : 472 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Skip Out[0] Skip Out[1] Skip Out[2] User Out[0] User Out[1] User Out[2] Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS Skip FPS Skip FPS Skip FPS Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 28 14 14 14 0 0 0 14 0 0 0 0 2 / 28
    [m3vpss ] 1 | 59 29 29 29 0 0 0 29 0 0 0 0 1 / 36
    [m3vpss ] 2 | 49 24 24 24 0 0 0 24 0 0 0 0 1 / 14
    [m3vpss ] 3 | 0 0 0 0 0 0 0 0 0 0 0 0 255 / 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [Scalar0 ] SCLR Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 61 secs
    [m3vpss ] Total Fields Processed : 1815
    [m3vpss ] Total Fields FPS : 98 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 | 29 0 29 29 0 0 9 25
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 62 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 30 fps (1883 frames)
    [m3vpss ] Output Actual FPS : 30 fps (1872 frames)
    [m3vpss ] Output Drop FPS : 0 fps (11 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 33 ms
    [m3vpss ] Scaling Internal min : 25 ms
    [m3vpss ] Scaling Internal max : 43 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 | 30 0 0 30 30 0 2 ( 5/ 5) 0 0 0 16 / 145
    [m3vpss ] 1 | 14 16 0 14 14 0 0 ( 0/255) 0 0 0 5 / 270
    [m3vpss ] 2 | 29 0 0 29 29 0 0 ( 0/255) 0 0 0 5 / 161
    [m3vpss ] 3 | 24 5 0 24 24 0 0 ( 0/255) 0 0 0 5 / 168
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Parameters ***
    [m3vpss ]
    [m3vpss ] Output FPS: 30
    [m3vpss ]
    [m3vpss ] Win | Ch | Input | Input | Input | Input | Output | Output | Output | Output | Low Cost | SWMS | Data |
    [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|
    [m3vpss ] --------------------------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 | 0, 0 | 720 x 480 | 1440 / 0 | NON-TILED | 0, 0 | 360 x 240 | 1472 / 0 | NON-TILED | OFF | 0 | 422I |
    [m3vpss ] 1 | 1 | 0, 0 | 720 x 480 | 736 / 736 | NON-TILED | 360, 240 | 360 x 240 | 1472 / 0 | NON-TILED | OFF | 0 | 420SP |
    [m3vpss ] 2 | 2 | 0, 0 | 720 x 480 | 736 / 736 | NON-TILED | 0, 240 | 360 x 240 | 1472 / 0 | NON-TILED | OFF | 0 | 420SP |
    [m3vpss ] 3 | 3 | 0, 0 | 720 x 480 | 736 / 736 | NON-TILED | 360, 0 | 360 x 240 | 1472 / 0 | NON-TILED | OFF | 0 | 420SP |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 72007: DISPLAY: SDDAC(SEC1): 29 fps, Latency (Min / Max) = ( 13 / 282 ), Callback Interval (Min / Max) = ( 31 / 35 ) !!!
    [m3vpss ]
    [m3vpss ] 76208: LOAD: CPU: 21.9% HWI: 6.3%, SWI:1.0%
    [m3vpss ]
    [m3vpss ] 76208: LOAD: TSK: CAPTURE : 0.6%
    [m3vpss ] 76208: LOAD: TSK: CAMERA : 0.2%
    [m3vpss ] 76208: LOAD: TSK: NSF0 : 1.7%
    [m3vpss ] 76208: LOAD: TSK: DEI2 : 2.6%
    [m3vpss ] 76208: LOAD: TSK: DISPLAY2 : 0.6%
    [m3vpss ] 76209: LOAD: TSK: Scalar0 : 1.4%
    [m3vpss ] 76209: LOAD: TSK: SWMS0 : 2.1%
    [m3vpss ] 76209: LOAD: TSK: MERGE1 : 0.4%
    [m3vpss ] 76209: LOAD: TSK: MISC : 5.0%
    [m3vpss ]
    [m3video]
    [m3video] 76710: LOAD: CPU: 1.6% HWI: 0.9%, SWI:0.5%
    [m3video]
    [m3video] 76710: LOAD: TSK: MISC : 0.2%
    [m3video]

    [host]
    Usecase is Active !!!

    BR
    RAJ M
  • Hi Raj,

    You are mixing NTSC and PAL resolutions, for both the fps is different.

    Also there is a fps drop in channel0, its frame size is varying. There is some problem in channel0. Please check.

    I think the problem is, somewhere old frames are getting displaying again. it might be because of channel0, which is receiving varying frame size. because of this, old frames are getting displayed.

    Regards,

    Brijesh

  • Increasing the value of macros

    #define CAMERA_LINK_MAX_FRAMES_PER_CH (8)

    #define CAMERA_LINK_FRAMES_PER_CH (8)

    may not work straight away. You might need to change the memory layout and that depends on the resolution of your input streams.
  • Hi Brijesh,

     If we capture video(Full HD) from AR0330 sensor alone, the video capture, display, encode and streaming are working fine without any issue. But after integrating with 3 CVBS video, the full HD video is not smooth but analog video are fine. Only Full HD video is flickering .

    if we connect capture link with dei then the FullHD(AR0330) video flickers on the display. If we connect the output of capture link to "null" link,  then fullHD video is not flickering on the screen.  Is there anything to look into "dei" settings ?

    Below  iI have attached my usecase

    2671.multich_capturedisplay_mosaic.c
    /** ==================================================================
     *  @file   multich_Stream_CaptureDisplay.c
     *
     *  @path    ipnc_mcfw/mcfw/src_linux/mcfw_api/usecases/
     *
     *  @desc   This  File contains.
     * ===================================================================
     *  Copyright (c) Texas Instruments Inc 2011, 2012
     *
     *  Use of this software is controlled by the terms and conditions found
     *  in the license agreement under which this software has been supplied
     * ===================================================================*/
    
    #include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
    #include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"
    #include "demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.h"
    
    /* =============================================================================
     * Externs
     * ============================================================================= */
    
    //#define NULLLINK  1
    
    
    UInt32 gDispSclrId ;
    UInt32 gDeiId;
    /* =============================================================================
     * Use case code
     * ============================================================================= */
    static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl = {
        .isPopulated = 1,
        .ivaMap[0] = {
                      .EncNumCh = 2,
                      .EncChList = {0, 1},
                      .DecNumCh = 2,
                      .DecChList = {0, 1},
                      },
    
    };
    /* Merge Link for camera streams */
    #define NUM_MERGE_LINK              (1) 
    #define NUM_DUP_LINK           (3)
    #define HDMIDIS_DUP_IDX        (0)
    #define RAW_DUP_IDX            (2)
    #define CAM_STREAM_MERGE_IDX        (0)
    
    #define DEI_OUT_MAIN_STRAMER    (DEI_LINK_OUT_QUE_DEI_SC) // (DEI_LINK_OUT_QUE_VIP_SC // YUV422I WB0/1
    #define DEI_OUT_SUB_STRAMER     (DEI_LINK_OUT_QUE_DEI_SC) // (DEI_LINK_OUT_QUE_VIP_SC)
    
    /* ===================================================================
     *  @func     MultiCh_createStreamCaptureDisplay
     *
     *  @desc     Function does the following
     *
     *  @modif    This function modifies the following structures
     *
     *  @inputs   This function takes the following inputs
     *            <argument name>
     *            Description of usage
     *            <argument name>
     *            Description of usage
     *
     *  @outputs  <argument name>
     *            Description of usage
     *
     *  @return   Return value of this function if any
     *  ==================================================================
     */
    //Void MultiCh_createStreamCaptureDisplay()
    Void MultiCh_tvp5158_CaptureDisplay11()
    {
        UInt32 chId;
     
        MergeLink_CreateParams mergePrm[NUM_MERGE_LINK];
        UInt32 mergeId[NUM_MERGE_LINK];
        SclrLink_CreateParams       disp_sclrPrm; 
     
        CameraLink_VipInstParams *pCameraInstPrm;
        CameraLink_OutParams *pCameraOutPrm;
        CameraLink_CreateParams cameraPrm;
    
        CaptureLink_CreateParams capturePrm;
        SwMsLink_CreateParams swMsPrm;
        DisplayLink_CreateParams displayPrm;
    
        //NullLink_CreateParams nulllink ;
        NullLink_CreateParams sdNullPrm;
        NsfLink_CreateParams nsfPrm;
    
        CaptureLink_VipInstParams *pCaptureInstPrm;
        CaptureLink_OutParams *pCaptureOutPrm;
        DeiLink_CreateParams              deiPrm ;
    
        MultiCh_detectBoard();
    
        MULTICH_INIT_STRUCT(DeiLink_CreateParams, deiPrm);
    
        System_linkControl(SYSTEM_LINK_ID_M3VPSS,
                           SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
    
        System_linkControl(SYSTEM_LINK_ID_M3VIDEO,
                           SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
                           &systemVid_encDecIvaChMapTbl,
                           sizeof(SystemVideo_Ivahd2ChMap_Tbl), TRUE);
    
        gVcamModuleContext.cameraId = SYSTEM_LINK_ID_CAMERA;
    
        gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
    
        gVcapModuleContext.nsfId[0]     = SYSTEM_LINK_ID_NSF_0;
        gVcapModuleContext.nsfId[1]     = SYSTEM_LINK_ID_NSF_1;
        gVcapModuleContext.deiId[0]     = SYSTEM_LINK_ID_DEI_0;
    
        gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
        gVdisModuleContext.swMsId[0] = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
        gVdisModuleContext.displayId[VDIS_DEV_SD] = SYSTEM_LINK_ID_DISPLAY_2;
        gDispSclrId = SYSTEM_LINK_ID_SCLR_INST_2 ;
        gDeiId = SYSTEM_LINK_ID_DEI_0;// SYSTEM_LINK_ID_DEI_HQ_1;
        {
    		gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
    		/* Camera Link params */
    		CameraLink_CreateParams_Init(&cameraPrm);
    
    		cameraPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;
    
    	        //cameraPrm.outQueParams[0].nextLink  =  SYSTEM_VPSS_LINK_ID_MERGE_1 ;
    	        cameraPrm.outQueParams[0].nextLink  =  SYSTEM_LINK_ID_SCLR_INST_0 ;
    	        //cameraPrm.outQueParams[0].nextLink  = scalerId[0] ; 
    
    		/* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
    		 * audio channels connected in cascade */
    		cameraPrm.numAudioChannels = 0;
    		cameraPrm.numVipInst = 1;
                    cameraPrm.tilerEnable = FALSE;
    		cameraPrm.vsEnable = 0 ; //gUI_mcfw_config.vsEnable;
    
    		pCameraInstPrm = &cameraPrm.vipInst[0];
    		pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
    		pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
    		pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;
    		pCameraInstPrm->sensorOutWidth  = 1920;
    		pCameraInstPrm->sensorOutHeight = 1080;
    
    		if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
    		{
    			pCameraInstPrm->standard = SYSTEM_STD_1080P_60;
    			//pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
    		}
    		else
    		{
    			pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
    			cameraPrm.issVnfEnable = 1;
    		}
    
    		pCameraInstPrm->numOutput = 1;
    
    		/* First stream */
    		pCameraOutPrm = &pCameraInstPrm->outParams[0];
    		
    	        pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV; 		
    
    		pCameraOutPrm->scEnable = FALSE;
    	        pCameraOutPrm->scOutWidth = 1920;
    	        pCameraOutPrm->scOutHeight = 1080;
    		pCameraOutPrm->outQueId = 0;
    	        cameraPrm.vnfFullResolution = FALSE;
    
                    cameraPrm.vnfLinkId = SYSTEM_LINK_ID_INVALID;
                   
    		/* 2A config */
    		cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
    		cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
    #if 1               
                    /*Display Scaler Configration*/
                     SclrLink_CreateParams_Init(&disp_sclrPrm);
                     {
                         disp_sclrPrm.inQueParams.prevLinkId             = gVcamModuleContext.cameraId ; 
                         disp_sclrPrm.inQueParams.prevLinkQueId          = 0;
                     }
                     disp_sclrPrm.outQueParams.nextLink              =  SYSTEM_VPSS_LINK_ID_MERGE_1 ; //mergeId[CVBS_DUP_LINK_IDX]; 
                     disp_sclrPrm.tilerEnable                        = FALSE;
                     disp_sclrPrm.enableLineSkipSc                   = FALSE;
                     disp_sclrPrm.inputFrameRate                     = 30;//FS:RAJ //60;
                     disp_sclrPrm.outputFrameRate                    = 30;//FS:RAJ //60;
                     disp_sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
                     disp_sclrPrm.outScaleFactor.absoluteResolution.outWidth   = 720;
                     disp_sclrPrm.outScaleFactor.absoluteResolution.outHeight  = 480;
                     disp_sclrPrm.outDataFormat = VF_YUV422I_YUYV;
                     disp_sclrPrm.pathId = SCLR_LINK_SEC0_SC3;
    #endif
    
        }
    
    
        /* Capture Link params */
        CaptureLink_CreateParams_Init(&capturePrm);
        capturePrm.numVipInst		    = 1;
        capturePrm.tilerEnable		    = FALSE;
        capturePrm.numBufsPerCh		    = 5;//FS:RAJ//10; //4;
    
        capturePrm.fakeHdMode                 = FALSE;
        capturePrm.enableSdCrop               = FALSE;
        capturePrm.doCropInCapture            = FALSE;
    
        pCaptureInstPrm                     = &capturePrm.vipInst[0];
        pCaptureInstPrm->vipInstId          = SYSTEM_CAPTURE_INST_VIP1_PORTA; //set capture port ID
        pCaptureInstPrm->videoDecoderId     = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV; //set capture external device ID
        pCaptureInstPrm->standard           = SYSTEM_STD_MUX_4CH_D1; //set capture video standard as 4CH multiplxed D1 capture
        pCaptureInstPrm->numOutput          = 1; //number of output per channel for a port
        pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P; //set input data format as 16-bit YUV422
        pCaptureOutPrm                      = &pCaptureInstPrm->outParams[0];
    	
        pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV; //output data format is YUV422I
        pCaptureOutPrm->scEnable            = FALSE; //inline scaling disabled since this is multi-channel capture
        pCaptureOutPrm->scOutWidth          = 0;
        pCaptureOutPrm->scOutHeight         = 0;
        pCaptureOutPrm->outQueId            = 0;
    
        // next link after capture link is SW Mosaic DEI link
    #ifndef NULLLINK
        //capturePrm.outQueParams[0].nextLink =  gVcapModuleContext.nsfId[0] ; 
        capturePrm.outQueParams[0].nextLink =  gDeiId; 
        //capturePrm.outQueParams[0].nextLink = SYSTEM_VPSS_LINK_ID_MERGE_1 ; // gDeiId; 
    #else
        capturePrm.outQueParams[0].nextLink = SYSTEM_VPSS_LINK_ID_NULL_1 ; 
    #endif
    
    #ifndef NULLLINK
            /*DEI*/
            deiPrm.inQueParams.prevLinkId = gVcapModuleContext.captureId ; // CVBS_DISP
            deiPrm.inQueParams.prevLinkQueId  = 0 ;
            deiPrm.enableLineSkipSc = FALSE ;
            deiPrm.enableDeiForceBypass = FALSE;//TRUE ; //Input is progressive TRUE
            deiPrm.inputDeiFrameRate = 60;
            deiPrm.outputDeiFrameRate = 30;//FS:RAJ///60;
            deiPrm.outQueParams[DEI_OUT_SUB_STRAMER].nextLink =  gVcapModuleContext.nsfId[0] ;
    
            deiPrm.enableOut[DEI_OUT_SUB_STRAMER] = TRUE;
            deiPrm.comprEnable = FALSE;
            deiPrm.setVipScYuv422Format = TRUE;    // FALSE->yuv420sp,  TRUE->yuv422i //From DEI o/p to 422I
            deiPrm.inputFrameRate[DEI_OUT_SUB_STRAMER] = 30;//FS:RAJ //60;
            deiPrm.outputFrameRate[DEI_OUT_SUB_STRAMER] = 30;//FS:RAJ //60;
    
            deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].scaleMode = DEI_SCALE_MODE_ABSOLUTE;
            deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].absoluteResolution.outWidth  = 720;
            deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].absoluteResolution.outHeight = 480;
            for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
                deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][chId] = deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0];
    
    		NsfLink_CreateParams_Init(&nsfPrm);
                    nsfPrm.bypassNsf                        = TRUE;
                    nsfPrm.tilerEnable                      = FALSE;
                    //nsfPrm.inQueParams.prevLinkId           = gVcapModuleContext.captureId  ;
                    nsfPrm.inQueParams.prevLinkId           = gDeiId ;
                    nsfPrm.inQueParams.prevLinkQueId        = 0;
                    nsfPrm.numOutQue                        = 1;
                    nsfPrm.outQueParams[0].nextLink         = SYSTEM_VPSS_LINK_ID_MERGE_1 ;
                    nsfPrm.numBufsPerCh                     = 5;//FS:RAJ //3;
    		nsfPrm.nsfStrength = gUI_mcfw_config.vnfStrength;
    
    #else 
            sdNullPrm.numInQue = 1;
            sdNullPrm.inQueParams[0].prevLinkId =  gVcapModuleContext.captureId  ;
            sdNullPrm.inQueParams[0].prevLinkQueId = 0;
    #endif
    
            /* Merge Link params */
    #ifdef NULLLINK
            mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 1;   
    #else 
            mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 2;   
    #endif
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId =  SYSTEM_LINK_ID_SCLR_INST_0  ; 
            //mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId = gVcamModuleContext.cameraId ; // SYSTEM_LINK_ID_SCLR_INST_0  ; 
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
    #ifndef NULLLINK
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =  gVcapModuleContext.nsfId[0] ;
            //mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =  gDeiId ;
            //mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = gVcapModuleContext.captureId  ; // gDeiId ;
            mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 0;
    #endif
            mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVdisModuleContext.swMsId[0] ;
            mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;
    
            /* SW MS Link */
            SwMsLink_CreateParams_Init(&swMsPrm);
            swMsPrm.numSwMsInst               = 1;
            //swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_SC5;
            //swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_DEI_SC ; //SYSTEM_SW_MS_SC_INST_VIP0_SC;
            swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_VIP0_SC;
            //swMsPrm.swMsInstStartWin[0]       = 0;
            swMsPrm.inQueParams.prevLinkId    = SYSTEM_VPSS_LINK_ID_MERGE_1 ; //gDeiId; //gVcapModuleContext.captureId;
            swMsPrm.inQueParams.prevLinkQueId = 0;
            swMsPrm.outQueParams.nextLink     = gVdisModuleContext.displayId[VDIS_DEV_SD] ;//gDupId_cbb[DIS_DUP_IDX];
            swMsPrm.maxInputQueLen            =  4 ; // SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
            swMsPrm.maxOutRes                 = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
            swMsPrm.lineSkipMode              = FALSE;
            swMsPrm.enableLayoutGridDraw      = FALSE ; //gVdisModuleContext.vdisConfig.enableLayoutGridDraw;
            swMsPrm.enableProcessTieWithDisplay = FALSE;
            //swMsPrm.layoutPrm.outputFPS = 30 ;
    
            MultiCh_swMsGetDefaultLayoutPrm(SYSTEM_DC_VENC_SD,&swMsPrm,FALSE);
    
            /* display link params */
            MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm);
            displayPrm.inQueParams[0].prevLinkId =  gVdisModuleContext.swMsId[0]; //MergeId[NUM_MERGE_LINK] ; //gVcapModuleContext.captureId;
            displayPrm.inQueParams[0].prevLinkQueId = 0;
            displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
            displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SD ;  // CVBS
    
    
        System_linkCreate(gVcamModuleContext.cameraId, &cameraPrm, sizeof(cameraPrm));
        System_linkControl(gVcamModuleContext.cameraId, CAMERA_LINK_CMD_DETECT_VIDEO, NULL, 0, TRUE);
        
        /* display scaler link */
        System_linkCreate( SYSTEM_LINK_ID_SCLR_INST_0 , &disp_sclrPrm, sizeof(disp_sclrPrm));  
        
        System_linkCreate( gVcapModuleContext.captureId, &capturePrm,  sizeof(capturePrm));
    
        /* null link*/
    #ifdef NULLLINK
        System_linkCreate(SYSTEM_VPSS_LINK_ID_NULL_1 ,&sdNullPrm, sizeof(sdNullPrm));
    #else 
        System_linkCreate(gDeiId,&deiPrm,sizeof(DeiLink_CreateParams));
    
        /* Nsf */ 
        System_linkCreate( gVcapModuleContext.nsfId[0] , &nsfPrm, sizeof(NsfLink_CreateParams));  
    #endif
    
        /* Merge Link */
        System_linkCreate( SYSTEM_VPSS_LINK_ID_MERGE_1 , &mergePrm[CAM_STREAM_MERGE_IDX], sizeof(mergePrm[CAM_STREAM_MERGE_IDX]));
    
        System_linkCreate(gVdisModuleContext.swMsId[0],&swMsPrm,sizeof(swMsPrm));
    
        /* display link */
        System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm,sizeof(displayPrm));
    
        OSA_printf("USECASE SETUP DONE\n");
    }
    
    /* ===================================================================
     *  @func     MultiCh_deleteStreamCaptureDisplay
     *
     *  @desc     Function does the following
     *
     *  @modif    This function modifies the following structures
     *
     *  @inputs   This function takes the following inputs
     *            <argument name>
     *            Description of usage
     *            <argument name>
     *            Description of usage
     *
     *  @outputs  <argument name>
     *            Description of usage
     *
     *  @return   Return value of this function if any
     *  ==================================================================
     */
    //Void MultiCh_deleteStreamCaptureDisplay()
    Void MultiCh_delete_tvp5158_CaptureDisplay()
    {
        UInt32 MergeId[NUM_MERGE_LINK];
    
        MergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
      /* display link */
        System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_SD]);
    
     /* Merge Link */
        System_linkDelete(MergeId[CAM_STREAM_MERGE_IDX]);
    
    //AV support start
    #if 0
        if( Av_scalerId != SYSTEM_LINK_ID_INVALID )
        {
            System_linkDelete(Av_scalerId);
            Av_scalerId = SYSTEM_LINK_ID_INVALID ;
        }
    #endif
    //AV support End
    
        /* Camera Link */
        System_linkDelete(gVcapModuleContext.captureId);
        /* Print the HWI, SWI and all tasks load */
        /* Reset the accumulated timer ticks */
        MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);
        
        OSA_printf("USECASE TEARDOWN DONE\n");
    }
    

    BR,

    RAJ M

  • Hi,

    I enabled SYSTEM_DEBUG_RT to find the real time consuming between link for video flickering.

    But i could not find the delay between links.

    Below i attached my log with SYSTEM_DEBUG_RT enabled

    I am still facing flickering issue...Kindly suggest where could be the problem..

    2388.RT_log.txt

    BR

    RAJ M

  • You can use the function Utils_getCurTimeInMsec() to get the current timestamp. You can attach the timestamp at the first link and can refer that at each of your subsequent links.
  • Hi Karthick Kumaran A S V ,

    Thanks for your reply..,

    In the Above post i attached RT_log.txt 

    In that log CAMERA: Dequeued 1 frames at 167327

    next dequeue at 167360 CAMERA: Dequeued 1 frames 

    167360 - 167327 = 33msec

    So each frame take 33msec(30fps).

    [m3vpss ] 167327: CAMERA: Dequeued 1 frames !!!
    [m3vpss ] 168479: NSF: Returned 3 frames to NF channels !!!
    [m3vpss ] 168480: SCLR : Received 1 IN frames !!!
    [m3vpss ] 168481: SCLR : Submitting 1 frames !!!
    [m3vpss ] 168482: CAPTURE: Dequeued 3 frames !!!
    [m3vpss ] 168483: DEI : Received 3 IN frames !!!
    [m3vpss ] 168483: DEI : Submitting 3 frames !!!
    [m3vpss ] 168486: NSF: Noise Filtering of 3 frames Done !!!
    [m3vpss ] 168488: DISPLAY: Deque 1 frames
    [m3vpss ] 168489: DEI : Completed 3 frames !!!
    [m3vpss ] 168490: DEI : Released 4 IN frames !!!
    [m3vpss ] 168490: CAPTURE: Queued back 3 frames !!!
    [m3vpss ] 168490: DEI : Submitting 0 frames !!!
    [m3vpss ] 168490: DISPLAY: Queue 1 frames
    [m3vpss ] 168494: SCLR : Completed 1 frames !!!
    [m3vpss ] 168495: SCLR : Released 1 IN frames !!!
    [m3vpss ] 167343: CAMERA: Queued back 1 frames !!!
    [m3vpss ] 168495: SCLR : Submitting 0 frames !!!
    [m3vpss ] 168498: CAPTURE: Dequeued 3 frames !!!
    [m3vpss ] 168498: DEI : Received 3 IN frames !!!
    [m3vpss ] 168499: DEI : Submitting 3 frames !!!
    [m3vpss ] 168504: DEI : Completed 3 frames !!!
    [m3vpss ] 168504: DEI : Released 4 IN frames !!!
    [m3vpss ] 168504: CAPTURE: Queued back 3 frames !!!
    [m3vpss ] 168504: DEI : Submitting 0 frames !!!
    [m3vpss ] 168510: NSF: Noise Filtering 3 frames !!!
    [m3vpss ] 167360: CAMERA: Dequeued 1 frames !!!

    BR

    RAJ M

  • Hi Brijesh,

    If we capture video(Full HD) from AR0330@30fps sensor alone, the video capture, display, encode and streaming are working fine without any issue.

    If we capture video from 3 CVBS tvp5158 alone (4th channel we are not using masking with 0x7fffffff), the video capture, display, encode and streaming are working fine without any issue.

    But integrating both (Full HD) from AR0330 sensor with 3 CVBS tvp5158 video, the full HD video is not smooth video flickers on the display but analog video are fine. Only Full HD video is flickering.

    we enabled dei-interlacing on capture link .

    If we reduced the AR0330@15fps. Both (Full HD) from AR0330 sensor and 3 CVBS tvp5158 video are smooth no flickering.

    Where was the issue on buffer repeating on display?

    BR
    RAJ M
  • Hi TI experts,

    Still video flickering(shaking) is there as you told like old buffers are getting displayed

    Now i am getting the below logs

    Below i attached my usecase file and dei driver link 

    Why DEI link skip frame (Skipframe FLASE in usecase).


    root@dm814x-evm:~# root@dm814x-evm:~#
    root@dm814x-evm:~# root@dm814x-evm:~# rebootroot@dm814x-evm:~# [m3vpss ] ==================== CaptureLink_PrintDetails ====================
    [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 ] 200 | 3477 1739 1738 59 29 29 720 / 720 243 / 244 1 1 0/0 (0/0)
    [m3vpss ] 201 | 3478 1739 1739 59 29 29 720 / 720 243 / 244 1 0 0/0 (0/0)
    [m3vpss ] 202 | 3478 1739 1739 59 29 29 720 / 720 243 / 244 1 0 0/0 (0/0)
    [m3vpss ] 203 | 3468 1720 1748 59 29 30 720 / 720 242 / 288 1 31 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 7203
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 2, Min = 0, Avg = 0, Total = 170
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 980, 991)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x00020000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 67523: CAPTURE: Fields = 13897 (fps = 239, CPU Load = 67)
    [m3vpss ] 67524: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 67524: SYSTEM : FREE SPACE : System Heap = 403424 B, Mbx = 9213 msgs)
    [m3vpss ] 67524: SYSTEM : FREE SPACE : SR0 Heap = 13724032 B (13 MB)
    [m3vpss ] 67524: SYSTEM : FREE SPACE : Frame Buffer = 136415616 B (130 MB)
    [m3vpss ] 67524: SYSTEM : FREE SPACE : Bitstream Buffer = 62390144 B (59 MB)
    [m3vpss ] 67525: SYSTEM : FREE SPACE : Tiler Buffer = 15 B (0 MB) - TILER OFF
    [m3vpss ] =================================================================
    [m3vpss ] 69147: CAMERA: Fields = 1814 (fps = 30, CPU Load = 67)
    [m3vpss ] 69147: CAMERA: Num Resets = 1 (Avg 3 ms per reset)
    [m3vpss ]
    [m3vpss ] *** [Scalar0 ] SCLR Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 61 secs
    [m3vpss ] Total Fields Processed : 1814
    [m3vpss ] Total Fields FPS : 89 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 | 29 0 29 29 0 0 9 20
    [m3vpss ]
    [m3vpss ] 69339: CAMERA: Fields = 1819 (fps = 30), Total Resets = 1 (Avg 3 ms per reset)
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 62 secs
    [m3vpss ] Total Fields Processed : 14900
    [m3vpss ] Total Fields FPS : 534 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Skip Out[0] Skip Out[1] Skip Out[2] User Out[0] User Out[1] User Out[2] Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS Skip FPS Skip FPS Skip FPS Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 60 0 60 30 0 0 29 60 0 0 0 0 3 / 15
    [m3vpss ] 1 | 60 0 60 30 0 0 29 60 0 0 0 0 5 / 16
    [m3vpss ] 2 | 60 0 60 30 0 0 29 60 0 0 0 0 4 / 16
    [m3vpss ] 3 | 59 0 59 30 0 0 29 59 0 0 0 0 3 / 15
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 62 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 30 fps (1876 frames)
    [m3vpss ] Output Actual FPS : 30 fps (1870 frames)
    [m3vpss ] Output Drop FPS : 0 fps (6 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 33 ms
    [m3vpss ] Scaling Internal min : 31 ms
    [m3vpss ] Scaling Internal max : 40 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 | 30 0 0 30 30 0 2 ( 5/ 5) 0 0 0 33 / 136
    [m3vpss ] 1 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 21 / 262
    [m3vpss ] 2 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 21 / 290
    [m3vpss ] 3 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 29 / 288
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Parameters ***
    [m3vpss ]
    [m3vpss ] Output FPS: 30
    [m3vpss ]
    [m3vpss ] Win | Ch | Input | Input | Input | Input | Output | Output | Output | Output | Low Cost | SWMS | Data |
    [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|
    [m3vpss ] --------------------------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 | 0, 0 | 720 x 240 | 2880 / 0 | NON-TILED | 0, 0 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 422I |
    [m3vpss ] 1 | 1 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 360, 240 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ] 2 | 2 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 0, 240 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ] 3 | 3 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 360, 0 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 71735: DISPLAY: SDDAC(SEC1): 29 fps, Latency (Min / Max) = ( 17 / 319 ), Callback Interval (Min / Max) = ( 30 / 38 ) !!!
    [m3vpss ]
    [m3vpss ] 75938: LOAD: CPU: 34.3% HWI: 9.8%, SWI:2.0%
    [m3vpss ]
    [m3vpss ] 75938: LOAD: TSK: SYSTEM : 0.1%
    [m3vpss ] 75938: LOAD: TSK: CAPTURE : 0.8%
    [m3vpss ] 75938: LOAD: TSK: CAMERA : 0.3%
    [m3vpss ] 75938: LOAD: TSK: NSF0 : 3.5%
    [m3vpss ] 75938: LOAD: TSK: DEI2 : 4.4%
    [m3vpss ] 75939: LOAD: TSK: DISPLAY2 : 1.2%
    [m3vpss ] 75939: LOAD: TSK: Scalar0 : 3.0%
    [m3vpss ] 75939: LOAD: TSK: SWMS0 : 3.8%
    [m3vpss ] 75939: LOAD: TSK: MERGE1 : 1.0%
    [m3vpss ] 75939: LOAD: TSK: MISC : 4.4%
    [m3vpss ]
    [m3video]
    [m3video] 76440: LOAD: CPU: 2.3% HWI: 1.5%, SWI:0.5%
    [m3video]
    [m3video] 76440: LOAD: TSK: SYSTEM : 0.1%
    [m3video] 76440: LOAD: TSK: MISC : 0.2%
    [m3video]

    [host] 68951: MSGQ: WARNING: Trying to send command [0x8003] to link [4144976] on processor [DSP], BUT [DSP] is NOT present on this platform !!!

    [host] 68951: MSGQ: WARNING: Trying to send command [0x8003] to link [4144976] on processor [DSP], BUT [DSP] is NOT present on this platform !!!
    [m3vpss ]
    [m3vpss ] *** CAPTURE Statistics ***
    [m3vpss ] 76942: CAPTURE: Queued to driver = 16176, Dequeued from driver = 16155
    [m3vpss ] CAPTURE [0] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 3, wrPtr 27, rdPtr 24
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ] 76953: DEI: Rcvd from prev = 16155, Returned to prev = 16147
    [m3vpss ] DEI Out [0] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 9, wrPtr 52, rdPtr 43
    [m3vpss ] DEI Out [1] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] DEI Out [2] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ] 76954: SWMS: Rcvd from prev = 10135, Returned to prev = 10119
    [m3vpss ] SWMS Out Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 108, rdPtr 108
    [m3vpss ] Full Q -> count 1, wrPtr 108, rdPtr 107
    [m3vpss ]
    [m3vpss ] *** Display Statistics ***
    [m3vpss ] 76954: DISPLAY: Rcvd from prev = 2027, Returned to prev = 2022, BufsInDriver = 7

    [host]
    Usecase is Active !!!
    [m3vpss ] ==================== CaptureLink_PrintDetails ====================
    [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 ] 200 | 6955 3478 3477 59 29 29 720 / 720 243 / 244 1 1 0/0 (0/0)
    [m3vpss ] 201 | 6956 3478 3478 59 29 29 720 / 720 243 / 244 1 0 0/0 (0/0)
    [m3vpss ] 202 | 6956 3478 3478 59 29 29 720 / 720 243 / 244 1 0 0/0 (0/0)
    [m3vpss ] 203 | 6936 3439 3497 59 29 30 720 / 720 242 / 288 1 61 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 14405
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 2, Min = 0, Avg = 0, Total = 328
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 979, 990)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x00020000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 125549: CAPTURE: Fields = 27799 (fps = 239, CPU Load = 67)
    [m3vpss ] 125549: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 125550: SYSTEM : FREE SPACE : System Heap = 403424 B, Mbx = 9213 msgs)
    [m3vpss ] 125550: SYSTEM : FREE SPACE : SR0 Heap = 13724032 B (13 MB)
    [m3vpss ] 125550: SYSTEM : FREE SPACE : Frame Buffer = 136415616 B (130 MB)
    [m3vpss ] 125550: SYSTEM : FREE SPACE : Bitstream Buffer = 62390144 B (59 MB)
    [m3vpss ] 125550: SYSTEM : FREE SPACE : Tiler Buffer = 15 B (0 MB) - TILER OFF
    [m3vpss ] =================================================================
    [m3vpss ] ==================== CameraLink_PrintDetails ====================
    [m3vpss ] 128082: CAMERA: Fields = 3601 (fps = 30, CPU Load = 60)
    [m3vpss ] 128083: CAMERA: Num Resets = 1 (Avg 3 ms per reset)
    [m3vpss ] =================================================================
    [m3vpss ] 129370: CAMERA: Fields = 1820 (fps = 30), Total Resets = 1 (Avg 3 ms per reset)
    [m3vpss ] 137921: CAMERA: Fields = 3899 (fps = 30, CPU Load = 57)
    [m3vpss ] 137921: CAMERA: Num Resets = 1 (Avg 3 ms per reset)
    [m3vpss ]
    [m3vpss ] *** [Scalar0 ] SCLR Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 69 secs
    [m3vpss ] Total Fields Processed : 3899
    [m3vpss ] Total Fields FPS : 90 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 | 30 0 30 30 0 0 9 21
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 69 secs
    [m3vpss ] Total Fields Processed : 31492
    [m3vpss ] Total Fields FPS : 535 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Skip Out[0] Skip Out[1] Skip Out[2] User Out[0] User Out[1] User Out[2] Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS Skip FPS Skip FPS Skip FPS Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 60 0 60 30 0 0 30 60 0 0 0 0 1 / 15
    [m3vpss ] 1 | 60 0 60 30 0 0 30 60 0 0 0 0 3 / 14
    [m3vpss ] 2 | 60 0 60 30 0 0 30 60 0 0 0 0 5 / 15
    [m3vpss ] 3 | 59 0 59 30 0 0 29 59 0 0 0 0 3 / 15
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 69 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 30 fps (2084 frames)
    [m3vpss ] Output Actual FPS : 30 fps (2076 frames)
    [m3vpss ] Output Drop FPS : 0 fps (8 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 33 ms
    [m3vpss ] Scaling Internal min : 29 ms
    [m3vpss ] Scaling Internal max : 38 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 | 30 0 0 30 30 0 3 ( 5/ 5) 0 0 0 60 / 136
    [m3vpss ] 1 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 126 / 285
    [m3vpss ] 2 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 218 / 298
    [m3vpss ] 3 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 157 / 283
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Parameters ***
    [m3vpss ]
    [m3vpss ] Output FPS: 30
    [m3vpss ]
    [m3vpss ] Win | Ch | Input | Input | Input | Input | Output | Output | Output | Output | Low Cost | SWMS | Data |
    [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|
    [m3vpss ] --------------------------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 | 0, 0 | 720 x 240 | 2880 / 0 | NON-TILED | 0, 0 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 422I |
    [m3vpss ] 1 | 1 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 360, 240 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ] 2 | 2 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 0, 240 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ] 3 | 3 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 360, 0 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 140978: DISPLAY: SDDAC(SEC1): 29 fps, Latency (Min / Max) = ( 180 / 318 ), Callback Interval (Min / Max) = ( 29 / 38 ) !!!
    [m3vpss ]
    [m3vpss ] 145182: LOAD: CPU: 34.4% HWI: 9.8%, SWI:2.0%
    [m3vpss ]
    [m3vpss ] 145184: LOAD: TSK: SYSTEM : 0.1%
    [m3vpss ] 145184: LOAD: TSK: CAPTURE : 0.8%
    [m3vpss ] 145184: LOAD: TSK: CAMERA : 0.4%
    [m3vpss ] 145184: LOAD: TSK: NSF0 : 3.4%
    [m3vpss ] 145184: LOAD: TSK: DEI2 : 4.4%
    [m3vpss ] 145185: LOAD: TSK: DISPLAY2 : 1.2%
    [m3vpss ] 145185: LOAD: TSK: Scalar0 : 3.1%
    [m3vpss ] 145185: LOAD: TSK: SWMS0 : 3.8%
    [m3vpss ] 145185: LOAD: TSK: MERGE1 : 1.0%
    [m3vpss ] 145185: LOAD: TSK: MISC : 4.4%
    [m3vpss ]
    [m3video]
    [m3video] 145686: LOAD: CPU: 2.3% HWI: 1.5%, SWI:0.5%
    [m3video]
    [m3video] 145686: LOAD: TSK: SYSTEM : 0.1%
    [m3video] 145687: LOAD: TSK: MISC : 0.2%
    [m3video]

    [host] 138197: MSGQ: WARNING: Trying to send command [0x8003] to link [4144976] on processor [DSP], BUT [DSP] is NOT present on this platform !!!

    [host] 138197: MSGQ: WARNING: Trying to send command [0x8003] to link [4144976] on processor [DSP], BUT [DSP] is NOT present on this platform !!!
    [m3vpss ]
    [m3vpss ] *** CAPTURE Statistics ***
    [m3vpss ] 146188: CAPTURE: Queued to driver = 32766, Dequeued from driver = 32742
    [m3vpss ] CAPTURE [0] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 102, rdPtr 102
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ] 146188: DEI: Rcvd from prev = 32742, Returned to prev = 32734
    [m3vpss ] DEI Out [0] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 4, wrPtr 281, rdPtr 277
    [m3vpss ] DEI Out [1] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] DEI Out [2] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ] 146189: SWMS: Rcvd from prev = 20510, Returned to prev = 20496
    [m3vpss ] SWMS Out Buf Q Status
    [m3vpss ] Empty Q -> count 1, wrPtr 263, rdPtr 262
    [m3vpss ] Full Q -> count 0, wrPtr 262, rdPtr 262
    [m3vpss ]
    [m3vpss ] *** Display Statistics ***
    [m3vpss ] 146190: DISPLAY: Rcvd from prev = 4102, Returned to prev = 4097, BufsInDriver = 7

    [host]
    Usecase is Active !!!
    [m3vpss ] ==================== CaptureLink_PrintDetails ====================
    [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 ] 200 | 10433 5217 5216 59 29 29 720 / 720 243 / 244 1 1 0/0 (0/0)
    [m3vpss ] 201 | 10434 5217 5217 59 29 29 720 / 720 243 / 244 1 0 0/0 (0/0)
    [m3vpss ] 202 | 10434 5217 5217 59 29 29 720 / 720 243 / 244 1 0 0/0 (0/0)
    [m3vpss ] 203 | 10404 5158 5246 59 29 30 720 / 720 242 / 288 1 91 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 21607
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 2, Min = 0, Avg = 0, Total = 493
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 979, 990)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x00420000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 183577: CAPTURE: Fields = 41701 (fps = 239, CPU Load = 67)
    [m3vpss ] 183577: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 183577: SYSTEM : FREE SPACE : System Heap = 403424 B, Mbx = 9212 msgs)
    [m3vpss ] 183577: SYSTEM : FREE SPACE : SR0 Heap = 13724032 B (13 MB)
    [m3vpss ] 183577: SYSTEM : FREE SPACE : Frame Buffer = 136415616 B (130 MB)
    [m3vpss ] 183578: SYSTEM : FREE SPACE : Bitstream Buffer = 62390144 B (59 MB)
    [m3vpss ] 183578: SYSTEM : FREE SPACE : Tiler Buffer = 15 B (0 MB) - TILER OFF
    [m3vpss ] =================================================================
    [m3vpss ] 189396: CAMERA: Fields = 1820 (fps = 30), Total Resets = 1 (Avg 3 ms per reset)
    [m3vpss ] 206674: CAMERA: Fields = 5983 (fps = 30, CPU Load = 56)
    [m3vpss ] 206674: CAMERA: Num Resets = 1 (Avg 3 ms per reset)
    [m3vpss ]
    [m3vpss ] *** [Scalar0 ] SCLR Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 69 secs
    [m3vpss ] Total Fields Processed : 5983
    [m3vpss ] Total Fields FPS : 90 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 | 30 0 30 30 0 0 9 20
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 69 secs
    [m3vpss ] Total Fields Processed : 48079
    [m3vpss ] Total Fields FPS : 535 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Skip Out[0] Skip Out[1] Skip Out[2] User Out[0] User Out[1] User Out[2] Latency
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS Skip FPS Skip FPS Skip FPS Min / Max
    [m3vpss ] ------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 60 0 60 30 0 0 30 60 0 0 0 0 3 / 15
    [m3vpss ] 1 | 60 0 60 30 0 0 30 60 0 0 0 0 3 / 15
    [m3vpss ] 2 | 60 0 60 30 0 0 30 60 0 0 0 0 3 / 15
    [m3vpss ] 3 | 59 0 59 30 0 0 29 59 0 0 0 0 3 / 15
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time: 69 secs
    [m3vpss ]
    [m3vpss ] Output Request FPS : 30 fps (2084 frames)
    [m3vpss ] Output Actual FPS : 30 fps (2076 frames)
    [m3vpss ] Output Drop FPS : 0 fps (8 frames)
    [m3vpss ] Output Reject FPS : 0 fps (0 frames)
    [m3vpss ] Scaling Internal : 33 ms
    [m3vpss ] Scaling Internal min : 31 ms
    [m3vpss ] Scaling Internal max : 37 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 | 30 0 0 30 30 0 3 ( 5/ 5) 0 0 0 45 / 145
    [m3vpss ] 1 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 125 / 250
    [m3vpss ] 2 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 222 / 294
    [m3vpss ] 3 | 30 0 0 30 30 0 0 ( 0/255) 0 0 0 158 / 256
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Parameters ***
    [m3vpss ]
    [m3vpss ] Output FPS: 30
    [m3vpss ]
    [m3vpss ] Win | Ch | Input | Input | Input | Input | Output | Output | Output | Output | Low Cost | SWMS | Data |
    [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|
    [m3vpss ] --------------------------------------------------------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 0 | 0, 0 | 720 x 240 | 2880 / 0 | NON-TILED | 0, 0 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 422I |
    [m3vpss ] 1 | 1 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 360, 240 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ] 2 | 2 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 0, 240 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ] 3 | 3 | 0, 0 | 720 x 240 | 1472 / 1472 | NON-TILED | 360, 0 | 360 x 240 | 1440 / 0 | NON-TILED | ON | 0 | 420SP |
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 210219: DISPLAY: SDDAC(SEC1): 29 fps, Latency (Min / Max) = ( 165 / 286 ), Callback Interval (Min / Max) = ( 29 / 38 ) !!!
    [m3vpss ]
    [m3vpss ] 214422: LOAD: CPU: 34.5% HWI: 9.8%, SWI:2.0%
    [m3vpss ]
    [m3vpss ] 214423: LOAD: TSK: SYSTEM : 0.1%
    [m3vpss ] 214423: LOAD: TSK: CAPTURE : 0.8%
    [m3vpss ] 214423: LOAD: TSK: CAMERA : 0.3%
    [m3vpss ] 214423: LOAD: TSK: NSF0 : 3.6%
    [m3vpss ] 214424: LOAD: TSK: DEI2 : 4.5%
    [m3vpss ] 214424: LOAD: TSK: DISPLAY2 : 1.2%
    [m3vpss ] 214424: LOAD: TSK: Scalar0 : 3.0%
    [m3vpss ] 214424: LOAD: TSK: SWMS0 : 3.8%
    [m3vpss ] 214425: LOAD: TSK: MERGE1 : 1.0%
    [m3vpss ] 214425: LOAD: TSK: MISC : 4.4%
    [m3vpss ]
    [m3video]
    [m3video] 214926: LOAD: CPU: 2.3% HWI: 1.5%, SWI:0.5%
    [m3video]
    [m3video] 214926: LOAD: TSK: SYSTEM : 0.1%
    [m3video] 214926: LOAD: TSK: MISC : 0.2%
    [m3video]

    [host] 207440: MSGQ: WARNING: Trying to send command [0x8003] to link [4144976] on processor [DSP], BUT [DSP] is NOT present on this platform !!!

    [host] 207440: MSGQ: WARNING: Trying to send command [0x8003] to link [4144976] on processor [DSP], BUT [DSP] is NOT present on this platform !!!
    [m3vpss ]
    [m3vpss ] *** CAPTURE Statistics ***
    [m3vpss ] 215431: CAPTURE: Queued to driver = 49355, Dequeued from driver = 49334
    [m3vpss ] CAPTURE [0] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 182, rdPtr 182
    [m3vpss ]
    [m3vpss ] *** [DEI2 ] DEI Statistics ***
    [m3vpss ] 215432: DEI: Rcvd from prev = 49334, Returned to prev = 49326
    [m3vpss ] DEI Out [0] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 10, wrPtr 139, rdPtr 129
    [m3vpss ] DEI Out [1] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] DEI Out [2] Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ] Full Q -> count 0, wrPtr 0, rdPtr 0
    [m3vpss ]
    [m3vpss ] *** [SWMS0] Mosaic Statistics ***
    [m3vpss ] 215433: SWMS: Rcvd from prev = 30900, Returned to prev = 30884
    [m3vpss ] SWMS Out Buf Q Status
    [m3vpss ] Empty Q -> count 0, wrPtr 34, rdPtr 34
    [m3vpss ] Full Q -> count 1, wrPtr 34, rdPtr 33
    [m3vpss ]
    [m3vpss ] *** Display Statistics ***
    [m3vpss ] 215434: DISPLAY: Rcvd from prev = 6177, Returned to prev = 6172, BufsInDriver = 7

    1016.multich_capturedisplay_mosaic.c
    /** ==================================================================
     *  @file   multich_Stream_CaptureDisplay.c
     *
     *  @path    ipnc_mcfw/mcfw/src_linux/mcfw_api/usecases/
     *
     *  @desc   This  File contains.
     * ===================================================================
     *  Copyright (c) Texas Instruments Inc 2011, 2012
     *
     *  Use of this software is controlled by the terms and conditions found
     *  in the license agreement under which this software has been supplied
     * ===================================================================*/
    
    #include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
    #include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"
    #include "demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.h"
    
    /* =============================================================================
     * Externs
     * ============================================================================= */
    
    //#define NULLLINK  1
    
    
    UInt32 gDispSclrId ;
    UInt32 gDeiId;
    /* =============================================================================
     * Use case code
     * ============================================================================= */
    static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl = {
    	.isPopulated = 1,
    	.ivaMap[0] = {
    		.EncNumCh = 2,
    		.EncChList = {0, 1},
    		.DecNumCh = 2,
    		.DecChList = {0, 1},
    	},
    
    };
    /* Merge Link for camera streams */
    #define NUM_MERGE_LINK              (1) 
    #define NUM_DUP_LINK           (3)
    #define HDMIDIS_DUP_IDX        (0)
    #define RAW_DUP_IDX            (2)
    #define CAM_STREAM_MERGE_IDX        (0)
    
    #define DEI_OUT_MAIN_STRAMER    (DEI_LINK_OUT_QUE_DEI_SC) // (DEI_LINK_OUT_QUE_VIP_SC // YUV422I WB0/1
    #define DEI_OUT_SUB_STRAMER     (DEI_LINK_OUT_QUE_DEI_SC) // (DEI_LINK_OUT_QUE_VIP_SC)
    
    /* ===================================================================
     *  @func     MultiCh_createStreamCaptureDisplay
     *
     *  @desc     Function does the following
     *
     *  @modif    This function modifies the following structures
     *
     *  @inputs   This function takes the following inputs
     *            <argument name>
     *            Description of usage
     *            <argument name>
     *            Description of usage
     *
     *  @outputs  <argument name>
     *            Description of usage
     *
     *  @return   Return value of this function if any
     *  ==================================================================
     */
    //Void MultiCh_createStreamCaptureDisplay()
    Void MultiCh_tvp5158_CaptureDisplay11()
    {
    	UInt32 chId;
    
    	MergeLink_CreateParams mergePrm[NUM_MERGE_LINK];
    	UInt32 mergeId[NUM_MERGE_LINK];
    	SclrLink_CreateParams       disp_sclrPrm; 
    
    	CameraLink_VipInstParams *pCameraInstPrm;
    	CameraLink_OutParams *pCameraOutPrm;
    	CameraLink_CreateParams cameraPrm;
    
    	CaptureLink_CreateParams capturePrm;
    	SwMsLink_CreateParams swMsPrm;
    	DisplayLink_CreateParams displayPrm;
    
    	//NullLink_CreateParams nulllink ;
    	NullLink_CreateParams sdNullPrm;
    	NsfLink_CreateParams nsfPrm;
    
    	CaptureLink_VipInstParams *pCaptureInstPrm;
    	CaptureLink_OutParams *pCaptureOutPrm;
    	DeiLink_CreateParams              deiPrm ;
    	OSA_printf("\n ** MultiCh_tvp5158_CaptureDisplay **\n\n");
    
    	MultiCh_detectBoard();
    
    	MULTICH_INIT_STRUCT(DeiLink_CreateParams, deiPrm);
    
    	System_linkControl(SYSTEM_LINK_ID_M3VPSS,
    			SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
    
    	System_linkControl(SYSTEM_LINK_ID_M3VIDEO,
    			SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
    			&systemVid_encDecIvaChMapTbl,
    			sizeof(SystemVideo_Ivahd2ChMap_Tbl), TRUE);
    
    	gVcamModuleContext.cameraId = SYSTEM_LINK_ID_CAMERA;
    
    	gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
    	//gVcamModuleContext.sclrId[1] = SYSTEM_LINK_ID_SCLR_INST_1;
    	//gVcamModuleContext.sclrId[2] = SYSTEM_LINK_ID_SCLR_INST_2;
    	//gVcamModuleContext.sclrId[3] = SYSTEM_LINK_ID_SCLR_INST_3;
    
    	gVcapModuleContext.nsfId[0]     = SYSTEM_LINK_ID_NSF_0;
    	gVcapModuleContext.nsfId[1]     = SYSTEM_LINK_ID_NSF_1;
    	gVcapModuleContext.deiId[0]     = SYSTEM_LINK_ID_DEI_0;
    
    	gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
    	gVdisModuleContext.swMsId[0] = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
    	gVdisModuleContext.displayId[VDIS_DEV_SD] = SYSTEM_LINK_ID_DISPLAY_2;
    	gDispSclrId = SYSTEM_LINK_ID_SCLR_INST_2 ;
    	gDeiId = SYSTEM_LINK_ID_DEI_0;// SYSTEM_LINK_ID_DEI_HQ_1;
    	{
    		gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
    		/* Camera Link params */
    		CameraLink_CreateParams_Init(&cameraPrm);
    
    		cameraPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;
    
    		//cameraPrm.outQueParams[0].nextLink  =  SYSTEM_VPSS_LINK_ID_MERGE_1 ;
    		cameraPrm.outQueParams[0].nextLink  =  SYSTEM_LINK_ID_SCLR_INST_0 ;
    		//cameraPrm.outQueParams[0].nextLink  = scalerId[0] ; 
    
    		/* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
    		 * audio channels connected in cascade */
    		cameraPrm.numAudioChannels = 0;
    		cameraPrm.numVipInst = 1;
    		cameraPrm.tilerEnable = FALSE;
    		cameraPrm.vsEnable = 0 ; //gUI_mcfw_config.vsEnable;
    
    		pCameraInstPrm = &cameraPrm.vipInst[0];
    		pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
    		pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
    		pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;
    		pCameraInstPrm->sensorOutWidth  = 1920;
    		pCameraInstPrm->sensorOutHeight = 1080;
    
    		if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
    		{
    			pCameraInstPrm->standard = SYSTEM_STD_1080P_60;
    			//pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
    		}
    		else
    		{
    			pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
    			cameraPrm.issVnfEnable = 1;
    		}
    
    		pCameraInstPrm->numOutput = 1;
    
    		/* First stream */
    		pCameraOutPrm = &pCameraInstPrm->outParams[0];
    
    		//pCameraOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV ; 		
    		pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV; 		
    
    		pCameraOutPrm->scEnable = FALSE;
    		//pCameraOutPrm->scOutWidth = 720 ; // 1920;
    		//pCameraOutPrm->scOutHeight = 480; // 1080;
    		pCameraOutPrm->scOutWidth = 1920;
    		pCameraOutPrm->scOutHeight = 1080;
    		pCameraOutPrm->outQueId = 0;
    		//pCameraOutPrm->standard    = SYSTEM_STD_480P;
    		cameraPrm.vnfFullResolution = FALSE;
    
    		cameraPrm.vnfLinkId = SYSTEM_LINK_ID_INVALID;
    
    		/* 2A config */
    		cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
    		cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
    #if 1               
    		/*Display Scaler Configration*/
    		SclrLink_CreateParams_Init(&disp_sclrPrm);
    		{
    			disp_sclrPrm.inQueParams.prevLinkId             = gVcamModuleContext.cameraId ; 
    			disp_sclrPrm.inQueParams.prevLinkQueId          = 0;
    		}
    		disp_sclrPrm.outQueParams.nextLink              =  SYSTEM_VPSS_LINK_ID_MERGE_1 ; //mergeId[CVBS_DUP_LINK_IDX]; 
    		//disp_sclrPrm.outQueParams.nextLink              =  SYSTEM_LINK_ID_SCLR_INST_0 ; //SYSTEM_VPSS_LINK_ID_MERGE_1 ; //mergeId[CVBS_DUP_LINK_IDX]; 
    		disp_sclrPrm.tilerEnable                        = FALSE;
    		disp_sclrPrm.enableLineSkipSc                   = FALSE;
    		disp_sclrPrm.inputFrameRate                     = 30;//FS:RAJ //60;
    		disp_sclrPrm.outputFrameRate                    = 30;//FS:RAJ //60;
    		disp_sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
    		disp_sclrPrm.outScaleFactor.absoluteResolution.outWidth   = 720;
    		disp_sclrPrm.outScaleFactor.absoluteResolution.outHeight  = 480;
    		disp_sclrPrm.outDataFormat = VF_YUV422I_YUYV;
    		disp_sclrPrm.pathId = SCLR_LINK_SEC0_SC3;
    		//disp_sclrPrm.pathId = SCLR_LINK_SEC1_SC4;
    #endif
    
    	}
    
    
    	/* Capture Link params */
    	CaptureLink_CreateParams_Init(&capturePrm);
    	capturePrm.numVipInst		    = 1;
    	capturePrm.tilerEnable		    = FALSE;
    	capturePrm.numBufsPerCh		    = 8;//FS:RAJ//10; //4;
    
    	capturePrm.fakeHdMode                 = FALSE;
    	capturePrm.enableSdCrop               = FALSE;
    	capturePrm.doCropInCapture            = FALSE;
    
    	pCaptureInstPrm                     = &capturePrm.vipInst[0];
    	pCaptureInstPrm->vipInstId          = SYSTEM_CAPTURE_INST_VIP1_PORTA; //set capture port ID
    	pCaptureInstPrm->videoDecoderId     = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV; //set capture external device ID
    	pCaptureInstPrm->standard           = SYSTEM_STD_MUX_4CH_D1; //set capture video standard as 4CH multiplxed D1 capture
    	pCaptureInstPrm->numOutput          = 1; //number of output per channel for a port
    	pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P; //set input data format as 16-bit YUV422
    	pCaptureOutPrm                      = &pCaptureInstPrm->outParams[0];
    
    	pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV; //output data format is YUV422I
    	pCaptureOutPrm->scEnable            = FALSE; //inline scaling disabled since this is multi-channel capture
    	pCaptureOutPrm->scOutWidth          = 0;
    	pCaptureOutPrm->scOutHeight         = 0;
    	pCaptureOutPrm->outQueId            = 0;
    
    	// next link after capture link is SW Mosaic DEI link
    #ifndef NULLLINK
    	//capturePrm.outQueParams[0].nextLink =  gVcapModuleContext.nsfId[0] ; 
    	capturePrm.outQueParams[0].nextLink =  gDeiId; 
    	//capturePrm.outQueParams[0].nextLink = SYSTEM_VPSS_LINK_ID_MERGE_1 ; // gDeiId; 
    #else
    	capturePrm.outQueParams[0].nextLink = SYSTEM_VPSS_LINK_ID_NULL_1 ; 
    #endif
    
    #ifndef NULLLINK
    	/*DEI*/
    	deiPrm.inQueParams.prevLinkId = gVcapModuleContext.captureId ; // CVBS_DISP
    	deiPrm.inQueParams.prevLinkQueId  = 0 ;
    	deiPrm.enableLineSkipSc = FALSE ;
    	deiPrm.enableDeiForceBypass = FALSE;//TRUE ; //Input is progressive TRUE
    	deiPrm.inputDeiFrameRate = 60;
    	deiPrm.outputDeiFrameRate = 60;
    	deiPrm.outQueParams[DEI_OUT_SUB_STRAMER].nextLink =  gVcapModuleContext.nsfId[0] ;
    
    	deiPrm.enableOut[DEI_OUT_SUB_STRAMER] = TRUE;
    	deiPrm.comprEnable = FALSE;
    	deiPrm.setVipScYuv422Format = FALSE;    // FALSE->yuv420sp,  TRUE->yuv422i //From DEI o/p to 422I
    	deiPrm.inputFrameRate[DEI_OUT_SUB_STRAMER] = 60;
    	deiPrm.outputFrameRate[DEI_OUT_SUB_STRAMER] = 60;
    
    	deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].scaleMode = DEI_SCALE_MODE_ABSOLUTE;
    	deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].absoluteResolution.outWidth  = 720;
    	deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].absoluteResolution.outHeight = 480;
    	//for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
    	//    deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][chId] = deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0];
    
    	//deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].scaleMode = DEI_SCALE_MODE_RATIO;
    	//deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].ratio.widthRatio.numerator    = 1;
    	//deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].ratio.widthRatio.denominator  = 1;
    	//deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].ratio.heightRatio.numerator   = 1;
    	//deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0].ratio.heightRatio.denominator     = 1;
    	for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
    		deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][chId] = deiPrm.outScaleFactor[DEI_OUT_SUB_STRAMER][0];
    
    	NsfLink_CreateParams_Init(&nsfPrm);
    	nsfPrm.bypassNsf                        = TRUE;
    	nsfPrm.tilerEnable                      = FALSE;
    	//nsfPrm.inQueParams.prevLinkId           = gVcapModuleContext.captureId  ;
    	nsfPrm.inQueParams.prevLinkId           = gDeiId ;
    	nsfPrm.inQueParams.prevLinkQueId        = 0;
    	nsfPrm.numOutQue                        = 1;
    	nsfPrm.outQueParams[0].nextLink         = SYSTEM_VPSS_LINK_ID_MERGE_1 ;
    	nsfPrm.numBufsPerCh                     = 5;//FS:RAJ //3;
    	//nsfPrm.inputFrameRate = 30;
    	//nsfPrm.numBufsPerCh = 6;
    	nsfPrm.nsfStrength = gUI_mcfw_config.vnfStrength;
    
    #else 
    	sdNullPrm.numInQue = 1;
    	sdNullPrm.inQueParams[0].prevLinkId =  gVcapModuleContext.captureId  ;
    	sdNullPrm.inQueParams[0].prevLinkQueId = 0;
    #endif
    
    	/* Merge Link params */
    #ifdef NULLLINK
    	mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 1;   
    #else 
    	mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 2;   
    #endif
    	mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId =  SYSTEM_LINK_ID_SCLR_INST_0  ; 
    	//mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId = gVcamModuleContext.cameraId ; // SYSTEM_LINK_ID_SCLR_INST_0  ; 
    	mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
    #ifndef NULLLINK
    	mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =  gVcapModuleContext.nsfId[0] ;
    	//mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =  gDeiId ;
    	//mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = gVcapModuleContext.captureId  ; // gDeiId ;
    	mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 0;
    #endif
    	mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVdisModuleContext.swMsId[0] ;
    	mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;
    
    	/* SW MS Link */
    	SwMsLink_CreateParams_Init(&swMsPrm);
    	swMsPrm.numSwMsInst               = 1;
    	//swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_SC5;
    	//swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_DEI_SC ; //SYSTEM_SW_MS_SC_INST_VIP0_SC;
    	swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_VIP0_SC;
    	//swMsPrm.swMsInstStartWin[0]       = 0;
    	swMsPrm.inQueParams.prevLinkId    = SYSTEM_VPSS_LINK_ID_MERGE_1 ; //gDeiId; //gVcapModuleContext.captureId;
    	swMsPrm.inQueParams.prevLinkQueId = 0;
    	swMsPrm.outQueParams.nextLink     = gVdisModuleContext.displayId[VDIS_DEV_SD] ;//gDupId_cbb[DIS_DUP_IDX];
    	swMsPrm.maxInputQueLen            =  4 ; // SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
    	swMsPrm.maxOutRes                 = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
    	swMsPrm.lineSkipMode              = FALSE;
    	swMsPrm.enableLayoutGridDraw      = FALSE ; //gVdisModuleContext.vdisConfig.enableLayoutGridDraw;
    	swMsPrm.enableProcessTieWithDisplay = FALSE;
    	//swMsPrm.layoutPrm.outputFPS = 30 ;
    
    	printf("FOSSILSHALE DEBUG :  swMsPrm.maxOutRes=%d.............\n", swMsPrm.maxOutRes );
    
    	MultiCh_swMsGetDefaultLayoutPrm(SYSTEM_DC_VENC_SD,&swMsPrm,FALSE);
    
    	/* display link params */
    	MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm);
    	displayPrm.inQueParams[0].prevLinkId =  gVdisModuleContext.swMsId[0]; //MergeId[NUM_MERGE_LINK] ; //gVcapModuleContext.captureId;
    	displayPrm.inQueParams[0].prevLinkQueId = 0;
    	displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
    	displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SD ;  // CVBS
    
    
    	System_linkCreate(gVcamModuleContext.cameraId, &cameraPrm, sizeof(cameraPrm));
    	System_linkControl(gVcamModuleContext.cameraId, CAMERA_LINK_CMD_DETECT_VIDEO, NULL, 0, TRUE);
    
    	/* display scaler link */
    	System_linkCreate( SYSTEM_LINK_ID_SCLR_INST_0 , &disp_sclrPrm, sizeof(disp_sclrPrm));  
    
    	System_linkCreate( gVcapModuleContext.captureId, &capturePrm,  sizeof(capturePrm));
    
    	/* null link*/
    #ifdef NULLLINK
    	System_linkCreate(SYSTEM_VPSS_LINK_ID_NULL_1 ,&sdNullPrm, sizeof(sdNullPrm));
    #else 
    	System_linkCreate(gDeiId,&deiPrm,sizeof(DeiLink_CreateParams));
    
    	/* Nsf */ 
    	System_linkCreate( gVcapModuleContext.nsfId[0] , &nsfPrm, sizeof(NsfLink_CreateParams));  
    #endif
    
    	/* Merge Link */
    	System_linkCreate( SYSTEM_VPSS_LINK_ID_MERGE_1 , &mergePrm[CAM_STREAM_MERGE_IDX], sizeof(mergePrm[CAM_STREAM_MERGE_IDX]));
    
    	System_linkCreate(gVdisModuleContext.swMsId[0],&swMsPrm,sizeof(swMsPrm));
    
    	/* display link */
    	System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm,sizeof(displayPrm));
    
    	OSA_printf("USECASE SETUP DONE\n");
    }
    
    /* ===================================================================
     *  @func     MultiCh_deleteStreamCaptureDisplay
     *
     *  @desc     Function does the following
     *
     *  @modif    This function modifies the following structures
     *
     *  @inputs   This function takes the following inputs
     *            <argument name>
     *            Description of usage
     *            <argument name>
     *            Description of usage
     *
     *  @outputs  <argument name>
     *            Description of usage
     *
     *  @return   Return value of this function if any
     *  ==================================================================
     */
    //Void MultiCh_deleteStreamCaptureDisplay()
    Void MultiCh_delete_tvp5158_CaptureDisplay()
    {
    	UInt32 MergeId[NUM_MERGE_LINK];
    
    	MergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
    	/* display link */
    	System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_SD]);
    
    	/* Merge Link */
    	System_linkDelete(MergeId[CAM_STREAM_MERGE_IDX]);
    
    	//AV support start
    #if 0
    	if( Av_scalerId != SYSTEM_LINK_ID_INVALID )
    	{
    		System_linkDelete(Av_scalerId);
    		Av_scalerId = SYSTEM_LINK_ID_INVALID ;
    	}
    #endif
    	//AV support End
    
    	/* Camera Link */
    	System_linkDelete(gVcapModuleContext.captureId);
    	/* Print the HWI, SWI and all tasks load */
    	/* Reset the accumulated timer ticks */
    	MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);
    
    	OSA_printf("USECASE TEARDOWN DONE\n");
    }
    

    0358.deiLink_drv.c

    BR

    RAJ M