基于CMMB数据广播平台的数据接收程序设计
扫描二维码
随时随地手机看文章
摘要:为了实时接收应用系统所需要的数据和图片,采用了以CMMB数据广播为平台的接收方法,该方法用软件实现解析CMMB数据广播业务数据。做了测试数据的接收实验,验证了数据接收的正确性,该程序方便各种应用系统使用,用软件编程代替硬件解码不仅减少了硬件的成本,而且降低了系统实现的复杂度。
关键词:CMMB;MFS;数据广播;解复用;XPE包
0 引言
2006年10月24日,国家广电总局正式颁布了中国移动多媒体广播行业标准,确定采用我国自主研发的移动多媒体广播行业标准。CMMB技术的核心是STIMI技术,它是利用大功率S波段信号实现信号的全国覆盖,利用地面上的增补转发器来弥补卫星信号的盲区,再加上无线移动通信网络构建的回传通道,这样就组成了一个完美的体系——单向广播和双向交互相结合的移动多媒体网络。
CMMB标准的第五部分是数据广播,它是CMMB的一项增值业务。本文简单介绍了CMMB的相关知识,详细研究了复用帧结构和数据广播的XPE包结构,结合广播信道的特点,重点讲述了如何解析数据广播业务数据。
1 CMMB相关技术简介
1.1 复用结构介绍
复用的功能是完成音频、视频、数据、电子业务指南等信息的封装和排列,把多路节目及每一路节目中多路视频、音频数据有效地复合在一起,使其更好地共享信道资源,适应信道传输。复用子帧是复用帧的基本组成单元,承载一个业务的业务数据(音频流、视频流和数据流)或者控制信息表的数据。电子业务指南、用户管理等辅助信息分别封装在不同的复用子帧中,控制信息封装在复用帧0中,CMMB复用协议可以承载多种音视频码流,支持灵活的数据业务。
图1为复用帧的结构,每个广播信道帧由多个复用帧构成,每个复用帧又由多个复用子帧或者控制信息表组成。其中复用子帧包括子帧头、视频段、音频段和数据段,而控制信息表则包括网络信息表(NIT)、持续业务复用配置表(CMCT)、持续业务配置表(CSCT)、短时间业务复用配置表(SMCT)、短时间业务配置表(SSCT)、ESG基本描述表、紧急广播等。
1.2 CMMB数据广播
数据广播,顾名思义就是要把多样的内容按照一定的格式、一定的策略发送到移动多媒体的前端系统中,是一项利用广播信道传输数据流或数据文件的增值业务,CMMB数据推送业务就是CMMB数据广播业务,它是指以点对面的广播方式推送传输文本、图像、音频、视频等多媒体信息数据到用户终端的一种技术方式,基于CMMB数据广播平台的应用非常广泛,如股票咨询、交通导航、气象服务、网站广播等,如图2所示。数据广播XPE包的结构图如图3所示。这里要注意的是,当开始标志为1时有扩展字段,当开始标志为1并且结束标志为0时有数据包总长度字段,当CRC指示为1时有CRC_32字段。
XPE包头有7个比特是保留的,在这里可以将它进行自定义以便传送不同服务类型的数据,其中2个比特用来标识数据的格式,如文本、图片、网页等,另外的5个比特则用来定义服务类型,具体定义方式如表1和表2所示。
2 解析数据广播业务数据的软件实现
解析数据广播业务数据主要就是解析复用帧码流。它的解析过程可分为以下几个模块:复用帧流提取、CRC检测、控制信息解复用、业务信息解复用。首先要对控制信息进行解复用,然后再根据控制信息中的关键信息来解析业务信息。
2.1 控制信息的解复用
解复用控制信息时首先要解析的是复用帧头,在这里可以定义一个结构体来保存相关的信息,同样的为了保存各个表的参数信息以便解复用业务信息时使用,将控制信息中的每个表和紧急广播也都对应地定义一个结构体,其中CMCT和SMCT的构造相同可共用一个结构体,CSCT和SSCT也可共用一个结构体。在结构体中定义好各个表对应的参数,在读取码流时,先保存复用帧头的相关参数信息,然后再保存控制信息表的信息,具体做法是根据表标识号来判断表的类型,确定类型后将码流里对应的参数存入到定义好的结构体参数中。然后对各表进行分析,最终获得频点编号、中心频率、复用帧所占用的时隙号以及子帧与业务ID之间的对应关系等信息,以方便用户接收所选的业务数据。
2.2 业务信息的解复用
业务信息处理模块如图4所示。首先是模块的初始化,这时读线程函数也被开启了,接着就进入了处理数据的循环,先判断业务数据是否处理完毕(这里定义了一个布尔变量来标记),如果处理完则将分类好的音视频数据和其他数据做相应的处理。如果未处理完毕,则读取下一个帧的数据,倘若此时没有数据则阻塞等待,直到有数据到来,接着对这一帧数据进行解复用,得到业务数据流,将数据归类,放在不同的缓冲区。
解析一个帧的数据步骤如下:
第一步:解析复用帧头。首先读取码流中的复用帧帧头,并将相关参数保存到已定义好的结构体中。
第二步:解析复用子帧。由于复用子帧的个数不止一个,所以可以用一个循环来处理,同业务数据处理的总框图类似,设置一个布尔变量来标识复用子帧是否处理完毕,先解析子帧的帧头,提取视频段、音频段和数据段数据,然后判断复用子帧是否处理完毕,如果处理完则跳出循环往下执行,如果没处理完则继续处理,处理完毕后提取出视频段、音频段和数据段数据。
第三步:解析视频段、音频段和数据段。由于采用的是数据广播来传送,因此这里只对数据段进行解析,先根据子帧头中的信息将数据段提取出来,这里数据单元的内容即为XPE包。
第四步:解析XPE包。仍然需要先解读包头信息,另外要注意的是首包包头还额外携带了数据包总长度,业务模式指示等信息,接到首包时要记录下来,然后根据包头信息对业务数据进行组装。
3 结论
经过以上对CMMB复用帧和XPE包结构的剖析,用VC++编写了解析数据广播业务数据的程序。实验输入测试用的是离线MFS流,接收显示了一些测试数据,该软件可以植入应用系统中来接收所需要的数据和图片,灵活方便,另外采用软件编写降低了硬件的成本,而且可扩展性强。