CMMB解复用器的设计和实现
2010-03-14徐桂忠
刘 波,徐桂忠,张 远
(1.国家广电总局 无线电台管理局,北京 100866;2.中国传媒大学 信息工程学院,北京 100024)
1 引言
移动多媒体广播是一项新兴的新媒体业务,它通过无线广播电视覆盖网,向各种便携终端提供数字广播电视节目和信息服务。移动多媒体广播采用“点到多点”广播技术,对终端接收和网络传输都有较高要求。2006年10月,国家广电总局陆续颁布了中国移动多媒体广播(CMMB)行业标准[1-3]。CMMB系统利用S波段和U波段实现“天地”一体覆盖,利用地面增补转发器转发卫星信号补点覆盖卫星信号盲区,利用无线移动通信网络构建回传通道,从而组成单向广播和双向交互相结合的移动多媒体广播网络。CMMB标准规定了在广播业务频率范围内,移动多媒体广播系统广播信道传输的帧结构、信道编码调制方法、复用、电子节目指南、数据广播和条件接收等。其中复用属于CMMB系统的数据链路层协议,处于移动多媒体广播系统的前端。复用的主要作用是在发送端完成视频、音频、数据和业务指南等多路业务数据的封装,使之完全匹配广播信道传输技术的时隙结构,从而能够在移动多媒体广播信道上传送[4-5]。
2 CMMB复用结构
在CMMB复用系统中,复用器对码流的复用分步进行。首先对电视广播、声音广播、紧急广播、电子业务指南、数据广播、控制信息表等输入的业务数据进行复用,形成匹配信道时隙结构的复用帧流 (MFS),然后再将MFS打包成固定长度(188 byte)用于传输的打包复用流(PMS)。
2.1 复用帧流(M FS)结构
CMMB复用帧流的单元包括复用帧、复用子帧、视频段、音频段和数据段,如图1所示。以下介绍每个组成部分的结构。
图1 复用层次结构
2.1.1 复用帧
复用帧是封装了业务或控制信息的数据帧,每个复用帧由MF_ID唯一标识,不同标识的复用帧使用不同的物理层逻辑信道来发送。物理层逻辑信道分为控制逻辑信道(CLCH)和业务逻辑信道(SLCH)。控制逻辑信道只有一个,占用系统的第0时隙发送,用于承载广播系统控制信息。业务逻辑信道由系统配置,每个物理层带宽内业务逻辑信道的数目可以为1~39个。相应地,CMMB广播信道由多个广播信道帧组成,每个广播信道帧中最多可以有40个复用帧。根据MF_ID取值的不同可以将复用帧分成2种:一种用于承载控制信息,称为控制帧(MF_ID=0),使用控制逻辑信道传送;另一种用于承载业务数据,称为业务帧(MF_ID=1~39),使用业务逻辑信道传送。复用帧由复用帧头、复用帧净荷和填充3部分组成。其中复用帧头主要用来描述CMMB系统中各控制信息表的更新状态和所在复用帧中各子帧的参数信息,复用帧净荷部分由一个或多个子帧组成(最多15个),填充部分用0xFF填充。
控制帧的净荷为各类控制信息表,包括网络信息表(NIT)、复用配置表(MCT)、业务配置表(SCT)、电子业务指南(ESG)和紧急广播。其中NIT描述了相应的网络配置,包括网络号、网络名称、频点编号、中心频率等;MCT描述了复用帧的配置信息,包括复用帧占用的时隙数及占用的时隙号,子帧与业务ID之间的对应关系,复用帧的信道处理方式等;SCT描述了业务与频点编号之间的对应关系。每个控制信息表单独存放在一个复用子帧中,通过表标识号加以区分。业务帧是多个业务的集合,其净荷为一个或多个复用子帧,同一个业务的音频基本流、视频基本流和数据流封装在同一复用子帧中。
2.1.2 复用子帧
复用子帧是复用帧的基本组成单元,承载一个控制信息表或一个业务的数据。复用子帧没有专用的标识进行区别,但是每个业务都具有自己唯一的标识,因此CMMB复用协议中定义了复用配置表,给出业务与复用子帧之间的对应关系,这样用户终端可以通过业务标识找到所对应的复用子帧,从而获得业务数据。
业务帧中的复用子帧由子帧头、视频段、音频段和数据段组成,如图2所示。
图2 复用子帧结构图
视频段、音频段和数据段是组成复用子帧的基本单元。视频段用于承载业务的视频数据,它由视频段头和多个视频单元构成,如图3所示。视频段头描述了视频段头长度和各视频单元的基本参数,视频单元的参数包括单元的长度、所承载的图像帧类型、视频流的编号、图像帧结束标志和相对播放时间等。视频单元承载业务的图像帧数据,一个图像帧可分开封装在一个或多个视频单元。每个视频流包含多个图像帧,为了能正常显示或解码,要求第1帧必须不依赖于其他图像帧而能独立地进行解码显示。
图3 视频段结构
音频段用于承载业务的音频数据,它由音频段头和多个音频单元组成,如图4所示。音频段头描述了音频段头长度和各音频单元的基本参数,音频单元参数包括音频单元长度、音频流编号及相对播放时间,音频单元用于承载业务声音数据,声音数据可以由多个音频流组成。
图4 音频段结构
数据段用于承载业务指南、紧急广播等数据,由数据段头和数据单元组成。数据段头描述了数据单元的基本参数,数据单元用于承载数据的有效净荷。
在对视音频和数据段进行复用封装的过程中,根据容错能力的不同,将复用封装方式分为2种:模式1和模式2。当使用模式1时,对输入的音频流/视频流进行解析得到ES流,并将具有相同时间戳的ES流封装在同一个音视频单元中;对输入的数据流,直接将有效数据净荷按类型封装在数据单元中。模式2提供更强大的容错机制。当使用模式2时,将每个单元分为一个或多个复用块,每个复用块由复用块头及复用块净荷构成,结构如图5所示。复用块头包含单元的起始标记、净荷的类型及长度,复用块净荷承载的是有效数据载荷。在复用子帧头中有一个保留位作为封装模式指示,指出该子帧所采用的封装模式,同一个复用子帧内的复用封装,必须采用相同模式封装。
图5 复用块结构
2.2 打包复用流(PMS)结构
各种业务数据经封装成复用帧流后,最后打包成PMS。PMS包为固定长度188 byte,包括16 byte包头、N byte包净荷、(172-N)byte填充。包头中定义了包的PID、净荷类型、净荷长度、频点编号、包序号等;包净荷根据包头中净荷类型的取值不同可分为时间日期 (TOD)消息(取值为 0x1111)、复用帧描述消息(取值为 0x3333)、复用帧数据(取值为0x5555)3种。
3 解复用器的软件设计与实现
复用器输出的PMS流经信道编码、调制发送以后,经广播信道传送到用户终端,在用户终端进行解调、解码得到PMS包。PMS包只是复用帧流传输的载体,要对多业务组合的码流进行解复用,还必须从PMS包抽取出复用帧数据,然后组合成复用帧流,进而进行解复用。以下详细介绍解复用器的流程。
3.1 总体结构
复用码流的解析过程可分为以下几个模块:复用帧流抽取、复用帧头分析、CRC检测、控制帧分析、业务帧分析、视频段/音频段/数据段分析,解复用实现的流程如图6所示。首先打开PMS包流,将其读入缓存,寻找包同步字节0x47,根据PMS包净荷的类型,抽取出复用帧数据组合成复用帧流,接着检测包流是否结束,如果没有结束继续检测包同步字节,继续上述包流分析过程;然后在复用帧流中寻找复用帧的起始码,检测复用帧头,分析复用帧;最后检测码流是否结束,如果没有结束就继续检测复用帧起始码,进行上述复用帧流分析过程,直到整个码流分析结束。
图6 解复用器的解析流程
3.2 复用帧解析
根据复用帧部分语法结构,该模块主要完成复用帧头的分析、各控制信息表的分析、业务数据的抽取。当检测到复用帧起始码(0x00000001)后,用CRC纠错机制检测复用帧头在传输过程中是否发生错误。如果检测无误,则按图7的流程分析复用帧,当MF_ID=0时,该帧为控制帧,此时程序转入分析控制帧模块;如果MF_ID≠0,该帧为业务帧,此时程序转入分析业务帧模块。
图7 复用帧解析流程
1)控制帧解析。控制帧是MF_ID=0时的复用帧,它包括网络信息表、复用配置表、业务配置表等各个配置表,每个控制信息表对应一个复用子帧,根据GY/T 220.2-2006复用标准对控制表比特位信息的规定,对各表进行分析。最终从网络信息表中抽取出频点编号、中心频率、网络名称,从复用配置表中抽取出复用帧占用的时隙数、复用帧所占用的时隙号以及子帧与业务ID之间的对应关系,从业务配置表中抽取出各个业务与频点之间的对应关系等所需的控制信息,在用户终端得到这些信息以后,可以很方便的通过硬件管理接收所选业务的数据。
2)业务帧解析。业务帧是各种业务复合数据流的载体,它分为多个子帧,每个子帧对应一个业务。业务帧解析的目的就是将每个业务的视音频数据从复合数据流中分离出来。在业务帧的解析过程中,首先根据业务配置表得到业务与子帧的对应关系,找到每个业务所对应的子帧,进而分析复用子帧,从码流中抽取出业务的视频、音频数据。在本模块设计中,首先根据业务配置表找到业务数据所在的子帧,然后根据第2节所述的语法结构分析复用子帧头,得到起始播放时间、封装模式、视频段/音频段/数据段的长度以及扩展区参数。如果视频段标记为1,则转入视频段处理模块,抽取该子帧中的视频数据;如果音频段标记为1,则转入音频段处理模块,抽取该子帧中的音频数据;如果数据段标记为1,则转入数据段处理模块,抽取该子帧中数据段的数据。在复用帧解析部分重复调用此模块,完成所有业务的解析。
3.3 视频段解析
在复用子帧头中,用3个比特位来标记视频算法类型,指出视频段数据所采用的编码方式。目前CMMB视频编码采用H.264标准,因此需要根据H.264视频码流的封装形式设计相应解封装的方法。
1)H.264视频流的封装过程。H.264视频流的复用封装,要求输入的码流符合IETF RFC3984,对应的2种封装模式如图8和图9所示。
图8 H.264视频流封装模式1
图9 H.264视频流封装模式2
按照模式1封装视频流的过程如下:首先从输入的视频RTP包中解析出H.264的NAL单元;然后在每个NAL的前面插入3 byte的起始码(0x000001)后封装在视频单元中;最后使每个视频单元包含具有相同时间戳的一个或多个完整的NAL单元。按照模式2封装视频流的过程如下:从接收到的视频RTP包中取出RTP包净荷直接映射在复用块的净荷中,复用块的净荷与RTP包净荷存在一一对应的关系。
2)H.264视频流解析过程。根据视频封装的过程,可以设计相应视频解析的程序流程,如图10所示。首先分析视频段头,得到视频段头长度及各视频单元的参数,然后根据子帧头中对封装模式的标识,决定采用哪种方式来抽取视频数据。如果是模式1,则可直接按照视频单元的长度将数据读入缓存或写入文件即可;若采用模式2,则先寻找复用块的起始码0x55分析复用块头,如果复用块承载的是视频数据,就抽取出来写入缓存或文件。
图10 视频单元解析流程
3.4 音频段解析
在复用子帧头中同样存在3个比特位标识音频算法类型。音频段数据可采用的3种算法是DRA,HE-AAC和AAC。音频段数据也有2种封装模式,即模式1和模式2。在模式1中,对于AAC音频流,首先从RTP包中提取出IETF RFC3016格式音频复用元素,然后再将音频复用元素封装在音频单元中;对于DRA音频流,则直接将RTP包净荷封装在音频单元中。在模式2中,不管是AAC还是DRA都是将RTP包的净荷直接映射到复用块的净荷中,形成一一对应的关系。
音频解析的流程如图11所示。首先分析音频段头,得到音频段头长度及各音频单元的参数,然后根据子帧头中对封装模式的标识,决定采用哪种方式来抽取音频数据。
图11 视频单元解析流程
若采用模式1,则直接按照音频单元的长度将数据读入缓存或写入文件;若采用模式2,则先寻找复用块的起始码0x55分析复用块头,如果复用块承载的是音频数据,就抽取出来写入缓存或文件。
4 小结
结合CMMB的复用标准,论述了CMMB复用码流结构及封装模式,在此基础上设计并实现了软件解复用器。该解复用器可抽取出码流中的控制信息并能正确解码所解析出的视音频数据。该软件解复用器已包装成动态库的形式,可以嵌入到其他应用程序中使用。
[1]GY/T 220.1-2006,移动多媒体广播 第1部分:广播信道帧结构、信道编码和调制[S].2006.
[2]GY/T 220.2-2006,移动多媒体广播 第2部分:复用[S].2006.
[3]GY/Z 234-2008,移动多媒体广播复用实施指南[S].2008.
[4]解伟,李嘉.移动多媒体广播(CMMB)——复用[J].广播电视信息,2008(8):29-33.
[5]解伟.移动多媒体广播(CMMB)技术与发展[J].电视技术,2008,32(4):4-7.