Hi all
Can TI 814X display different images by HDMI and VGA separately ?????
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.
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