首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

!在WINCE上使用S5PV210的HDMI输出时遇到的有关问题

2013-01-04 
求助!在WINCE下使用S5PV210的HDMI输出时遇到的问题在WINCE下通过HANDLE hVideoDrv CreateFile( LTVD0:

求助!在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 
}

启用了HDMI,
但是遇到了两个问题:
1.我的WINCE编译时设置的分辨率是1280*720,上面的程序也是这样的分辨率,但是连接电视以后,图像比显示屏稍微大了10~20个像素,显示不全,但是如果电视机(本身物理像素是1920*1080的)采用“点对点”的缩放方式,可以显示出整个WINCE屏幕,但是又不是全屏,所以不符合要求,在示例程序中,似乎调用了某种方法把显示设置为正好全屏,我看了两天他的代码,未找到此法...
2.开启HDMI后,使用开发板的按键或者播放视频时,有一定几率中断HDMI连接?在桌面还好,打开一些文件夹后,此现象尤为严重;至于视频播放,只要一放就会频繁中断HDMI连接,而且视频显示不出来...
研究数天未果,还望各位指点一二...在此先谢过了
[解决办法]
最好自动识别电视的分辨率
[解决办法]
可以通过HDMI中的IIC接口获取显示器的分辨率,之前在TCC8902上面这么用过。
HDMI不稳定,可能跟硬件有关,
我在TCC8902上播放1080P的高清视频,效果非常好,没有出现连接中断的情况。
[解决办法]
HDMI示例程序 就是一打开这个TV驱动,然后和IOControl 函数做一些通信,设置一下驱动,设置HDMI的分辨率和输出就是了,三星文档有的。如果楼主的不行,可能原因是:



1、HDMI 硬件布线不良,阻抗等没做好,HDMI 1.6G那么高的频率非常恐怖的
2、就是驱动没完善了。
我的S5pv210 很紧迫在HDMI上,这个搞完才算有点爽,楼主,这帖子我跟定了。
一起来玩。明天开始搞。

热点排行