(四)DirectFB 接口

 桌面GUI系统涉及很多图像运算,比如画点、画线、填充、透明度处理、平滑度处理、层的叠加、字体处理、贴图等等。如果这些运算都由CPU来处理,那这将是对CPU的一个很大的负载。

DirectFB是一个专门针对Linux图形库设计的图形加速中间层。它的上层直接面向图形库比如QT,提供如显示、画图、输入设备控制等服务,他的下层直接面向GFX加速硬件,要求硬件驱动实现全部或部分预定的画图函数。

 

3.1 主要接口   
    . IDirectFBScreen 显示屏幕
    . IDirectbFBDisplayLayer 显示层
    . IDirectFBSurface 显示表面


  三者之间的关系如下:

显示屏幕 <-- Output(connector) <--  IDirectFBScreen <-- (mixer)DisplayLayers  <--DisplayLayer's IDirectFBSurface <-- gfx Accelarator  <--- 显卡/或CPU运算画图

  首先,用户在显示屏幕上看到一个Screen的输出,这个Screen由多个画面组成(比如同时包含:背景图片,前景视频/字幕/图片)。组成Screen的每个画面,都由一个单独的DisplayLayer来处理。多个DisplayLayers由Mixer来决定叠加的顺序/位置/以及透明度等。单独一个显示层DisplayLayer,可自由控制输出大小(放大/缩小)、背景颜色、翻转等。DisplayLayer所显示的数据(比如解析JPEG产生的RGB数据),则需要在DisplayLayer上生成一个Surface来显示,Surface控制实际的贴图操作,比如:画点/线/框/填充/变换位数、色深、分辨率,等等, Surface可直接和硬件加速打交道(gfxcard)。

 

DisplayLayers和Surface都是Screen的后端,Screen的前端(就是输出部分),还有Encoder,Output等概念。Encoder着重描述输出信号的编码参数,Output着重描述输出接口. 它们有以下重要成员:

Standards  :配置输出制式(标清/高清/PAL/NTSC/>>扩展<<)

Signals    :配置输出信号(VGA/YC/CVBS/RGB/YCBCR/HDMI/656/>>扩展<<)

Connectors :配置输出接口(VGA/SCART/YC/CVBS/SCART2/COMPONENT/HDMI/>>扩展<<)

Resolution :配置输出分辨率(directfb.h中所列举的常见分辨率/>>扩展<<)

从Screen到Encoder,再从Encoder到Output的connector,最后到显示屏幕,DirectFB的底层实现者需要做的就是根据目标硬件的特性,实现这条路线中各条通路,DirectFB的使用者需要做的就是通过Screen的成员函数配置、使用这些通路。

 

3.2 Provider 类型接口

IDirectFBImageProvider
IDirectFBVideoProvider
IDirectFBFont

此类接口提供特殊的图形输出,图像,视频,字体

 

以下医视频输出主要步骤如下:

DirectFBCreate( &dfb ) 

dfb->CreateVideoProvider( dfb, url, &provider )

provider->GetSurfaceDescription( provider, &desc );

dfb->CreateSurface( dfb, &desc, &dest );

provider->PlayTo( provider, dest, NULL, Frame_Callback, dest );

 

3.3 其它接口

IDirectFBEventBuffer

IDirectFBDataBuffer

IDirectFBInputDevice

 

IDirectFBEventBuffer: 事件同步机制,一端接入产生事件的设备,使用PostEvent之类的接口递交事件,另一端使用WaitForEvent之类的接口等待事件,使用GetEvent之类的接口获取事件。

  

IDirectFBDataBuffer: 数据DataBuffer缓冲,提供同步等待功能,并提供CreateXXXProvider(XXX=Image/Video)功能,在原代码中被广泛使用.

    IDirectFBInputDevice: 输入设备接口    

转载于:https://www.cnblogs.com/wolfrickwang/p/3516957.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值