【VC++开源代码栏目提醒】:网学会员,鉴于大家对VC++开源代码十分关注,论文会员在此为大家搜集整理了“一种Intel CE2110下的Gstreamer多格式媒体播放设计 - 期刊论文”一文,供大家参考学习!
2009年第十一届全国消费电子技术年会 暨数字电视研讨会 一种I nte I CE2 1 1 0下的(3st r eame r多格式媒 体播放设计 朱宁西.王京林 华南理工大学电力学院。
广东广州510640 【摘要】介绍了Intel推出的新一代消费类SoC芯片CE2110,在此基础上构造平台硬件模块。
软件采用 Linux和
开源Gstreamer媒体应用框架的架构,以管道为设计主线,实现MPEG一2和H.264的硬解码,其他 多格式的软解码。
文章最后对基于CE21 10的媒体播放器进行了测试,测试结果表明,在此平台上能够流畅 播放、准确控制多种格式的码流文件。
具备实际应用前景。
【关键词1 CE2110;Gstreamer;管道;Linux;MPEG-2;H.264 1 引言 现代数字电视技术和互联网
通信的结合。
促使IP】〔v、数字机顶盒、网络电视播放机等快 速发展。
利用宽带有线电视网,集互联网、多媒体、通讯等多技术于一体,向普通家庭用户提 供包括数字电视在内的多种交互式服务的崭新技术,成为目前家庭影音娱乐的主要特征,所 有这些服务的核心是保证多种高清媒体格式的顺畅解码播放。
但是当前的高清电视机顶盒存在以下缺陷:1)不能支持多种解码格式;2)解码格式单 一;3)价格昂贵;4)不能支持不断更新的数据服务标准;5)用户界面不佳;6)性能低下的 专用CPU等。
由于存在上述种种缺陷,无法真正促进高清机顶盒的发展和普及。
因此需要研 究一种性能强劲的处理器和支持多种高清解码的软件架构。
为此。
本文设计了一种基于英特尔ARM+DSP核的SoC芯片CE21 10和有完善GNU社 区支持的媒体应用框架Gstreamer的高清数字机顶盒解决方案。
它能实现H.264和MPEG一2 的高清硬解码,其他格式基于Gstreamer插件的软解码,软件开发成本低廉,可增加多种附加 服务。
文章对软件设计进行了详细的介绍,并最后给出了对基于CE2I 10播放器的测试结 果.总体测试结果表明。
该播放器符合产品级的性能需求。
同时在后续的白盒测试中,将有问 题的播放文件都一一进行了故障定位,并提出了相应的故障解决方案,同时也验证了方案的 可行性和稳定性。
. 2 CE21 10芯片和硬件模块设计 2.1 CE2110芯片介绍 CE2110是英特尔公司专为数字机顶盒和其他互联网消费类电子的产品设计的新一代.234· 第十一届全国消费电子技术研讨会
论文集 SoC。
内建功能强大的1.0 GHz主频XscMe核心、MPEG-2和H.264硬件视频解码器【l】、音频 解码DSP、2xDDR2内存接口、以及2D/3D图形加速器。
软件提供模块化
软件开发环境PDK (Platform Development Kit)包的支持。
CE2110整体
方案的功耗较低,在主频达到最高1 GHz 时的功耗也仅为7 W。
CE2110可以同时支持2路标清和l路高清电视信号。
除了支持高清 机顶盒外,它还可支持IPlⅣ12-31与DVB—C、DVB—T、DVB—S的混合机顶盒.CE2110媒体处理 器针对这些高级应用进行了优化,满足功率和成本要求。
2.2硬件功能模块设计 CE2110内部集成的功能较多,包括音视频解码、加解密加速器、总线扩展等,因此可以 简化对外围电路设计。
数字机顶盒系统硬件的组成结构,主要由处理器模块、卫星信号输入 模块、内外存储模块、音视频接口模 块、网络接口模块、扩展外设接口模块 组成【4】。
因此根据数字机顶盒系统的硬 件组成结构以及CE2110内部集成的 各种功能模块。
可以设计出完整的基 于CE2110的数字机顶盒系统。
具体的
系统硬件整体框图如图l所示。
主要模块实现的功能如下: 1)处理器模块:音频(MP2,MP3,AC3,AAC共4类)DSP硬解码.H.264 和MPEG一2的硬解码。
其他媒体协议 图1 CE2110硬件模块组成框图软解码。
3D图形加速.系统总线扩展驱动。
2)内外存储模块:由三星DDR2内存和Intel Nand Flash构成。
为实现PVR(PersonalVideo Record)及其他功能.可以通过SATA接口扩展硬盘。
3)卫星信号输入模块:连入ATSC调谐器,DVB—C调谐器,DVB—T调谐器,为机顶盒输入”IS(Transport Stream)信号。
4)用户音视频接口模块:提供色差,复合,S端口的视频输出,VC总线出来的音频输 出,MIC音频输入,HDMI数字音视频输出。
5)网络接口模块:提供100/10 Mbit/s网络连接,实现
网络播放模式和P2P下载功能扩展。
6)扩展外设接口模块:扩展了4个USB口,1个JTAG烧写调试口,2个PCI扩展槽,2个智能卡(Smartcard)接口。
3 Gstreamer组成和工作原理3.1 Gstreamer组成部分 (:;Streamer是
开源的多媒体应用编程框架嘲。
它遵从Glib2.0库中的Object模型—— ·235· 第十一届全国消费电子技术研讨会
论文集 表1 Gstreamer的主要组成部分 Gobject对象。
和Windwos下的 DirectShow设计理念类似。
其 名称 功能描述 目标是要简化音/视频应用程 gs treamer Gstreame骸心包 gst—pluginrbase Gstreamer必,需元件集合 序的开发。
目前已经能够被用 gst—Pluginmgood 符合LGPL矽J,议的优良插件集合 来处理像MP3,H.264,MPEG-1, gst—Plugins-u91y 可能附带发行权n日题的优良插件集合 MPEG一2.AVI.Quicktime等多 gst—P1ugins—bad 品质需要加强的插件集合 gst—python 与Pytho n井I{绑包 种格式的多媒体数据。
它通常 其它 其他的一此扩展功能包 被用来设计媒体播放器。
现有 多达150个插件。
Gstreamer的主要组成部分如表1所示。
3.2 Gstreamer
工作原理 Gstreamer是GNOME桌面环境推荐的流媒体应用框架,采用基于插件(Plugin)和管道 (Pipeline)的体系结构。
框架中的所有的功能模块都被实现成可以插拔的组件,并且在需要 的时候能够很方便地安装到任意一个管道上。
所有插件都通过Pipeline机制进行统一的数 据交换。
很容易利用已有的各种Plugin“组装”出一个功能完善的多媒体应用程序。
应用中只 需编译选择的Gstreamer插件,灵活度和可裁剪性非常高。
Gstreamer建立在Glib的基础上,软件设计的模式是用C语言模仿C++的特性,它非常 巧妙地使用Struct结构体实现类的继承和封装嗍。
在Gstreamer应用中,元件是组成管道的 基本构件。
也是框架中所有可用组件的基础,GStreamer框架中的大部分API都会涉及到对 元件的操作。
元件通过Pad与外界进行交互,向框架中的其余部分表征自己的特性或者功 能。
开发者可以设置元件的属性,图2为Gstreamer基本应用原理构成图。
图2 Gstreamer基本应用原理构成图 Pad根据是在元件的输入端还是输出端,分为Src Pad和Sink Pad。
Bin是Gstreamer中 的容器.也是特殊元件。
它通
常用来添加和连接管道中创建的其他普通元件。
Pipeline在Bin 之上。
通过它控制媒体播放中的各种状态,包括Play,Pause,Fast Forward,Rewind等。
Bus在 Bin之上。
主要用来装入回调函数,传递一些Pipeline运行后的消息。
每一个Pipeline都会默 认有一个Bus。
不需要手工创建,只要设置消息句柄到Bus上,Pipeline运行起来后,等待消 息被捕捉到,就会立刻调用回调函数。
实际
设计中,包括创建管道,创建元件,连接元件,装入 Bus消息。
输入控制五大模块。
.236· 第十一届全国消费电子技术研讨会
论文集4 Gstreamer和Intel SMD下的媒体播放软件设计4.1 Intel SⅣm Plugins Intel为CE2110的高清机顶盒开发提供了强大的平台开发包PDK。
在MPEG一2和H.264视频硬解码和4种硬解音频(MP2,MP3,AC3,AAC)上,包装了一层SMD(Stream MediaDriver)驱动。
SMD驱动间接调用GDL(Graphic Display Library)接口,有2D/3D图像处理的底层Driver及CE2110硬件接121调用,类似于Linux下的帧缓存(framebuffer)。
在SMD的基础上封装了对Gstreamer框架支持的插件,称为SMD plugins。
在设计中,GDL的API可以用做设计Subtitle及设置显示输出端口属性。
音视频播放,直接利用SMD plugins。
SMD plugins中的元件主要包括Demux元件,Decode元件,Render元件3大类。
文中以smd开始的名称均为SMD plugins中的元件。
4.2媒体播放管道构建 媒体流可细分为”IS(Transport Stream)流和PS(Program Stream)流,机顶盒应用中主要为髑流翻。
文中仅对此进行讨论。
设计中,输入的码流模式可选范围3种:本地播放,卫星播放,网络播放。
对应的Gstreamer的输入源元件名称分别是:filesrc,md_tsd_source,udpsrc(或rtsprsc)。
使用stud_clock_provider元件提供音视频包/帧Presentation timing模式。
管道的后面连接smd—tad—demux进行音视频的解复用。
其后连接3部分sink pad,分别是:1)音频部分。
连接smd_audiosink元件(包含音频解码和Render输出)。
2)视频部分,硬解码连接smd_mpe92_video_dec(MPEG2解码元件)或smd_h264_video_dec(H.264解码元件)。
软解码 的元件可以直接到Gstreamer网站(http://www.gstreamer.org)下载源
代码进行裁剪编译,放置.80文件放到目标板的/lib/gstreamer-0.10/目录下即可。
3)PSI(Program Specific Information)部分输出数据到PSI过滤器。
具体的Gstreamer设计中,整体管道设计如图3所示(卫星播放模式)。
Audio 图3管道中元件连接及构造图(Tuner mode) 在整体管道构造中,使用到一些重要的Gstreamer/Glib API函数。
它们实现创建元件、Bin、Pipeline,连接元件,设置元件属性等。
以下为具体设计管道的主要步骤: 1)gdl_init(),g_main loop_new():初始化GDL,创建一个Glib EventLoop; 2)gst_pipeline_new():创建一条新的管道; 3)gst_element_factory_make():根据元件Factory中的类型创建新的元件。
4)g__object_set()/g_object_get():设置或者获取指定元件的属性(为字符串常量),可 以通过输人命令“gst—inspect+元件名”获取当前元件的所有属性; 5)gst_bin_add():将元件添加到已创建的Bin中,等待下一步连接; .237. 第十一届全国消费电子技术研讨会
论文集 6)gst_element_link()儋st_pad_link():连接两个元件的Pad,必须输入端为Src Pad,输 出端为Sink Pad。
当元件有多个Pad的时候,使用后者,指定具体的Pad进行一对一连接; 7)gst_pipeline_get_bus(),gst_bus_add_watch():在已经创建的管道的基础上装载Bus; 再在Bus上添加需处理消息的回调函数; 8)gst_element set state():设置管道的状态为播放。
可以设置为GST_STATE_NULL, GSrI’-STATE_PAUSED,GS7r.sTATE—PLAYING。
对应于初始化、播放、暂停播放状态。
9)g_main_loop_run():让EventLoop运行起来,码流的播放开始; 10)gst_object_unref(),gdl—close():退出播放时,回收系统资源,关闭GDL。
4.3播放过程状态控制 对播放过程中进行播放、暂停、快进/快退、频道切换(Channel Change)等一系列动作,必 须添加输入控制子线程。
因为暂处于设计阶段,故使用键盘按键模拟遥控器操作。
过程为:打 开tty设备,由tty设备读取到标准输人中的值,再根据不同的键值进行不同处理,控制播放 过程。
为实现线程安全和软件一致性,不使用标准C库函数中的open(),read(),close()进行终 端操作。
在Gstreamer的下的Glib2.0里面有iochannel支持。
iochannel可以把开发者指定发 生在文件描述符FD、管道和socket之上的Event转换为glib内部事件。
从而可以在
程序中 用统一的方法来处理IO事件和用户交互。
下面
代码段为创建过程的主体: GIOChannel。
ioc=g_io_channel_unix new(STDIN_FILENO); assert(ioe!=NULL); g_.io_channel_set_flags(ioc,(GIOFlags)(g_io__channel_get_flags(ioc)I G_IO._FLAG_NONBLOCK),NULL); g_io_add_watch(Joe。
G IO IN,(GIOFunc)(handle_kb_input),(void+)kb_func); handle_kb_input()回调函数利用g io channel read_chars()函数得到键值,传给kb_fune 函数指针待用。
整个kb_init()键盘输入控制模块加在Gstreamer管道运行之前。
在它里面创 建2个线程,一个产生键值。
一个消耗键值。
两个线程通过一个单链表和一个互斥体Mutex 实现相互关联和等待。
产生键值线程将kb_func()中的有效值不断加入单链表。
依据键值进行播放控制的API实现: 1)播放、暂停、停止通过Gstreamer函数gst_element set state()实现; 2)快进,快退通过gst_element_seek()和gst_pipeline set new_stream_time()实现。
5 播放性能测试结果及分析 在CE2110的媒体播放器构建完成后,使用多种音视频组合媒体文件在本地播放模式 和网络播放模式(UDP协议)针对传输流偈进行测试。
结果如表2所示。
总体测试中,播放 媒体文件的合格率达到了97.8%。
符合产品级的性能需求。
在后续的白盒测试中,将有问题 的播放文件都一一进行了故障定位清楚。
针对出现的
问题,当前解决方案为:1)在网络播放播放模式下,管道中加入queue元 件,为分辨力高的视频流提供缓存;2)采取短暂设置管道smd_audiosink元件静音(mute)0.1.238· 第十一届全国消费电子技术研讨会
论文集 表2播放器测试结果 视频格式 音频格式 测试文件数目 流畅播放 出现的问题 MPEG一2 MP3,MP2 23 22 在恢复播放时有短暂噪音 MPEG-2 AAC 17 17 无 MPEp2 AC3 10 10 无 H.264 MP3,MP2 21 21 无 H.264 AAC 15 14 A/V不同步,音频慢0.1 s H.264 AC3 11 ll 无秒方式,克服从暂停到恢复播放时的可能出现的短暂噪音。
6 小结 从高清机顶盒要求人手,在英特尔新一代极高性能的CE2110芯片上,完成了一种全新的依靠Gstreamer
开源媒体框架,利用硬解码加上软解码构建管道方式,实现多格式多媒体播放器设计的解决方案,并且通过了严格的性能测试,测试结果表明,基于Intel CE2110和Gstreamer软件架构的嵌人式媒体解决方案,具有高性能,高可靠性,富扩展性等特点,极具实际应用价值。
当前在CE2110处理器上进行了高清机顶盒的核心业务——媒体播放的设计.研究的下一步深入方向是:1)在目前稳定的播放器上,利用CE2110的硬件3D图形加速,设计上一层完善的用户图形界面,利用OpenGL构建3D界面是个极佳的选择;2)利用网络P2P和MP2P的发展,研究在软件设计上实现通过遥控器操作,
搜索热门媒体种子进行P2P下载的功能。
.239. 第十一届全国消费电子技术研讨会
论文集 参考文献 〔1】1 SIEBERT D P.Implementation of H.264/MPEG-4 AVC in low cost set top Boxes〔C〕//Proc.ISCE2005. 【S.1.〕:IEEE Press,2005:3 10-3 14. f2】 UDO R K,RONNY S. Analysis and quality assessment of peer-to-peer IPTV systems【C〕/Wroc. ISCE2008.IS.1.〕:IEEE Press.2008:1-4. 【3】3 PARK S.Integrated session control for peer-to-peer I”、r services〔C〕//Proc.International Conference on Convergence and Hybrid Information Technology.IS.1.〕:IEEE Press,2008:378-384. 【4】ROSTAMI,M,TAVARES J,NAVARRO A.Multi-decoder digital television platform〔C〕//Proceedings of the 28th Euromicro Conference(EUROMICRO’02),2002. 【5】5 TAYMANS W,BAKER S,WINGO A,et a1.GStreamer appficafion development manual(0.10.23.1)〔EB/ OL〕.〔2009-05-05〕.http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.htnd. 【6】rITU_T Rec.H226.0 ISO/IEC 13818-2,Information technology-Generic coding of moving pictures and associated audio-Part 2【S】.1994. 【7】n-U-T Rec.H222.0 ISO/IEC 13818-3,Information technology-Genetic coding of moving pictures and associated audio-Part 3〔s】.1994. 〔8】 ITU-T ISO/IEC 13818-1,Information technology-Genetic coding of moving pictures and associated audio—Part l〔S1.1994. Multiformat Media-play Design Based on Intel CE21 10 and Gstreamer ZHU Ning-xi,WANG Jing-lin Electric Power College,South China Unive瑁ity of Technology,Guangzhou 510640,China 【Abstract〕This paper introduces the Intel first generation of consumer electronic SoC chip CE21 10, and constructs platform hardware modules. With Linux system and open 80uree media framework Gstreamer soft architecture,above Pipeline concept of Getresmer,gives the realization of MPEG-2 and H.264 hardware decoding and other format soft decoding.At last,the media player based on CE21 10 has been tested,test results show that, the system able to play smoothly and control accurately with muhi-sream file formats.r11li8 model has commercial application value. 【Key words】CE2110;Getreamer;pipeline;Linux;MPEG-2;H.264 作者简介: 朱宁西(1964一),女,副教授,硕士生导师,主要从事
计算机控制及应用研究; 王京林(1984-),硕士生,研究方向为嵌入式系统和多媒体技术。
·240·.