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.

TI 814X display HDMI & VGA problem

Other Parts Discussed in Thread: THS8200, TVP5158, TVP7002

Hi all 

Can   TI 814X   display different images by  HDMI   and  VGA    separately ?????  

  • Hi,

    There is not VGA out on TI814x, TI814x has on HDMI out and other DVO2 out, on DVO2 out you can connect VGA encoder like THS8200 and both HDMI and DVO2 can display different images.

    Regards,

    Hardik Shah

  • Hi , Hardik Shah

    I've tried many times but it cannot work!!  I want it to work on TI814X  in version "DVRRDK_02.80.00.10"!  Here is my usecase:   

     

    <pre>
    <code>


    /*******************************************************************************
     *                                                                             *
     * Copyright (c) 2009 Texas Instruments Incorporated - http://www.ti.com/      *
     *                        ALL RIGHTS RESERVED                                  *
     *                                                                             *
     ******************************************************************************/

    #include <demos/link_api_demos/common/chains.h>

    /*
                          Capture (YUV422I) 16CH D1 60fps
                              |
                              |
                            NSF (YUV420SP)
                              |
                              |
                          SW Mosaic
                          (DEIH YUV422I)
                              |
                              |
                              |
                        Off-Chip HDMI
                          1080p60
    */


    Void Chains_multiChCaptureNsfDei(Chains_Ctrl *chainsCfg)
    {
    OSA_printf("TIME: 20120718  TEST:Capture->Nsf->sWms->Display(HDMI)\n");

        NullSrcLink_CreateParams srcPrm;

        CaptureLink_CreateParams    capturePrm;
        NsfLink_CreateParams        nsfPrm;
        SwMsLink_CreateParams       swMsPrm;
        DisplayLink_CreateParams    displayPrm;

        SwMsLink_CreateParams       swMsPrm2;
        DisplayLink_CreateParams    displayPrm2;

        DupLink_CreateParams        dupPrm;

        CaptureLink_VipInstParams *pCaptureInstPrm;
        CaptureLink_OutParams     *pCaptureOutPrm;

        UInt32 srcId;

        UInt32 dupId;

        UInt32 captureId, nsfId, swMsId, displayId, swMsId2, displayId2;
        UInt32 vipInstId;
        UInt32 displayRes[SYSTEM_DC_MAX_VENC];

        char ch;
        int i;

        captureId   = SYSTEM_LINK_ID_CAPTURE;
        nsfId       = SYSTEM_LINK_ID_NSF_0;


        srcId  = SYSTEM_VPSS_LINK_ID_NULL_SRC_0;

        swMsId      = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
        swMsPrm.numSwMsInst = 1;
        swMsPrm.swMsInstId[0] = SYSTEM_SW_MS_SC_INST_SC5;

        swMsId2      = SYSTEM_LINK_ID_SW_MS_MULTI_INST_1;
        swMsPrm2.numSwMsInst = 1;
        swMsPrm2.swMsInstId[0] = SYSTEM_SW_MS_SC_INST_DEIHQ_SC;//SYSTEM_SW_MS_SC_INST_SC5;

        dupId  = SYSTEM_VPSS_LINK_ID_DUP_0;

        displayId   = SYSTEM_LINK_ID_DISPLAY_0;
        displayId2   = SYSTEM_LINK_ID_DISPLAY_2;

        CaptureLink_CreateParams_Init(&capturePrm);
        CHAINS_INIT_STRUCT(DisplayLink_CreateParams,displayPrm);
        CHAINS_INIT_STRUCT(DisplayLink_CreateParams,displayPrm2);

        //SwMsLink_CreateParams_Init(&swMsPrm);
        capturePrm.numVipInst = 1;
        capturePrm.outQueParams[0].nextLink = nsfId;
        capturePrm.tilerEnable = FALSE;


            pCaptureInstPrm                     = &capturePrm.vipInst[0];
            pCaptureInstPrm->vipInstId          = (SYSTEM_CAPTURE_INST_VIP0_PORTA+0)%SYSTEM_CAPTURE_INST_MAX;
            pCaptureInstPrm->videoDecoderId     = SYSTEM_DEVICE_VID_DEC_TVP7002_DRV;//SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
            pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;
            pCaptureInstPrm->standard           = SYSTEM_STD_720P_60;//SYSTEM_STD_MUX_4CH_D1;
            pCaptureInstPrm->numOutput          = 1;

            pCaptureOutPrm                      = &pCaptureInstPrm->outParams[0];
            pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV;
            pCaptureOutPrm->scEnable            = FALSE;
            pCaptureOutPrm->scOutWidth          = 0;
            pCaptureOutPrm->scOutHeight         = 0;
            pCaptureOutPrm->outQueId            = 0;

     for (i=0; i<SYSTEM_DC_MAX_VENC; i++)
      displayRes[i]   = VSYS_STD_1080P_60;

     Chains_displayCtrlInit(displayRes);


        NsfLink_CreateParams_Init(&nsfPrm);
        nsfPrm.bypassNsf                = TRUE;
        nsfPrm.tilerEnable              = TRUE;
        nsfPrm.inQueParams.prevLinkId   = captureId;
        nsfPrm.inQueParams.prevLinkQueId= 0;
        nsfPrm.numOutQue                = 1;
        nsfPrm.outQueParams[0].nextLink = dupId;

      dupPrm.inQueParams.prevLinkId         = nsfId;
      dupPrm.inQueParams.prevLinkQueId      = 0;
      dupPrm.numOutQue                      = 2;
      dupPrm.outQueParams[0].nextLink       = swMsId;
      dupPrm.outQueParams[1].nextLink       = swMsId2;
      dupPrm.notifyNextLink                 = TRUE;

    /*
      srcPrm.tilerEnable = TRUE;
          srcPrm.outQueParams.nextLink = swMsId;
             srcPrm.timerPeriod          = 30;
          srcPrm.inputInfo.numCh      = 1;

             System_LinkChInfo *pChInfo;
             pChInfo = &srcPrm.inputInfo.chInfo[0];
             pChInfo->dataFormat = SYSTEM_DF_YUV420SP_UV;
             pChInfo->memType    = SYSTEM_MT_TILEDMEM;
             pChInfo->width      = 1280;
                 pChInfo->height     = 720;
                 pChInfo->scanFormat = SYSTEM_SF_PROGRESSIVE;
             pChInfo->pitch[0]   = SystemUtils_align(pChInfo->width+pChInfo->startX,SYSTEM_BUFFER_ALIGNMENT);
             pChInfo->pitch[1]   = pChInfo->pitch[0];
             pChInfo->pitch[2]   = 0;
    */

        //SwMsLink_CreateParams_Init(&swMsPrm);
        swMsPrm.inQueParams.prevLinkId = dupId;
        swMsPrm.inQueParams.prevLinkQueId = 0;
        swMsPrm.outQueParams.nextLink     = displayId;
        swMsPrm.maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
        swMsPrm.maxOutRes                 = VSYS_STD_1080P_60;
        swMsPrm.lineSkipMode              = FALSE;
        swMsPrm.layoutPrm.outputFPS       = 30;
        Chains_swMsGenerateLayoutParams(0, 2, &swMsPrm);

        swMsPrm2.inQueParams.prevLinkId = dupId;
        swMsPrm2.inQueParams.prevLinkQueId = 1;
        swMsPrm2.outQueParams.nextLink     = displayId2;
        swMsPrm2.maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
        swMsPrm2.maxOutRes                 = VSYS_STD_720P_60;
        swMsPrm2.lineSkipMode              = FALSE;
        swMsPrm2.layoutPrm.outputFPS       = 30;
        Chains_swMsGenerateLayoutParams(0, 2, &swMsPrm2);


        displayPrm.inQueParams[0].prevLinkId    = swMsId;
        displayPrm.inQueParams[0].prevLinkQueId = 0;
        displayPrm.displayRes                = swMsPrm.maxOutRes;

        displayPrm2.inQueParams[0].prevLinkId    = swMsId2;
        displayPrm2.inQueParams[0].prevLinkQueId = 0;
        displayPrm2.displayRes                = swMsPrm2.maxOutRes;

       

        System_linkCreate (captureId, &capturePrm, sizeof(capturePrm));
        System_linkControl(captureId, CAPTURE_LINK_CMD_CONFIGURE_VIP_DECODERS, NULL, 0, TRUE);
        System_linkCreate(nsfId     , &nsfPrm, sizeof(nsfPrm));

        System_linkCreate(dupId , &dupPrm, sizeof(dupPrm));

        //System_linkCreate(srcId, &srcPrm, sizeof(srcPrm));
        System_linkCreate(swMsId   , &swMsPrm, sizeof(swMsPrm));
        System_linkCreate(swMsId2   , &swMsPrm2, sizeof(swMsPrm2));

        System_linkCreate(displayId, &displayPrm, sizeof(displayPrm));
        System_linkCreate(displayId2, &displayPrm2, sizeof(displayPrm2));

        OSA_printf("%s : System_linkCreate SUCCESS!",__func__);
        Chains_memPrintHeapStatus();

      System_linkStart(displayId2);
            System_linkStart(displayId);
      System_linkStart(swMsId2);    
            System_linkStart(swMsId);
      //System_linkStart(srcId);
      System_linkStart(nsfId); 
            System_linkStart(captureId);


            /* Start taking CPU load just before starting of links */
            Chains_prfLoadCalcEnable(TRUE, FALSE, FALSE);


            while(1)
            {
                ch = Chains_menuRunTime();

                if(ch=='0')
                    break;
            }

            System_linkStop(captureId);
            System_linkStop(nsfId);

    //  System_linkStop(srcId);
            System_linkStop(swMsId);
      System_linkStop(swMsId2);
            System_linkStop(displayId);
      System_linkStop(displayId2);

      OSA_printf("%s : System_linkStop SUCCESS!",__func__);

     System_linkDelete(captureId);
     System_linkDelete(nsfId    );
     System_linkDelete(dupId);

     //System_linkDelete(srcId);
     System_linkDelete(swMsId   );
     System_linkDelete(swMsId2   );
     
     System_linkDelete(displayId);
     System_linkDelete(displayId2);

     OSA_printf("%s : System_linkDelet SUCCESS!",__func__);


        Chains_displayCtrlDeInit();

        Chains_prfLoadCalcEnable(FALSE, TRUE, FALSE);

        OSA_printf("%s : EXIT SUCCESS!",__func__);

    }

    </code>

    </pre>

    it will show error  below:

     [m3vpss ]  12756: Assertion @ Line: 669 in links_m3vpss/display/displayLink_drv.c: status == FVID2_SOK : failed !!!

    thanks a lots

    best regards

     


  • Hi Shah,

    I'm trying to develop bootlogo on CVBS output on DM8148 Evm.  I followed what we did on 8168 which let the HDMI & VGA(DVO2) share the GRPX2, but what I find is that the screens always scroll, both on CVBS and HDMI outputs.     Then I changed to GPRX1, it makes no difference.   I guess CVBS and HDMI comp has conflict. but I can't find it.

    Can you give some advice?

    Thanks,

    Eason

  • Hi,

    Same GRPX pipeline cannot be shared on CVBS and HDMI output, but HDMI and VGA(DVO2) can share the same GRPX pipeline.  So the only solution is to use different GRPX pipeline for CVBS and HDMI and provide the same contents.

    Thanks,

    Brijesh Jadav

  • Hi Jadav,

     

    Can you tell me where can I find an example of configuring the descripor and list on VPDMA?  Becasue I met some difficulties to make the other GRPX work.

    my questios are:

    1. Can 2 GPRXs's image source the same one? will there be conflict?

    2. Can 2 GPRXs'  configuration descriptor's payload point to the same adderess?

    3. Is this right : 1 transport descriptoer is 1 frame. so If I want to send image from VPDMA to  GRPX0 and 1, I need to create the list of data transfer descriptors like this:

    GPRX0   1 frame, 

    GPRX1  1 frame, 

    GPRX0   1 frame, 

    GPRX1   1 frame ......................

    Is that right?

     

    Thanks very much,

    Eason

  • Hi,

    Please contact your local FAE to get the VPDMA spesc..

    Below are the answers to your questions.

    1, yes, there is not problem as long as you change the buffer pointers as per display fps of the corresponding display.

    2, yes

    3, yes, what you have to do is you create two sets of transport descriptors, one for each display.

    Thanks,

    Brijesh Jadav

  • hi, Hardik Shah

    How to do so that TI814x can show different images  through HDMI  and DVO2?  

    best regards

    thanks  

  • Hi,

    If this query is regarding DVR RDK, please contact your local FAE.DVR RDK supports two different contents on two different displays.

    Regards,

    Hardik shah