配置
mx51支持cvbs输出UI和VIDEO
1. 编译tvout模块
2. 修改uboot的kernel启动参数,uboot中配置为
tvout输出PAL制式cvbs信号
set bootargs_base 'setenv bootargs console=ttymxc0,115200 di0_primary video=mxcdi1fb:YUV444,TV-PAL tve'
tvout输出NTSC制式cvbs信号
set bootargs_base 'setenv bootargs console=ttymxc0,115200 di0_primary video=mxcdi1fb:YUV444,TV-NTST tve'
3. 确保uboot的kernel启动参数不要包含 dmfc=3
测试
启动后, 在LCD看到正确的UI和VIDEO,执行命令:
setprop rw.SECOND_DISPLAY_CONNECTED 1
即可以在LCD和cvbs上都看到UI,进入video player播放一个video,此时应该可以在LCD上看到UI,看不到video;在cvbs上可以看到UI和video
想切换回LCD,可以执行 setprop rw.SECOND_DISPLAY_CONNECTED 0
再切换回cvbs,可以执行 setprop rw.SECOND_DISPLAY_CONNECTED 1
video双屏问题:
当前freescale的实现,还不能支持在两个屏上都显示video,freescale的说法是带宽不够,我没有验证过,但是如果需要在两个屏上都显示video数据
理论上是可行的,如果能把发送给fb2的video数据,复制一份并按照fb0的尺寸做缩放(cpu或者ipu做)后,和fb0上的UI数据合成,就应该实现了video的双屏,当然这是理论上的,有两个难题需要解决:1 复杂的处理代码; 2 IPU是否能承受这种负载。
在fsl较新的版本10.3.4上,已经修改了overlay实现方法,不再通过v4l2 output device实现视频显示。而是通过fb1或者fb2的PAN_DISPLAY显示视频数据,如果需要overlay UI到cvbs,那么必须要使用fb2显示视频数据,fb1显示UI数据;否则只需把视频数据发送到fb1即可。
透明问题
tvout背景显示video时,对UI的支持不好,至少在我的项目中是这样,原因是hardware/mx5x/framebuffer.cpp中的代码有问题。
透明和bpp32和bpp16是有关联的,需要弄清 透明和bpp,global_alpha,local_alpha以及color key之间的关系,仔细观察两个图层的合并关系。
切换延迟问题
在使用setprop rw.SECOND_DISPLAY_CONNECTED value进行切换时,会发现切换有延迟是正常的,因为这个命令要发生作用,必须有界面刷新使得fb_post被调用。
点一下触屏让界面刷新即可。
信号检测
tvout检测电路会检测IOG IOB IOR上是否有接入负载,如果没有外接视频播放设备,就不会输出电视信号。
因此如果想测量IOG IOB IOR上的信号波形,一定要确保该管脚外接了视频视频输出回路。