基于DirectFB的嵌入式播放器设计

发布者:qin199099最新更新时间:2012-05-23 来源: eefocus关键字:DirectFB  嵌入式  GUI 手机看文章 扫描二维码
随时随地手机看文章

1 概述

随着嵌入式的普及和发展,嵌入式设备的功能越来越强大,用户对嵌入式设备的要求也越来越高。各种多媒体应用程序被移植到了嵌入式系统中,是否能够播放音视频是人们衡量和购买嵌入式设备的基本要求之一。本文提出了一种基于DirectFB嵌入式播放器解决方案,有效地降低嵌入式系统的资源消耗,适用于CPU频率小于400MHz的中低端嵌入式系统。DirectFB是一个轻量级的GUI开发库,它通过Framebuffer以及回调函数,实现了对硬件设备的完全抽象,加速和简化了图形操作。

本文首先对DirectFB进行了详细的介绍,接着提出了一种宽松的、可分解的嵌入式播放器设计方案。该方案资源消耗少、可移植性强、系统各个模块间依赖度小,使得用户能够根据自己的系统需求快速设计满足自己要求的播放器。

2 DirectFB简介

2.1 DirectFB的整体框架

DirectFB必须通过Linux下Framebuffer驱动来访问硬件设备,它在Framebuffer的基础上提供了图形设备的加速、输入设备处理提取、透明窗口和多重显示层的功能。另外DirectFB设计之初就充分考虑了嵌入式系统的固有特性,体积小巧,资源消耗低。作为嵌入式系统中强大的图形处理库,DirectFB成为Linux下一代处理的一个新标准(CELF AVG1.0标准)。图1是DirectFB的整体框架。

 

2.2 DirectFB接口描述

DirectFB提供了一套C接口来方便用户进行界面开发,例如IDirectFBSurface接口提供了对于文本、BILT、画线以及画矩形的操作。IDir ectFBFont接口提供了对字体的操作,而IDirectFBVideo接口提供了对多媒体进行播放控制的操作。表1对DirectFB接口进行了详细的描述。

 

3 播放器的框架

嵌入式播放器的架构如图2所示。采用DirectFB开发的Lite作为图形界面,与用户进行直接交互;调用DirectFB的Video实现了音视频的插件接口和解码器模块。该接口将FFmpeg、xine、libmpeg3等多媒体库封装成统一接口,具备很强的扩展性;基于Framebuffer的输出,消除了对于特定架构的依赖,有效地增强了系统的可移植性。

 

 

图形界面是以Lite为基础开发的。Lite是基于DirectFB开发的以box为基类的对话框。通过调用Lite可以编写各种暂停、播放、音量等控件,用户使用这些控件与播放器进行直接交互。DirectFB本身并不提供窗口以及对话框管理功能,因而DirectFB更多地被用作底层图形库。参考文献中选择以DirectFB为后端的Cairo图形库进行2D图形开发;参考文献中选择基于GTK+on DirectFB进行嵌入式开发。如今,上层API支持DirectFB的有XDirectFB、DirectFBGL、DFBTerm、DFBSee、DFBPoint、QT on DireelFB、SDL等。采用Lite进行开发的目的,主要是因为它直接使用DirectFB开发对话框,而且源代码只有5 MB左右,具有很快的响应速度,能够有效降低嵌入式设备资源的消耗。

插件接口将对解码器的操作放到了Video统一的开发式接口中,该接口实现了分离音视频、解码音视频、播放、暂停、调节音量、调整播放速度等各种功能。通过该接口,播放器的扩展性得到了很大的提高,因此该接口是媒体播放器的核心。

3.1 插件接口以及编解码

DirectFB通过对FFmpeg进行封装,形成一组统一接口方便用户调用。插件接口通过以下方法来控制解码器:

①Probe函数。通过检查文件扩展名来确定播放器是否支持播放该文件,可以识别的扩展名有wav、au、snd、mp2、mp3、m2a、swf、wma、rm等。用户可以通过添加新的解码器来支持更多新的文件格式。

②Construct函数。通过调用FFmpeg的一些库函数,首先将输入的视频文件头信息读取出来,接着把视频文件分离成音频和视频流,并申请音频和视频流的缓冲区,然后识别出音视频解码器。该函数同时会将用户写的一些非标准函数指针赋给标准API函数,方便用户的调用。[page]

③FFmpegInput函数。该函数管理将对解码出的音视频包送入各自的FIFO队列,同时设置了一些标志位来管理FIFO队列,例如音视频队列当前的状态,当用户拖动进度条进行偏移时用户需要有一个拖动标志位,拖动的长度用来重新计算播放时间。

④FFmpegVideo以及FFmpegAudio函数。这两个函数主要用于播放音频流和数据流,同时有一些用于音视频的同步控制。

⑤FFmpeg_PlayTo函数。该函数是给用户提供的接口函数,该接口函数在DirectFB中为PlayTo。在函数中,PlayTo同时启动了3个线程,这3个线程分别调用了FFmpegInpuIt、FFmpegVideo、FFmpegAudio函数,用于将将音视频送入FIFO队列,从FIFO队列取出数据并播放。

