TI的工程师们,你们好:
我在开发dm368的时候遇到一个问题,如图:
我在LCD上把VIDEO0层和OSD1层都显示出来了,VIDEO0层铺满全屏,屏幕下方的绿色区域是OSD1层,这时由于OSD1的优先级较 高,会把video层盖住一部分;OSD1层上我跑了一个QT程序,并且把QT的背景设置成了透明的,但是透明的区域并没有显示出底层的video视频, 而是绿色的,请问怎么把OSD1 上的透明区域显示出video图像呢?
我在VPBE手册中也找到了设置OSD层的寄存器的位置,但是修改之后,没有什么效果。
0x01C7:0200 OSD VPBE – On Screen Display
Offset Register Description Section
200h MODE OSD Mode Register Section 6.3.1
204h VIDWINMD Video Window Mode Setup Register Section 6.3.2
208h OSDWIN0MD OSD Window Mode Setup Register Section 6.3.3
20Ch OSDWIN1MD OSD Window 1 Mode Setup Register Section 6.3.4
(when used as a second OSD window)
Chris Meng:
你好,
运行QT的OSD1使用的是RGB888么?
如果是,能否尝试使能transparent并且配置下面的寄存器?
TRANSPVALL.RGBL Transparency value (RGB565) for RGB565 data, or lower 16-bit of transparency value (GB) for RGB888.TRANSPVALU.RGBU Transparency value upper byte (R) for RGB888.
peng zhang5:
回复 Chris Meng:
您好:
我的OSD0是PIXFMT_RGB565, OSD1是PIXFMT_OSD_ATTR;按照您的回答我设置了相应的寄存器,但是QT界面的绿色背景依旧存在! 根据您的回答,我分别设置了
OSDWIN0MD.TE0=1(Transparency enable for OSD window 0)
OSDWIN1MD.TE1=1 (Transparency enable for OSD window 1)
TRANSPVALL.RGBL=0x5555
TRANSPVALU.RGBH=0x4444
然后用regrw.out工具看了里面的值,也都写进去了:
OSD0和OSD1:root@DM368_IPNC:/opt/ipnc# ./regrw.out 1c71c08 0x01c71c08: 0000303d 000030fc 00000000 00000000
TRANSPVALL和TRANSPVALU:
root@DM368_IPNC:/opt/ipnc# ./regrw.out 1c71cf4 0x01c71cf4: 00005555 00004444 00000000 00000000
peng zhang5:
回复 Chris Meng:
您好:
感谢您的回答;
按照您的说法,我重新配置了寄存器,可还会显示绿色的背景; 我重新阐述一下我的需求:我想在video层显示视频数据的时候,OSD层也能显示图片,但是这时,OSD层上的QT程序会把video层遮住,所以我想使QT上的某一区域透明化,能够显示出底层的video视频,所以我在QT上贴了一张透明的图片,但是在启动QT程序时,发现背景为绿色的,我不清楚这个绿色的背景是从哪儿出来的? 我想在情况是:1.开机显示linux的LOGO, video层铺满全屏,osd层的位置我做了向下偏移,这时候也都正常
root@DM368_IPNC:~# ./regrw.out 01c71c08 0x01c71c08: 00003005 000030fc 00000000 00000000
2.使OSD层透明:. /regrw.out -w 01c71cf4 15 (不清楚为什么是15,这个我一个一个试出来的)LCD显示就变成了:
root@DM368_IPNC:~# ./regrw.out 01c71cf4 0x01c71cf4: 00000015 00000000 000000ff 00000000
3.启动QT程序后,绿色的不透明背景又出现了!
这时候,配置./regrw.out -w 01c71cf4 7e0 也不行,我不清楚0x7e0这个值是怎么来的?是参考“ROM0/ROM1 Color Look-Up Table”的颜色表吗?
peng zhang5:
回复 Chris Meng:
Hi,Chris Meng:
谢谢您,问题解决了,我起先没明白,后来明白了:需要TRANSPVALL.RGBL的值与QT需要透明部分的颜色一致才行!
user4716095:
回复 peng zhang5:
我也想问下这个TRANSPVALL.RGBL 里面的值要写什么!!!!!!
ming chen9:
回复 peng zhang5:
您好,请问您的解决方法能告诉我么,我也遇到这样的问题,困惑好久了没解决
ming chen9:
回复 user4716095:
您好,你的qt在osd上完全透明显示的问题解决了么