Overlay视频显示的几点经验

当你欣赏电影大片,看到精彩之处时,禁不住用键盘上的"printscreen"键或截图软件截取了漂亮的画面,却发现打开图片后只能看到漆黑一片,这是为什么呢?

其实这源于overlay显示模式, 显示模式overlay即“覆盖",是一种数字视频的显示技术,允许视频信号不经过显卡GPU的处理,仅通过显存直接显示在屏幕上,所以我们打开一个窗口,它会直接覆盖到原来的窗口上,他后面的图像是不变的,只是被挡住看不见了,按"printscreen"是无法抓取用overlay显示的,位于底层 ”上面的“画面的,所以我们看到的图片是一片漆黑。

overlay的最大用途是在于优化视频播放

1。把yuv格式的表面blt到另一个yuv格式的表面大部分显卡不支持(不管什么overlay表面,离平表面,主表面,都会这样),例如geforce显卡的这种blt操作不会缩放而且位置不起作用(即默认贴在0,0),如果多个图象blt,那也许只会显示一个,其他的被遮住了,而且也不会缩放,然后tnt的显卡干脆什么都不会显示,不过也会有支持的显卡,比如说我的显卡,而且我已经做好了多视频同时显示,还可以缩放,结果测试的时候才发现只有我这种类型的显卡支持,其他都不支持,所以都是无用工.(另:yuv格式blt到rgb格式大部分显卡都支持,rgb的blt到yuv的没试过)


2。overlay的特性:大部分显卡是支持yuv格式的overlay,因为overlay主要是为了播放影视、单视频而设计的,他有自己的拉伸函数,只能有一个overlay表面。做个测试,先打开realone播放影视,然后抓图,可以发现只能抓到黑的背景,表示realone正在用overlay显示,然后再打开mediaplay播放影视(realone不要关),抓图,可以抓到图象,反过来先打开mediaplay,再打开realone也会出现同样的情况,这个例子旨在说明这些播放软件默认用overlay格式播放,但是发现overlay被占用后会用其他方法播放。所以想用overlay的话最好只用在单视频上。

3。综合1和2,用overlay显示多视频唯一的出路是rpg格式的表面blt到overlay表面上?大家想用overlay的都是为了提高性能吧,视频流是yuv格式的,难道要把yuv格式先转化为rgb再blt到yuv?这个方法我不想再去想了。

猜你喜欢

转载自blog.csdn.net/tugouxp/article/details/80897613