base,overlay1,overlay2的混合显示问题??

zozowit 2007-11-19 03:41:38
我用的是pxa270,希望在overlay2上实时播放yuv420数据,然后在base或overlay1上显示界面
现在遇到的问题是怎么才能让overlay2播放视频的同时,界面又正常显示呢?
我已经通过修改相关寄存器使得base层在最上,overlay2层在最下,设置了相应寄存器使base透明,但混合显示效果很差,overlay2图像失真
透明方面,寄存器我只是设置了lccr3最高两位为11,

当我通过修改lccr0而将overlay2置于最上层时,yuv图像输出是正常的
base层的颜色格式我是通过修改内核驱动里的pxafb.c文件中的数组实现的


RGBT555和RGB565两种我都尝试过,通过设置lccr3寄存器,都能透明,但效果都不好,是不是我修改了lccr3寄存器后,pxa270能自动地将base层上的像素转换成RGBT555呢,对此我一直感到疑惑。实际上我是用minigui或QT做界面,我查了一下二者的源码,它们都是操纵/dev/fb0,如果要在overlay1上显示界面的话,是否应该修改minigui或QT的源码呢,这样做是否可行呢

我这么做是否正确呢,哪位可以给我一些提示呢?

补充:
我通过更内核驱动中的数组,
86 static struct pxafb_rgb def_rgb_16 = {
87 blue: { offset: 11, length: 5, msb_right: 1},
88 green: { offset: 5, length: 6, msb_right: 1},
89 red: { offset: 0, length: 5, msb_right: 1},
90 transp: { offset: 0, length: 0, msb_right: 1},
91 };
将base层改成RGBT555
然后在base层将一幅白色的jpeg转成RGBT555显示
190 unsigned short B = (blue >> 3) & 0x001F;
191 unsigned short G = ((green >> 3) << 5) & 0x03E0;
192 unsigned short R = ((red >> 3) << 10) & 0x7c00;
193
194 return (unsigned short) (R | G | B | 0x8000);

将lccr3的高两位置1,在overlay2上播放yuv420的图像,效果一样很差,只能见人物轮廓,而当将overlay2置于base之上时是很好的播放效果
期待各位的解答,谢谢
...全文
80 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