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.

LCD display

Other Parts Discussed in Thread: DM385

Hi All,

I was working on DM385 customized board with IPNC RDK 3.5 version.

My usecase is like i was getting the data from dupLink then dupLink->scalar1->display(LCD).

this dupLink data contains three stream. and the no.of output is 2.
 from duplink one o/p is going ti scalr1->display(LCD). the another o/p is going to encoder part, that we have verified with recording( this part dont have any issue).

but, I was getting frame drop in scalar1 link. see the below log.

[m3vpss ]  *** [Scalar1   ] SCLR Statistics ***
 [m3vpss ]
 [m3vpss ]  Elasped Time           : 61 secs
 [m3vpss ]  Total Fields Processed : 4683
 [m3vpss ]  Total Fields FPS       : 132 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  30  37
 [m3vpss ]    1 |      15         0         15  15        0        0   3   6
 [m3vpss ]    2 |      30         0         30  30        0        0  30  37

pls see the way of we are creating the sclar1 and display(LCD).

****************************************************************************************************************

               dupPrm[DIS_DUP_IDX].numOutQue = 2;

                //dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
                dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = gVcamModuleContext.sclrId[1];

                /* Scaler Link Params */
                SclrLink_CreateParams_Init(&sclrPrmLCD);
                sclrPrmLCD.inQueParams.prevLinkId             = dupId[DIS_DUP_IDX];
                sclrPrmLCD.inQueParams.prevLinkQueId          = 1;
                sclrPrmLCD.outQueParams.nextLink          = gVdisModuleContext.displayId[VDIS_DEV_DVO2];
                sclrPrmLCD.tilerEnable                        = TRUE;
                sclrPrmLCD.enableLineSkipSc                   = FALSE;
                sclrPrmLCD.inputFrameRate                     = 30;
                sclrPrmLCD.outputFrameRate                    = 30;
                sclrPrmLCD.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
                sclrPrmLCD.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
                sclrPrmLCD.outScaleFactor.absoluteResolution.outWidth   = 800;
                sclrPrmLCD.outScaleFactor.absoluteResolution.outHeight  = 480;
                sclrPrmLCD.outDataFormat = SYSTEM_DF_YUV420SP_UV;
                sclrPrmLCD.pathId = SCLR_LINK_SEC0_SC3;
                //sclrPrmLCD.pathId = SCLR_LINK_SC5;


                MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm);

                /* display link params */
                displayPrm.inQueParams[0].prevLinkId = gVcamModuleContext.sclrId[1];
                displayPrm.inQueParams[0].prevLinkQueId = 0;
                displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_DVO2].resolution;
                displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SC2;

****************************************************************************************************************

please correct if anything is wrong.

Regards,

