阅读:1896回复:3
请教AU1200三层OSD叠加
最近在做一个视频叠加的项目,硬件平台采用的是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的高人指点一下,万分感谢。 |
|
沙发#
发布于:2008-06-27 11:30
因为叠加是硬件完成的,所以叠加的顺序就看硬件了,如果硬件有寄存器可以设置,就可以改变,如果没有,就只能用默认顺序了.
我没有用过AU1200,我用的其它芯片是有这样的寄存器的,你最好先看看AU1200的datasheet看支不支持,再看看driver里有没有实现相关的设置. |
|
板凳#
发布于:2008-06-27 12:24
硬件有寄存器可以设置各层的优先级,简单说就是谁的优先级高就能在有交叉的地方盖住优先级低的
谢谢楼上的指点 |
|
地板#
发布于:2008-06-30 19:07
ding
|
|