播放器的数据流程如图3所示。音视频处理过程是同步进行的。

 

此外还有一些控制函数,例如文件播放PlayTo、播放停止Stop、按时间跳转SeekTo、调整音量SetVolume、获取音量GetVolLume、调整播放速度SetSpeed、获取播放速度GetSpeed等函数,这些函数在construct函数中被封装成标准接口便于用户涮用。

3.2 Lite和fusionsound

Video接口通过调用FFmpeg对音视频解码进行了有效的封装。通过Lite,用户与播放器实现有效交互。Lite弥补DirectFB在工具箱以及窗口管理上的不足,相比于其他的GUI,它在提供对话框和按钮的同时,资源消耗较小,适合嵌入式开发。Fusionsound是一个DirectFB的子库,它基于oss或者alsa驱动。Fusionsound将音频数据输出到了扬声器上,该函数库能够支持一些基本操作,例如WAV格式文件的播放,同时它也提供一系列的声音播放、调节播放速度、调高音量、声音缓冲区管理等接口。

3.3 播放器的流程

程序运行流程如图4所示。程序首先初始化Lite以及DirectFB库,然后初始化对话框并设置回调函数;接下来初始化一系列的按钮,例如播放、暂停、快进、声音、放大、缩小等,并设置消息触发响应函数。接着调用DirectFB接口中的video接口播放视频文件,然后会进入消息循环,来响应用户各种各样的按键消息。

 

4 实验结果

在本实验中,采用TI公司OMAP-L138处理器、64M的内存开发板做实验,内存占用约为5M左右。通过内核设置,将CPU的主频设置为300 MHz,播放器在运行期间CPU的占用率为70%,播放画面十分流畅。DirectFB开发的播放器如图5所示。

结语

DirectFB是一个轻量、高效的库,但是由于缺少必要的窗口系统导致其开发效率低。搭配由DirectFB开发出的Lite窗口系统,能很有效地进行基于对话框的程序开发。因为Lite和DirectFB本身占用的资源极少,所以十分适合嵌入式开发。本文提供了一套嵌入式开发播放器的新思路,通过对编解码代码的优化,搭载上轻量的图形和窗口管理系统,使其能够适用于各种中低端场合。

 

关键字:DirectFB  嵌入式  GUI 引用地址:基于DirectFB的嵌入式播放器设计

上一篇:基于FPGA NiosII的MPEG-4视频播放器设计
下一篇:基于智能手机的室内外定位技术在物联网中的应用

推荐阅读最新更新时间:2024-05-02 22:04

