LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1715|回复: 8

视频图像在SDL/X11下显示的撕裂问题,解决的方法和副作用(呼唤realtang版主)

[复制链接]
发表于 2009-7-22 14:52:49 | 显示全部楼层 |阅读模式
使用X window+SDL做视频显示。使用的显示芯片是主板集成的G31,系统是F8
xorg使用“intel”驱动,无法使用"i810".
xvinfo 能看到2个adpator
Adaptor 0:Textured Video; port:16
Adaprot 1: Video Overlay ; port: 1

如果要多通道显示而且是硬件加速的话,只能选择有16个port的adaptor,但是intel的驱动对Textured Video的支持是有限的,似乎缺少垂直同步,显示运动量稍大的画面时,有撕裂(断层)现象。但是Video Overlay中是有垂直同步的,单通道显示时,是没有撕裂现象。

一种方法是修改intel驱动,为Textured Video增加垂直同步,但是这个超出能力范围了。
一种是修改SDL,让一个通道显示时,使用Video Overlay, 多画面时恢复成Textured Video。
第二种方法是可行的,而且也成功了。
但是,问题随之而来,实际应用中,鼠标点击拖曳,需要在视频上画框,使用gdk_draw_rectangle。这个对Video Overlay来说就问题大了,画一个框后,上次的不会被覆盖掉,一直连续拖曳会造成画面上全是线。

不知道有什么办法可以解决这个问题。

另外想问realtang版主的是:
在pc上,可以使用directfb做多通道预览显示吗?能使用硬件加速吗?
发表于 2009-7-22 17:01:06 | 显示全部楼层
在用gdk_draw_rectangle时,我一个同事说可以用给overlay surface设置index color的方法解决了刷新的问题,其实就是让overlay对指定的某个颜色显示为透明,这样位于overlay后面的drawing area的东西就可以显示出来了,如果drawing area里面包着overlay的话。
Directfb做overlay的话应该是能硬件加速的,前提是显示驱动能支持。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-23 11:43:59 | 显示全部楼层
谢谢斑竹。
按照我所理解的,directfb有两个显示驱动,一个是内核空间的fb驱动,另外一个是directfb自带的用户空间的gfx驱动。

那如何启用directfb的显卡硬件加速呢?是两个驱动都要,还是只需要用户空间的那个?用户空间的驱动是自动识别并启用的吗?
回复 支持 反对

使用道具 举报

发表于 2009-7-23 16:39:49 | 显示全部楼层
Post by jetking;2008727
谢谢斑竹。
按照我所理解的,directfb有两个显示驱动,一个是内核空间的fb驱动,另外一个是directfb自带的用户空间的gfx驱动。

那如何启用directfb的显卡硬件加速呢?是两个驱动都要,还是只需要用户空间的那个?用户空间的驱动是自动识别并启用的吗?


你说的没错,是两个驱动都需要的。
只要gfx的驱动能起来的话,一般overlay就可以用了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-23 21:54:21 | 显示全部楼层
en,
那你的意思是说,fb可以使用vga=791之类的启用vesa fb即可,那么只要gfx驱动能起来就能实现加速啦?
那如何启用gfx驱动呢?是directfb自动的吗?

我一直以为fb的驱动需要对应的,比如nv卡需要nv fb的驱动才能加速,但不知道bootargs里应该怎么写?
回复 支持 反对

使用道具 举报

发表于 2009-7-24 09:07:46 | 显示全部楼层
vesafb是通用驱动,性能差,跟DFB的gfx不搭配,最好是选择特定的Framebuffer驱动。
DFB会识别内核的驱动而自动的加载相应的gfx驱动。其实这些都是跟Xserver很像的。
回复 支持 反对

使用道具 举报

发表于 2009-7-24 14:34:28 | 显示全部楼层
另外的建议,据说也是效率最高的。
首先gfx驱动提供overlay layer并且支持flip,那么就可以从overlay layer创建window并得到其surface,视频的YUV数据直接通过DRM传送到overlay surface,然后直接调用surface的flip方法就可以了。而primary layout此时最好是处于全屏模式,因为有些显卡,非全屏模式不能启用双缓冲,也就不能flip了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-27 14:24:23 | 显示全部楼层
谢谢斑竹指点!
回复 支持 反对

使用道具 举报

发表于 2009-8-9 19:32:39 | 显示全部楼层
好贴啊 不错啊 谢谢楼主分享 拉 (*^__^*) 嘻嘻……                        
   
     
      
   
   
  
     
      
------------------------------------------------------------
听说了嘛 , 现在中域互联在搞特价啊,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表