基于T-DMB的手机电视软件设计| 中通网
首页 > 产业链 > 手机设计>软件解决方案    
 
基于T-DMB的手机电视软件设计
http://www.ci800.com     发布时间:2007-11-26

    摘要:本文概括性地讨论手机电视这种嵌入式手持设备的软件开发要点:如何设计硬件,实现音视频同步,提高H.264解码速率,并防止DMA缓冲溢出等。

    引言

    目前,世界上已经提出了多个地面数字电视标准:如欧洲的DVB-T、美国的ATSC、日本的ISDB-T,并且都达到实用阶段,许多国家和地区都在选择自己的数字电视地面广播(DTTB:DigitalTelevisionTerrestrialBroadcasting)系统。而用于手持移动终端的标准有:T-DMB(韩国)、DVB-H(欧洲)、MediaFLO(美国)、StiMi(中国待定)其中,已商用的是韩国的T-DMB。在我国,北京广播电台在2006年9月初正式开通了名为DAB的手机电视系统,通过电视塔覆盖了北京六环以内,提供12套数字广播节目,同时对2套电视节目进行测试播出。因此,如何快速设计一款可以接收手机电视信号的手持终端设备,以便夺取市场先机就是本文要讨论的内容。

    软件设计

    T-DMB标准概述

    T-DMB采用H.264视频压缩标准,音频采用专利费较低的MPEG-4比特分片算术编码BSAC(Bit-SlicedArithmeticCoding)或者AAC+(欧洲T-DMB采用),图像格式为CIF(CommonIntermediateFormat)(352×288),把这些音频和视频码流加上一些用户数据,经过MPEG-4SL(SyncLayer)同步层打包和MPEG-2TS(TransportStream)复用后,交给调制器调制为适宜在信道上传播的信号发射出去。各种标准的接收端除信道解码有较大差别,信源的解码很相近。T-DMB系统发送端编码器结构如图1所示。

                                                      图1T-DMB发送端编码框图

    其中的MPEG-4OD/BINFS发生器产生视听对象、场景时空关系信息和视听对象的描述符信息。IOD发生器产生视听对象的初始信息:场景描述和对象描述信息。分段发生器主要收集SLP和IOD数据信息,用于产生和节目解复用相关的参考信息PSI(ProgramSpecificInformation)。在T-DMB的数据流中,可以通过解析PMT中的描述字段得到IOD_descriptor,由IOD_descriptor可以得到场景、对象描述信息。由对象描述可以得到ES_descriptor等信息。SL同步打包器主要负责视听对象和辅助数据的同步。SL包经PES打包之后,再把PES包打为TS包发送给调制器。

    软件的功能描述

    软件的主要任务是TS流的解复用、H.264和AAC+的解码,采用微软的DirectShow技术开发,可以降低开发难度和开发周期。DirectShow技术是微软提供的Windows平台多媒体开发包,以COM为基础。DirectShow使用FilterGraph的模型来管理整个数据流的处理过程。参与处理的各个功能模块叫Filter,按功能分3类:Source、Transform、RenderingFilter。SourceFilter主要负责获取数据和前期的处理;TransformFilter负责数据格式的转换和传输,主要是负责解码;RenderFilter负责显示。各个Filter和应用程序的交互靠事件通知机制来完成:Filter状态改变时发出一个事件,由FilterGraphManager处理或发给应用程序。整个软件可以分为5大功能模块,如图3所示。TS解复用器模块属于SourceFilter,作用是从DMA缓冲中获取数据,然后从TS流中解析PAT(ProgramAssociationTable)和PMT(ProgramMapTable),得到相关节目的音频和视频数据TS包的PID(PacketIdentifier)之后,就可以组合PES(PacketizedElementaryStream)包,同时还可以得到和音视频同步相关的参数:PCR(ProgramClockReference)、CTS(PresentationTimeStamp)、DTS(DecodingTimeStamp),最后把PES包去包头后的ES(ElementaryStream)数据发给下游的解码Filter。H.264和AAC+解码模块属于TransformFilter,主要功能是把从上游获取的音频和视频数据进行解码,把解码得到的PU(PresentationUnit)重新排序(只有用到双向预测时需排序),送给下游的生成器。视频生成器和音频生成器模块属于RenderingFilter,主要完成显示功能。如果数据格式需要转换,可以在解码器和生成器之间加一个具有转化功能的TransformFilter。

                                                               图2软件模块设计框图

    音频和视频的同步

    软件设计中的关键技术是解决音视频同步的问题。音视频同步主要在TS解复用器中解决。要想做到音频和视频的同步,需要用到这几个参数:PCR、DTS、PTS。可以在TS包的调整域中得到PCR,从PES包中得到PTS。PES包中的数据是SL包,可以从SL包头中得到DTS。DTS是解码时间,PTS是显示时间。PCR是对编码器90K时钟的计数,它的作用是在解码器切换节目时,提供对解码器PCR计数器的初始值。PTS、DTS最大可能和PCR达到相同的时间起点,即对解码器提供一个公共的时钟参考,以便准确地进行音视频的同步。PCR捕捉到和DTS数值相同的时刻,就可以进行音视频解码。因为视频编码的时候用到了双向预测,一个图像单元被解出后并非马上显示,可能在存储器中留一段时间,作为其余图像单元的解码参考,在被参考完毕后才显示。由于声音没有用到双向预测,它的解码次序就是它的显示次序,故对它MPEG只提出PTS的概念,PTS就是音频的DTS值。即:

DTS=PTS(1)

如果得不到PTS,那么按下式计算:

PTS=PTS_pre+Xms(2)

其中,PTS_pre表示前面一个AU的PTS,X是ACC+一帧的时间间隔,以ms为单位。

一般视频对象分为I-VOP、B-VOP、P-VOP三种编码类型。假设在解码器端的VO(VideoObject)输入次序为:

12345678910………

IBBPBBPBBPBBPBBIBBP........

由于视频对象编码时用到双向预测,解码器的实际解码次序为:

IPBBPBBPBBPBBIBBPBB........

显示次序同解码器的输入次序。假设知道I帧的PTS和DTS。那么得到关于P帧:

PTS_P4=PTS_I+33.67ms*3(3)

DTS_P4=DTS_I+33.67ms(4)

B1帧:PTS_Bn=PTS_I+33.67ms*2(5)

DTS_Bn=DTS_I+33.67ms(6)

B2帧可以参考上面的两个式子。其中,33.67ms为视频帧时间间隔。

    软件开发注意事项

    关于H.264的解码效率问题。软件解码部分采用开源工程ffmpeg中的H.264解码器,它效率高,方便移植,其中,关键运算,如IDCT、运动补偿等还在几种不同平台上用汇编进行实现。把H.264解码器移植到ARM平台,对于IDCT和运动补偿汇编代码,只需仿照其它平台的代码就可实现,其开发难度并不大。音频解码部分可以参考FAAC和FAAD开源工程。

    结语

    本文讨论的是能够接收符合T-DMB规范(各种标准的接收终端的差别很小)手机电视信号的嵌入式手持设备的软硬件设计概述,这种设备使用户可以不经过移动通信网络直接获得数字电视信号,能够满足人们随时随地对信息的需求。在实际的开发过程中的主要硬件问题是电磁兼容,软件是音视频的同步和H.264的解码效率问题。软件开发的难点集中在MPEG-2的解复用和DirectShow应用框架的设计。   (电子设计应用)

 
更多相关的新闻