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

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

2012-03-19 
求助!在WINCE下使用S5PV210的HDMI输出时遇到的问题在WINCE下通过C/C++ codeHANDLE hVideoDrv CreateFile

求助!在WINCE下使用S5PV210的HDMI输出时遇到的问题
在WINCE下通过

C/C++ code
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上,这个搞完才算有点爽,楼主,这帖子我跟定了。
一起来玩。明天开始搞。

热点排行