DirectFB的架构介绍
***************************************************************************************************************************
作者:EasyWave 时间:2014.09.13
类别:开源GUI系统-DirectFB简介 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
一:DirectFB简介
DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示。它是一个用软件封装当前硬件无法支持的图形算法来完成硬件加速的层。DirectFB是为嵌入式系统而设计。它是以最小的资源开销来实现最高的硬件加速性能。
DirectFB是图形API存在于Frame Buffer层之上与高级图形管理层如GTK+等之下的。它可以以很小的系统资源占用来提供图形硬件加速功能,提供类如多路a通道渲染模型等高级图像操作。它不修改Linux内核,除了标准C库没有其他库的依赖。应用在了基于Linux系统的DTV显示系统的研发和其他有关Linux显示界面的项目上。支持市面上绝大多数显示卡,支持键盘、鼠标、遥控器、游戏手柄、触摸屏等输入设备。支持JPEG、PNG、GIF、mpeg1/2、AVI、MOV、Flash、Video4Linux、DirectFB
bitmap font和TrueType等音视频文件和字体。
二:DirectFB在系统的位置
从GUI整个系统架构来讲,对于一般的MMP,DTV和STB来说,下面图中是比较经典的结构。 DirectFB都处于QT,GTK+这样的高级GUI框架的下面,Linux系统驱动的上面。如下图所示:
从功能上面来讲,下面图中比较形象的说明了DirectFB的主要作用:图形,文字的处理(DirectFB把TS经过Decoder处理之后的码流,再加上图形和文字,一起传给视频的芯片),如下图所示:
三:DirectFB GUI的架构
对于上层的GUI高级框架来说,DirectFB是透明的,下图是一个更加细化的DirectFB的结构图:
对于底层的驱动来说,DirectFB里面负责和硬件打交道的显卡的驱动(gfxdriver)和显示系统(system),这里面gfxdriver是和各个硬件平台相关的,有可能需要自己写。 为了更易于理解DirectFB,需要先介绍几个DirectFB里面的概念:
- Layers:代表互相独立的图形缓存。大多数嵌入式设备都有多个layer。多个layer根据对应的alpha值混合 在一起,从而显示出来。
- Surface:代表一块预留的内存,来保存像素数据。DirectFB中的Drawing,Bilitting操作就是基于 surface的。Surface的内存根据设定,可以从系统中分配,也可以从显卡的内存中分配。
- Primary Surface:代表一个特殊layer的特殊surface。如果primary surface是单缓冲的,任何对于 primary surface的操作都会直接反应到显示屏上。
- Subsurface:是一个surfac的子集,但是自身并不占有任何内存。
- Window/Windowstack:控制一个layer中的surface该显示什么。Window属于某个背景可以设定的layer。 每个window有自己的surface,window用这个surface来组合图像。
比如说下图中有三个Layer,最下面的Layer是一幅背景图,中间的Layer是一个透明的带有一个“igel”的Layer,最上面是一个透明的带有subtitle的Layer,最后我们在显示器中看到的就是各个Layer的混合。
再比如说下面这幅图,Lower Layer是一个全屏模式的Layer,它的背景图片渲染在自己的SurFace上面。Video area是一个SurFace,用来显示video。Upper Layer通过window stack/window 来显示应用程序的内容,而且Upper Layer是一个透明的Layer,这样混合之后,可以透过上面的Layer看到下面的video。
DirectFB的架构介绍的更多相关文章
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 从零开始编写自己的C#框架(5)——三层架构介绍
三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...
- SOA架构介绍和理解
SOA架构介绍和理解 SOA的正确方法论及目标模型,其实SOA在实现架构落地上,需要考虑到对服务的组合,不断的重用现有的服务,让企业应用可以逐步集成,快速实现业务的迭代. 通过SOA架构分层将服务按照 ...
- MemSQL分布式架构介绍(一)
最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...
- Apache Shiro 使用手册(一)Shiro架构介绍 - kdboy - ITeye技术网站
转载 原文地址 http://kdboy.iteye.com/blog/1154644 一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理 ...
- Apache Shiro 使用手册(一)Shiro架构介绍
一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录": 授权 - ...
- MemSQL分布式架构介绍(二)
接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...
- 大型网站技术架构介绍--squid
一.大型网站技术架构介绍 1.pv高 ip高 并发量 2.大型网站架构重点 1. 高性能:响应时间,TPS,系统性能计数器.缓存,消息队列等. 高可用性High Availabilit ...
- Android_进化史和平台架构介绍
一.Android平台发展史 2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1) 2009年4月,谷歌正式推出了Android 1.5 ...
随机推荐
- Vue学习之路---No.5(分享心得,欢迎批评指正)
同样,首先我们还是回顾一下昨天讲到的东西: 1.常用的Vue修饰器 2.当利用js方法不修改数据,但也可以改变视图时,我们需要整体返回再整体接收 (如: items.example1 = items. ...
- 浅谈python 手机crash和app crash循环执行问题
----------------引子---------------- app自动化测试人员经常遇见的问题,第一:手机抛的异常导致脚本循环停止!!!!!!!!第二:app抛的异常导致脚本循环停止!!!! ...
- 用javascript实现base64编码器
前面的话 base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用 ...
- CentOS 中 YUM 安装桌面环境(转)
使用 yum groupinstall 指令很容易就能安装上图形界面的桌面系统. 1. yum 的 group 指令 yum 可以以程序组的模式来安装成套的软件包.支持的软件包可以通过, # yum ...
- CCNA网络工程师学习进程(10)NAT的配置
NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程. (1)NAT简介: 在实际应用中,NAT ...
- JS中的异步以及事件轮询机制
一.JS为何是单线程的? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊.(在JAVA和c#中的异步 ...
- cookie技术简介
Cookie简介 众所周知,HTTP协议是一个无状态的协议.一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义.用户在浏览器的地址栏输入页面的URL,浏览器就会向Web Server ...
- HTML5 的WebSocket
认识HTML5的WebSocket
- 老李分享:持续集成学好jenkins之安装
老李分享:持续集成学好jenkins之安装 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...
- 性能调优:mysql之left join
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...