Kolanchi.

  • Statistics doenst show any frame drop.Where are you seeing the frame drop in the scaler ? The  Recv fps of channel 1 is only 15.Share the performance log of all the links and mention the expected fps you expect .

  • Hi Badri,

    Sorry  for the late reply.

    Yes, I was getting the output on HDMI instead of LCD. when two port is HDMI and LCD is avilable the output buffer even though I have configured for LCD display it was getting frame in HDMI display.

    So my linkChain (dataflow) flow there no mistake. I think the display device configuration is wrong.

    1. please correct me the display configuration for LCD.

    2. In previous post, i have mentioned the frame drop, i was mentioned frame drop based on scalar1 Statistics

     [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  30  37
     [m3vpss ]    1 |      15         0         15  15        0        0   3   6
     [m3vpss ]    2 |      30         0         30  30        0        0  30  37

    if take example channel no 1

    CH Num is 1.

    In Recv FPS is  15

    In Reject FPS is 0

    In Process FPS is 15

    Out Skip FPS is  15 -----> based on this (skip FPS is 15) I have told frame drop is happening.

    pls tell me what is this Out Skip FPS? and tell me the configuration of LCD display?

    Regards,

    Kolanchi.

  • Hi TI Experts

    I am using ipnc rdk v3.5.  on dm385 board.

    with this I am able to display camera captured  freames on HDMI , but when I am trying to display on LCD, nothing is comming on LCD.

    I did following changes in use case:

    1.

     gVdisModuleContext.displayId[VDIS_DEV_DVO2] = SYSTEM_LINK_ID_DISPLAY_1 ; 

     displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_DVO2].resolution;

    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_DVO2], &displayPrm, /*LCD*/
    sizeof(displayPrm));

    2.  Also I did

     

    d /opt/ipnc/kermod

    insmod ti81xxfb.ko vram=0:1M,1:2M,2:1M

    echo 0 > /sys/devices/platform/vpss/graphics0/enabled
    echo 0 > /sys/devices/platform/vpss/display1/enabled
    echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings
    echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output
    echo 1 > /sys/devices/platform/vpss/display1/enabled
    fbset -fb /dev/fb1 -xres 800 -yres 480 -vxres 800 -vyres 480

    Please give your suggestions:

    Rajesh Singh 

  • Hi Rajesh,

     

    Can you first try to bring up your lcd connected to DVO2? After loading modules, can you run below commands and see if your lcd in coming up with the background color.?

    echo 0 > /sys/devices/platform/vpss/graphics0/enabled
    echo 0 > /sys/devices/platform/vpss/display1/enabled
    echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings
    echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output
    echo 1 > /sys/devices/platform/vpss/display1/enabled

     

    Rgds,

    Brijesh

  • Hi Brijesh ,

    Thanks for reply.

    I did , as you had suggested and got following output:

    1. echo 0 > /sys/devices/platform/vpss/graphics0/enabled

    output->   VPSS_GRPX : please open fb0 node first.

    2.  echo 0 > /sys/devices/platform/vpss/display1/enabled

    output-> No error (LCD become brightening)

    3. echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings

    output-> No error

    4. echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output

    output-> No error

    5. echo 1 > /sys/devices/platform/vpss/display1/enabled

    output -> No error (LCD become blank)

    Kindly suggest where I could be the problem.

    Regards :

    Rajesh Singh

  • Hi Rajesh,

     

    After the last step, can set bit15 at the offset 0x4810a000 and see if you are getting correct color bar on LCD?

     

    Rgds,

    Brijesh

  • Hi Brijesh,

    Thanks a lot for your support. 

    yes I am getting color bar on LCD after setting bit15 at the offset 0x4810a000.

    But when I am trying to display mipi camera  captured contents on LCD, noting is comming. However I am able to display the mipi camera captured contents on HDMI. 

    Kindly suggest me, 

     

    regards:

    Rajesh Singh

  • Hi Rajesh,

     

    Since the color bar output is correct, VENC settings and LCD is settings are correct, now you need to make sure that input pipe line settings are correct. Is your captured frame size same as LCD frame size? I am asking this question because it works fine on HDMI.

    What do you see on LCD when you try to display image?

     

    Rgds,

    Brijesh

  • Hi Brijesh,

    Thanks for reply

    1.

    When I am displaying on HDMI, I am setting resolution as 1080p ,

    while I am displaying on LCD, I am setting resolution as 800X480.

    2.

    I see black LCD screen, when I am trying to display on LCD.

    Regards:

    Rajesh Singh

  • Hi Rajesh,

     

    Is your VENC started? Can you enable color bar after you see blank screen?

    Are you starting your input display path after starting venc or capture? Is the input display path connected to the DVO2 VENC? Is your capture input connected to the right display id in the chain?

    Could you check above?

     

    Rgds,

    Brijesh

  • Hi Brijesh,

    Thanks for quick reply once again.

    I will  recheck all the points, what you have suggested, and share with you. 

    regards:

    Rajesh Singh

  • Hi Brijesh

    Following are the output which I observed for your suggested steps:

    1.  I  am able to display LCD patterns, after the screen is getting black.

    2. I  have changed following the following files in IPNC RDK 3.5  for TI_8107_BUILD.

         Red color shows what I have added.

         In File :  mcfw/demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.c

    Void App_loadDemo(Void)
    {
    #ifdef TEARDOWN_LOAD_UNLOAD
    system("./scripts/load_vpss.sh");
    system("./scripts/load_video.sh&");
    #ifdef IPNC_DSP_ON
    system("./scripts/load_c6xdsp.sh&");
    #endif

    system("./scripts/wait_cmd.sh s m3vpss");
    system("./scripts/wait_cmd.sh s m3video");
    #ifdef IPNC_DSP_ON
    system("./scripts/wait_cmd.sh s c6xdsp");
    #endif
    #else
    system("./scripts/send_cmd.sh T m3vpss");
    system("./scripts/send_cmd.sh T m3video");
    #ifdef IPNC_DSP_ON
    system("./scripts/send_cmd.sh T c6xdsp");
    #endif

    system("./scripts/wait_cmd.sh t m3vpss");
    system("./scripts/wait_cmd.sh t m3video");
    #ifdef IPNC_DSP_ON
    system("./scripts/wait_cmd.sh t c6xdsp");
    #endif
    #endif // #ifdef TEARDOWN_LOAD_UNLOAD

    system("./scripts/osa_kermod_load.sh");

    #ifdef IPNC_DSS_ON
    /* load module fb */

    system("insmod ./kermod/vpss.ko mode=hdmi:1080p-60,dvo2:1080p-60 sbufaddr=0xbfb00000"); 
    system("insmod ./kermod/ti81xxhdmi.ko 2> /dev/null");
    /* Enable range compression in HDMI 0..255 to 16..235 . This is needed
    * for consumer HDTVs */
    system("./bin/mem_rdwr.out --wr 0x46c00524 2");
    /* FOR LCD*/
    OSA_printf("RAJESH: IPNC_DSS_ON: loading fb module for LCD\n") ;
    system("insmod ./kermod/ti81xxfb.ko vram=0:2M,1:2M,2:2M") ;
    system("echo 0 > /sys/devices/platform/vpss/graphics0/enabled") ;
    system("echo 0 > /sys/devices/platform/vpss/display1/enabled") ;
    system("echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings") ;
    system("echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output") ;
    system("echo 1 > /sys/devices/platform/vpss/display1/enabled") ;


    #else
    system("./linux_prcm_ipcam k"); /* switch off DSS */
    #endif

    #ifdef TEARDOWN_LOAD_UNLOAD
    OSA_printf("Application Load Completed\n");
    #else
    OSA_printf("Application Start Completed\n");
    #endif
    }

     

    3. In Fn:   Void App_runDemo(Void)

    vdisParams.deviceParams[VDIS_DEV_HDMI].resolution = VSYS_STD_1080P_60;
    vdisParams.deviceParams[VDIS_DEV_SD].resolution = VSYS_STD_NTSC;//VSYS_STD_PAL;//VSYS_STD_NTSC;
    /* Override the context here as needed */
    vdisParams.deviceParams[VDIS_DEV_HDMI].resolution = VSYS_STD_1080P_60;
    //vdisParams.deviceParams[VDIS_DEV_DVO2].resolution = VSYS_STD_1080P_60;
    vdisParams.deviceParams[VDIS_DEV_DVO2].resolution = VSYS_STD_CUSTOM; //FOR LCD //vdisParams.deviceParams[VDIS_DEV_HDMI].resolution = VSYS_STD_720P_60;
    //vdisParams.deviceParams[VDIS_DEV_DVO2].resolution = VSYS_STD_720P_60;
    Vdis_tiedVencInit(VDIS_DEV_DVO2, VDIS_DEV_HDCOMP, &vdisParams);

    vdisParams.deviceParams[VDIS_DEV_SD].resolution = VSYS_STD_NTSC;

    4.  in File : mcfw/mcfw/src_linux/mcfw_api/ti_vdis.c 

     Fn: Void Vdis_params_init(VDIS_PARAMS_S * pContext)

     

    Void Vdis_params_init(VDIS_PARAMS_S * pContext)
    {
    UInt16 i, j, width, height;

    memset(pContext, 0, sizeof(VDIS_PARAMS_S));
    for(i = 0; i < VDIS_DEV_MAX; i++)
    {
    pContext->deviceParams[i].backGroundColor = 0;

    pContext->deviceParams[i].resolution = VSYS_STD_1080P_60;

    width = 1920;
    height = 1080;

    if(i == VDIS_DEV_SD)
    {
    pContext->deviceParams[i].resolution = VSYS_STD_NTSC;

    width = 720;
    height = 480;

    }

    if(i == VDIS_DEV_DVO2 ) 
    {
    pContext->deviceParams[i].resolution = VSYS_STD_CUSTOM ;
    width = 800 ;
    height = 480 ;
    }

    pContext->mosaicParams[i].displayWindow.start_X = 0;
    pContext->mosaicParams[i].displayWindow.start_Y = 0;
    pContext->mosaicParams[i].displayWindow.width = width;
    pContext->mosaicParams[i].displayWindow.height = height;

    pContext->mosaicParams[i].numberOfWindows = 1;
    pContext->mosaicParams[i].outputFPS = 30;

    for(j=0;j<pContext->mosaicParams[i].numberOfWindows;j++)
    {
    pContext->mosaicParams[i].winList[j].start_X = 0;
    pContext->mosaicParams[i].winList[j].start_Y = 0;
    pContext->mosaicParams[i].winList[j].width = width;
    pContext->mosaicParams[i].winList[j].height = height;

    pContext->mosaicParams[i].chnMap[j] = j;
    }
    pContext->mosaicParams[i].userSetDefaultSWMLayout = TRUE;
    }

    /* Configure output Info for vencs */

    pContext->tiedDevicesMask = VDIS_VENC_HDMI | VDIS_VENC_DVO2;
    pContext->enableConfigExtVideoEncoder = TRUE;

    #if defined (TI814X_DVR) || defined (TI814X_EVM)
    pContext->enableConfigExtVideoEncoder = FALSE;
    #endif

    pContext->deviceParams[VDIS_DEV_DVO2].enable = TRUE;
    pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.vencNodeNum = VDIS_VENC_DVO2;
    pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.aFmt = VDIS_A_OUTPUT_COMPOSITE;
    pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.dvoFidPolarity = VDIS_POLARITY_ACT_HIGH;

    //pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.dvoFmt = VDIS_DVOFMT_DOUBLECHAN; 
    //pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.dataFormat = SYSTEM_DF_YUV422SP_UV;
    pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.dvoFmt = VDIS_DVOFMT_TRIPLECHAN_DISCSYNC ;  //LCD
    pContext->deviceParams[VDIS_DEV_DVO2].outputInfo.dataFormat = SYSTEM_DF_RGB24_888 ;    //LCD

    pContext->deviceParams[VDIS_DEV_HDMI].enable = TRUE;
    pContext->deviceParams[VDIS_DEV_HDMI].outputInfo.vencNodeNum = VDIS_VENC_HDMI;
    pContext->deviceParams[VDIS_DEV_HDMI].outputInfo.aFmt = VDIS_A_OUTPUT_COMPOSITE;
    /*
    pContext->deviceParams[VDIS_DEV_HDMI].outputInfo.dvoFmt = VDIS_DVOFMT_TRIPLECHAN_DISCSYNC;
    pContext->deviceParams[VDIS_DEV_HDMI].outputInfo.dataFormat = SYSTEM_DF_RGB24_888;
    */
    pContext->deviceParams[VDIS_DEV_HDMI].outputInfo.dvoFmt = VDIS_DVOFMT_TRIPLECHAN_EMBSYNC;
    pContext->deviceParams[VDIS_DEV_HDMI].outputInfo.dataFormat = SYSTEM_DF_RGB24_888;

    pContext->deviceParams[VDIS_DEV_SD].enable = TRUE;
    pContext->deviceParams[VDIS_DEV_SD].outputInfo.vencNodeNum = VDIS_VENC_SD;
    pContext->deviceParams[VDIS_DEV_SD].outputInfo.aFmt = VDIS_A_OUTPUT_COMPOSITE;
    pContext->deviceParams[VDIS_DEV_SD].outputInfo.dvoFmt = VDIS_DVOFMT_TRIPLECHAN_DISCSYNC;
    pContext->deviceParams[VDIS_DEV_SD].outputInfo.dataFormat = SYSTEM_DF_RGB24_888;

    #if defined(TI_816X_BUILD) || defined (TI_8107_BUILD)
    pContext->deviceParams[VDIS_DEV_HDCOMP].enable = TRUE;
    pContext->deviceParams[VDIS_DEV_HDCOMP].outputInfo.vencNodeNum = VDIS_VENC_HDCOMP;
    pContext->deviceParams[VDIS_DEV_HDCOMP].outputInfo.aFmt = VDIS_A_OUTPUT_COMPONENT;
    pContext->deviceParams[VDIS_DEV_HDCOMP].outputInfo.dvoFmt = VDIS_DVOFMT_TRIPLECHAN_EMBSYNC;
    #if defined (TI_8107_BUILD)
    pContext->deviceParams[VDIS_DEV_HDCOMP].outputInfo.dvoFmt = VDIS_DVOFMT_TRIPLECHAN_DISCSYNC;

    #endif
    #if defined(TI816X_DVR) || defined(TI8107_DVR) || defined(TI8107_EVM)
    pContext->deviceParams[VDIS_DEV_HDCOMP].outputInfo.dataFormat = SYSTEM_DF_RGB24_888;
    #endif
    #if defined (TI816X_EVM)
    pContext->deviceParams[VDIS_DEV_HDCOMP].outputInfo.dataFormat = SYSTEM_DF_YUV444P;
    #endif
    pContext->tiedDevicesMask = VDIS_VENC_HDCOMP | VDIS_VENC_DVO2;
    pContext->enableEdgeEnhancement = TRUE;

    #endif

    pContext->deviceParams[SYSTEM_DC_VENC_HDMI].colorSpaceMode = VDIS_CSC_MODE_SDTV_GRAPHICS_Y2R;

    #if defined(TI816X_EVM) || defined(TI8107_EVM) || defined(TI8107_DVR)
    pContext->enableConfigExtThsFilter = TRUE;
    #endif

    pContext->enableLayoutGridDraw = FALSE;
    }

    5. mcfw In usecase

    /*LCD Scaler Configration*/
    SclrLink_CreateParams_Init(&sclrPrm_LCD);
    sclrPrm_LCD.inQueParams.prevLinkId = dupId[DIS_DUP_IDX];
    sclrPrm_LCD.inQueParams.prevLinkQueId = 1;
    sclrPrm_LCD.outQueParams.nextLink = gVdisModuleContext.displayId[VDIS_DEV_DVO2];
    sclrPrm_LCD.tilerEnable = FALSE;
    sclrPrm_LCD.enableLineSkipSc = FALSE;
    sclrPrm_LCD.inputFrameRate = 30;
    sclrPrm_LCD.outputFrameRate = 30;
    sclrPrm_LCD.scaleMode = DEI_SCALE_MODE_ABSOLUTE;
    sclrPrm_LCD.outScaleFactor.absoluteResolution.outWidth = 800;
    sclrPrm_LCD.outScaleFactor.absoluteResolution.outHeight = 480;
    sclrPrm_LCD.outDataFormat = SYSTEM_DF_YUV420SP_UV;
    sclrPrm_LCD.pathId = SCLR_LINK_SEC0_SC3 ;

    MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm_LCD);
    /* display link params */
    displayPrm_LCD.inQueParams[0].prevLinkId = gVcamModuleContext.sclrId[1];
    displayPrm_LCD.inQueParams[0].prevLinkQueId = 0;
    //displayPrm_LCD.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
    displayPrm_LCD.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_DVO2].resolution; //LCD
    displayPrm_LCD.displayId = DISPLAY_LINK_DISPLAY_SC2;

    And  Links are being started in order:

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


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

    if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON){
    /* NSF Link */
    System_linkCreate(gVcamModuleContext.nsfId, &nsfPrm, sizeof(nsfPrm));
    OSA_printf("RAJESH: System_linkCreate(gVcamModuleContext.nsfId, &nsfPrm, sizeof(nsfPrm))\n") ;
    }
    else{
    /* Vnf Link */
    System_linkCreate(gVcamModuleContext.vnfId, &vnfPrm, sizeof(vnfPrm));
    OSA_printf("RAJESH: System_linkCreate(gVcamModuleContext.vnfId, &vnfPrm, sizeof(vnfPrm))\n") ;
    }

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

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

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

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

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

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


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

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

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


    /* FD Link */

    System_linkCreate(gVsysModuleContext.fdId, &fdPrm, sizeof(fdPrm));

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

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

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

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

    /* display link */
    //#ifndef BYPASS_DISPLAY
    if(gUI_mcfw_config.dispCamChId == MIPI_CH0_DISPLAY )
    {
    //System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_HDMI], &displayPrm_HDMI,
    // sizeof(displayPrm_HDMI));

    System_linkCreate(gVcamModuleContext.sclrId[1], &sclrPrm_LCD, sizeof(sclrPrm_LCD));
    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_DVO2], &displayPrm_LCD, /*LCD*/
    sizeof(displayPrm_LCD));
    }
    //#endif

    #ifndef RESOLUTION_QVGA
    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm_SD,
    sizeof(displayPrm_SD));
    #endif

    System_linkCreate(gVsysModuleContext.fdId, &fdPrm, sizeof(fdPrm));

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

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

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

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

    /* display link */
    //#ifndef BYPASS_DISPLAY
    if(gUI_mcfw_config.dispCamChId == MIPI_CH0_DISPLAY )
    {
    //System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_HDMI], &displayPrm_HDMI,
    // sizeof(displayPrm_HDMI));

    System_linkCreate(gVcamModuleContext.sclrId[1], &sclrPrm_LCD, sizeof(sclrPrm_LCD));
    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_DVO2], &displayPrm_LCD, /*LCD*/
    sizeof(displayPrm_LCD));
    }
    //#endif

    #ifndef RESOLUTION_QVGA
    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm_SD,
    sizeof(displayPrm_SD));
    #endif

    When Use case is running I am getting no Assertion or Error , even I am able to see periodic prints from the encoder link. 

    6.

    I have One more doubt that in file :      ipnc_mcfw/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c for TI_8107_BUILD, there is no configration for macro VPS_DC_VENC_DVO2. This file I haven't modified as I have no idea about these macros.

    #if defined(TI_8107_BUILD)
    /* Display Controller Configuration */
    /* To tie DVO2 and HDCOMP together refer following Mesh */
    Vps_DcConfig gSystem_dctrlTriDisplayConfig = {
    VPS_DC_USERSETTINGS, /* Use Case */
    /* Edge information */
    {
    {VPS_DC_BP0_INPUT_PATH, VPS_DC_VCOMP_MUX},
    {VPS_DC_VCOMP_MUX, VPS_DC_VCOMP},
    {VPS_DC_CIG_NON_CONSTRAINED_OUTPUT, VPS_DC_HDMI_BLEND},
    {VPS_DC_CIG_NON_CONSTRAINED_OUTPUT, VPS_DC_HDCOMP_BLEND},
    {VPS_DC_SEC1_INPUT_PATH, VPS_DC_SDVENC_MUX},
    {VPS_DC_SDVENC_MUX, VPS_DC_SDVENC_BLEND},
    {VPS_DC_GRPX0_INPUT_PATH, VPS_DC_HDMI_BLEND},
    {VPS_DC_GRPX0_INPUT_PATH, VPS_DC_HDCOMP_BLEND},
    {VPS_DC_GRPX2_INPUT_PATH, VPS_DC_SDVENC_BLEND},

    {VPS_DC_MAIN_INPUT_PATH, VPS_DC_VCOMP},

    {VPS_DC_AUX_INPUT_PATH, VPS_DC_VCOMP_MUX},
    {VPS_DC_BP1_INPUT_PATH, VPS_DC_SDVENC_MUX},
    },

    12
    /* VENC information */
    {
    /* Mode information */
    {
    {VPS_DC_VENC_HDMI, {FVID2_STD_1080P_60}
    }
    , /* 1080p30 is mode
    * is overwritten
    * later inside
    * System_displayCtrlInit

    {VPS_DC_VENC_HDCOMP, {FVID2_STD_1080P_60} 
    }, /* 1080p30 is mode
    * is overwritten
    * later inside
    * System_displayCtrlInit
    */

    {VPS_DC_VENC_SD, {FVID2_STD_NTSC}
    }
    }
    ,
    (VPS_DC_VENC_HDMI | VPS_DC_VENC_HDCOMP), /* Tied VENC bit
    * mask */
    3u
    */
    }
    };
    #endif

     Kindly suggest me , if something I am doing wrong.

    Regards:

    Rajesh Singh

     

     

     

     

  • Hi Brijesh,

    Thanks for your valuable suggestions. Now LCD display is working. but one issue. Display seems to have some noise or someting.

    I am sharing one image, please have a look and suggest me some possible causes for this.

    .  

    Regards:

    Rajesh Singh

  • Hi Rajesh,

     

    Again check the internal color bar, if it is correct, venc is providing correct data. These artifacts are coming from somewhere in your pipeline.

     

    Regards,

    Brijesh

  • Hi Brijesh,

    Thanks for reply.

    I tested the internal color bar, and it is OK. I am still trying to figure out the cause. 

    Regards:

    Rajesh Singh

  • Hi Brijesh,

    If same buffers I am displaying on HDMI, there is no noise/line but while displaying it on LCD, image is not proper. 

    Kindly give some suggestions.

    Regards:

    Rajesh Singh

  • Hello,

    I hope someone can please give me a hint on the following.

    I am using 240x320 LCD.

    I have found timing parameters which seems to give a stable image, but each time it shows the image on different start line in the screen, and the rest of screen is blank.

    when I did:

    dd if=/dev/zero of=/dev/fb0

    It seems to solve the graphic issue and the image is displayed on full screen starting with line 0 of the LCD screen.

    BUt then on starting dvrrdk video application, I see the video each time starting on different line.

    Is it a timing issue ? Or should I clean any video buffer to make it work ?

    Regards,

    Ran

  • I think, if display link is properly initialize by the application, then there should not 

    be any problem.

    Regards:

    Rajesh Singh

  • Hi Rajesh,

    Thanks,

    So the fact that each time the picture is presented in other part of the screen indicated a timing parameter problem (even though the image is stable), Right ?

    Regards,

    Ran

  • Dear Ran,

    in File:
    mcfw/demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.c
    Function:
    Void App_loadDemo(Void)

    are u doing something like this ?
    system("./bin/mem_rdwr.out --wr 0x46c00524 2");
    /* FOR LCD*/
    OSA_printf("IPNC_DSS_ON: loading fb module for LCD\n") ;
    system("insmod ./kermod/ti81xxfb.ko vram=0:2M,1:2M,2:2M") ;
    system("echo 0 > /sys/devices/platform/vpss/graphics0/enabled") ;
    system("echo 0 > /sys/devices/platform/vpss/display1/enabled") ;
    system("echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings") ;
    system("echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output") ;
    system("echo 1 > /sys/devices/platform/vpss/display1/enabled") ;

    Replace green line with yours LCD configration.


    Thanks,
    Rajesh Singh