dillonhua
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望401点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
阅读:1826回复:3

请教AU1200三层OSD叠加

楼主#
更多 发布于:2008-06-26 21:29
最近在做一个视频叠加的项目,硬件平台采用的是RMI的AU1200,遇到一个比较棘手的问题,描述如下:

老板要求三层OSD(总共有四层,Desktop,Mae,Osd0,Osd1,其中Desktop就是一般WinCE桌面或者Qte界面这一层,Mae是底层视频编解码处理的那一层,OSD0,OSD1是自己应用可以控制的),这三层分别是Desktop,Osd0,Osd1三者放在一起时互相不影响。

比如桌面在最底层,Osd0作为Alpha层放在桌面上具有透明效果,Osd1作为不透明层放在Osd0上,OSD1的背景是过滤掉的(ColorKey),那么背景显示就是带有Osd0透明效果的桌面。(见图1)

但是根据AU1200的叠加设计的原理(个人理解的),四层叠加是分为左右两个通道,比如桌面在左边,Mae,Osd0,Osd1在右边通道,叠加的时候右边的三个OSD层具有优先级别,比如Mae<Osd0<Osd1,那么叠加出来的结果则是,如果Osd0,Osd1,Mae这三层在同一个位置有交集了,就是Osd0会盖住mae,Osd1会盖住Osd0,且Osd1里的等于ColorKey的数据会被替换成桌面层的数据。(见图2AB的背景填充成桌面的图案了)

个人认为产生这个问题的原因,就是桌面层是分别和Mae,Osd0,Osd1并行进行叠加的,如果是桌面和Mae先叠加,叠加后的结果再和Osd0叠加,然后其结果再和Osd1叠加,则不会产生上面这样的问题,看了下S3C6400的叠加方案就是这样的。

还请做过AU1200的高人指点一下,万分感谢。

shentong973
驱动牛犊
驱动牛犊
  • 注册日期2005-08-21
  • 最后登录2011-03-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望77点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-06-27 11:30
因为叠加是硬件完成的,所以叠加的顺序就看硬件了,如果硬件有寄存器可以设置,就可以改变,如果没有,就只能用默认顺序了.
我没有用过AU1200,我用的其它芯片是有这样的寄存器的,你最好先看看AU1200的datasheet看支不支持,再看看driver里有没有实现相关的设置.
dillonhua
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望401点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-27 12:24
硬件有寄存器可以设置各层的优先级,简单说就是谁的优先级高就能在有交叉的地方盖住优先级低的

谢谢楼上的指点
dillonhua
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望401点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-06-30 19:07
ding
游客

返回顶部