嵌入式光学指纹识别系统的设计方案
0 引言 随着电子信息技术应用面日益拓展,不少场合需要对特定用户群体进行身份识别或身份记录,如门禁系统、考勤系统、安全认证系统等,在各种系统中运用的技术形式多样,如视网膜识别、面相识别、指纹识别、RFID 射频识别应用等。其中,生物特征识别方式以其方便性强、安全性高等特点得到了越来越多人的认可和接受,特别是指纹识别技术方式,现已发展成为应用最广泛的生物识别技术之一。因此,研究基于嵌入式架构的指纹识别系统具有现实意义和广阔的应用前景。 1 系统整体结构 系统采用光学指纹传感器(内建格科微电子有限公司的光学GC0307 CMOS 图像采集芯片)与ARM Cortex M3 内核意法半导体公司的32 位高性能单片机STM32F205
[单片机]
<font color='red'>嵌入式</font>光学指纹识别系统的设计方案
基于LPC2210嵌入式微处理器实现智能安防系统的设计
1 引言 随着社会经济的发展和人民生活水平的不断提高.同时引发入室抢劫、盗窃等暴力事件频频发生.不法分子的作案手段也是越来越向高科技化、高智能化发展。同时,智能家居内部的安防系统通常价格不低.因此必须有一种价格适中且工作稳定的智能安防系统来最大限度的减小损失。本文主要针对前述现象设计基于ARM技术的智能安防系统,该系统主要采用ARM系列芯片中的LPC2210嵌入式微处理器.选用可同时处理多任务的ucos-Ⅱ操作系统。 2 系统的总体设计方案 系统的总体设计体系图如图1所示.本系统主要由物业管理中心机、公用电话网、以太网、RS485网、室内嵌入式安防控制器、报警检测和可视对讲设备组成。其中485网构成室内网络,以太网和公用电话网
[单片机]
基于LPC2210<font color='red'>嵌入式</font>微处理器实现智能安防系统的设计
基于CORBA技术的嵌入式控制器设计
重矿行业是典型的装备制造业,它的生产设备组成相对较为分散,设备现场环境较为恶劣,不易控制。传统的工业控制器只是对现场的设备进行监控,如果设备运行异常则关断设备,这样就大大降低了生产效率。而且,随着设备结构及其控制的日益复杂化,在控制的过程中可能存在不同的网络协议、不同的操作系统以及不同的编程语言。在实现它们相互之间通信的时候,需要将格式和协议进行转换,这就给我们开发控制器带来了诸多不便。CORBA技术具有良好的跨平台互操作性、可移植性、可扩展性和编程语言无关性,解决了异构平台的对象互操作问题。它屏蔽了底层的通信机制,采用面向对象的方法以提供分布式应用软件的可重用性和可扩展性,实现了异构环境下通信.这样既大大简化了分布式应用系统的开发
[模拟电子]
基于CORBA技术的<font color='red'>嵌入式</font>控制器设计
单片机是否为嵌入式技术,单片机和嵌入式学哪个
单片机和嵌入式,我喜欢用 儿子和爸爸 这种关系去区分它们。 我当初是通过嵌入式挖到了单片机开发,所以说单片机和嵌入式是一个 包含关系 , 嵌入式包含了单片机。 这层关系一定要先搞清楚。 那嵌入式除了单片机以外,还有分为以下几个主流方向: 1.单片机开发工程师 需要掌握的东西大概如下: ①学习C语言、汇编 ②学习51、STM32单片机 ③学习常用Usart、IIC、SPI、can协议。 ④能看懂数据手册基本参数 ⑤能看懂电路原理 ⑥熟悉绘图工具(AD)使用。 2.Linux系统开发工程师 需要掌握的东西大概如下: ①熟悉uboo移植、内核kernel的裁剪。 ②熟悉Linux设备驱动开发 ③熟悉ARM CPU架构、Li
[单片机]
英特尔牌火星探测器:收购风河拓嵌入式市场
英特尔牌子的火星探测器?是的,已经成为英特尔全资子公司的Wind River或许未来产品会打上“Intel Inside”的标签。收购这家吸引眼球的“小”公司,进一步增强了英特尔在嵌入式和移动设备市场的实力。 近日,英特尔宣布以8.84亿美元收购风河(Wind River)系统公司。这是一家全球领先的嵌入式软件与服务商,也是业界唯一提供面向行业市场的嵌入式软件平台的厂商。提起风河,其产品比这家的名头大了很多——NAS勇气号火星探测器就是采用了风河的嵌入式软件。 图为采用Wind River(风河)嵌入式软件的火星探测器。未来,探测器或许会打上“Intel Inside”的标签。 英特尔中国公关部公关经
[嵌入式]
英特尔牌火星探测器:收购风河拓<font color='red'>嵌入式</font>市场
嵌入式实时图像处理系统中SDRAM控制器的实现
   0 引 言   SDRAM作为大容量、高速度、低价格、低功耗的存储器件,在嵌入式实时图像处理系统中具有很高的应用价值,但其控制机制复杂,因此需要设计控制器,以简化系统对SDRAM的访问。虽然目前许多微处理器及DSP都提供了与SDRAM的直接接口,但这种通用控制器的执行效率很低,难以满足实时系统对速度的要求。鉴于此,介绍一种基于FPGA设计而实现高效SDRAM控制器的方案。结合实际系统,该方案将SDRAM配置为全页突发模式,并采用异步FIFO作为FPGA与SDRAM间的数据缓冲器。分析表明,全页突发操作模式能够很好地发挥SDRAM高速读写的性能;同时,设计成乒乓操作结构的异步FIFO,在保证数据连续性的同时,更能降低低速前
[嵌入式]
一种嵌入式便携数据采集分析仪
引言 对旋转机械的多点振动测试实践中,需要使用多种仪器,如示波器、动平衡仪、振动分析仪等。随着测试技术的进步,虚拟仪器的出现将其合而为一,大大简化了复杂的测试工作。虚拟仪器的概念是使用计算机对被测信号进行数据采集,并对采集到的数据序列进行分析和显示的全过程。按照虚拟仪器概念搭建的仪器需要三部分:计算机、数据采集硬件和分析软件。数据采集硬件一般由A/D板卡实现。然而计算机的进步和总线的变化使曾经可行的测量结构和分析程序在新的总线、操作系统上不能正常工作。各个厂家的A/D板卡一般只具有简单的采样触发方式;硬件和windows底层源代码的保密性又扼杀了用户自行开发新的采样触发方式的可能性。PC机体积过大不便移动工作;笔记本电脑
[单片机]
一种<font color='red'>嵌入式</font>便携数据采集分析仪
飞机刹车模糊神经网络DSP嵌入式控制系统
    摘要: 对现有飞机刹车防滑系统的控制算法进行了改进,采用了神经网络的BP算法和模糊实时控制,并且数字信号处理器(DSP)在嵌入式系统中实现了神经网络算法。结果表明,飞机防滑刹车效率有了明显改进,鲁棒性增强。     关键词: 数字信号处理 飞机刹车系统 神经网络 模糊控制 飞机刹车系统是飞机上具有相对独立功能的子系统,承受飞机的动、静态载荷及着陆时的动能,实现飞机制动控制。 从20世纪40年代至今,飞机刹车系统已发展到第四代。第一代飞机刹车系统由离合开关调节压力来实现刹车控制;第二代用固定参考减速度为误差门限进行控制;1967年Hydro-Aire公司的第三代飞机刹车系统,以一定的滑移率为误差门限
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved