求助!在WINCE下使用S5PV210的HDMI输出时遇到的问题
在WINCE下通过
HANDLE hVideoDrv = CreateFile( L"TVD0:", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
STDA_ARG_GRP_BASIC_PARAM tGrp;
DWORD dwBytes;
if(!DeviceIoControl(hVideoDrv, IOCTL_STDA_RSC_REQUEST_TVOUT_INTERFACE, NULL, 0, NULL, 0, &dwBytes, NULL))
{
}
TVOUT_OUTPUT_IF tTVoutIF;
tTVoutIF.dispMode = TVOUT_720P_60;
tTVoutIF.outMode = TVOUT_OUTPUT_HDMI_YCBCR;//TVOUT_OUTPUT_COMPONENT_YPBPR_PROGRESSIVE;//TVOUT_OUTPUT_HDMI_YCBCR;
if(!DeviceIoControl(hVideoDrv, IOCTL_STDA_TVOUT_INIT_INTERFACE_PARAM, &tTVoutIF, sizeof(TVOUT_OUTPUT_IF), NULL, 0, &dwBytes, NULL))
{
}
if(!DeviceIoControl(hVideoDrv, IOCTL_STDA_TVOUT_START, NULL, 0, NULL, 0, &dwBytes, NULL))
{
}
//add graphic
if(!DeviceIoControl(hVideoDrv, IOCTL_STDA_RSC_REQUEST_GRAPHIC_0, NULL, 0, NULL,
0, &dwBytes, NULL))
{
// error is occurred
}
HDC hWinmain;
unsigned int DispPhyAddr;
hWinmain = ::GetDC (NULL);
ExtEscape(hWinmain, DRVESC_GET_FB_PHY_ADDR, 0, NULL, sizeof(DispPhyAddr), (LPSTR)&DispPhyAddr);
::ReleaseDC (NULL, hWinmain);
//RETAILMSG(1, (TEXT("DispPhyAddr = 0x%x\r\n"),DispPhyAddr));
tGrp.bWinBlending = FALSE;
tGrp.uiAlpha = 0x0;
tGrp.uiPriority = 2;
tGrp.color = VM_DIRECT_RGB565;
tGrp.bBlankChange = FALSE;
tGrp.bPixelBlending = FALSE;
tGrp.bPreMul = FALSE;
tGrp.uiBlankColor = 0x0;
tGrp.uiBaseAddress = DispPhyAddr;
tGrp.uiSpan = 1280;
tGrp.uiWidth = 1280;
tGrp.uiHeight = 720;
tGrp.uiSrcOffsetX = 0;
tGrp.uiSrcOffsetY = 0;
tGrp.uiDestOffsetX = 50;
tGrp.uiDestOffsetY = 24;
tGrp.uiScaleEnH = 0;
tGrp.uiScaleEnV = 0;
if(!DeviceIoControl(hVideoDrv, IOCTL_STDA_GRP0_INIT_PROCESSING_PARAM, &tGrp,
sizeof(STDA_ARG_GRP_BASIC_PARAM), NULL, 0, &dwBytes, NULL))
{
// error is occurred
}
if(!DeviceIoControl(hVideoDrv, IOCTL_STDA_GRP0_START, NULL, 0, NULL, 0, &dwBytes, NULL))
{
// error is occurred
}
1、HDMI 硬件布线不良,阻抗等没做好,HDMI 1.6G那么高的频率非常恐怖的
2、就是驱动没完善了。
我的S5pv210 很紧迫在HDMI上,这个搞完才算有点爽,楼主,这帖子我跟定了。
一起来玩。明天开始搞。