DVB业务信息PSI/SI综述
一、SI信息的构成
1、信息构成
SI信息内容是按照network(网络)→transport strem(传输流)→service(业务)→event(事件)的分层顺序描述,如图1所示。SI数据信息是按照一定的数据结构进行存储的,这样一来才能达到方便、快捷地进行数据检索和提取。SI数据主要有:网络信息、传输流信息、业务信息、业务的事件信息等,并且大量的信息都是通过描述符来传输的,所以可用树状链表来存储数据,构成从网络、传输流、业务、事件的树状结构。机顶盒接收端的解析主要负责这些SI数据的重建。
在数字电视系统中,为了能有效地从众多的数据包中组织起SI信息,而使用了很多的标识。有Network_id(网络标识)、Original_network_id(原始网络标识)、Transport_stream_id(传输流标识)、Service id(业务标识)、eventid_id(事件标识)、Bouquet_id(业务群组标识)。这些标识是作为信息查找定位用的,例如:要在一个TS里找出一个业务信息,就要知道这个业务信息在那个网络里、在哪个TS里和这个业务信息在这个流里的标识,这样一来,通过层层过滤,就能精确地定位描述这个业务信息的位置,并把它们找出来进行数据组织。图1就非常清楚地表明了这种查找思路。
一个网络信息由network_id来定位。
一个TS由network_id、Original_network_id、Transport_stream_id来定位,标明这个流在那个网络播发,它原属那个网络,并给它加上标识。
一个业务由network_id、Original_network_id、Transport_stream_id、service_id来定位,标明这个业务在那个网络播发,它原属那个网络和那个流,并给它加上标识。这体现在SDT表中。
一个事件由network_id、Original_network_id、Transport_stream_id、service_id、event_id来定位,标明这个事件在那个网络播发,它原属那个网络和那个流及那个业务,并给它加上标识。这体现在EIT表中。
据此,根据各个SI表的功能,各表的ID结构如下:
NIT:network_id、Original_network_id、Transport_stream_id 、service_id。
SDT:Original_network_id、Transport_stream_id 、service_id。
EIT:Original_network_id、Transport_stream_id 、service_id、event_id。
BAT:bouquet_id 、Original_network_id 、Transport_stream_id 、service_id。
另外,还有一个PID(包标识),它的作用是给每一个数据包打上一个标记,TS承载有视频数据、音频数据、PSI和SI信息数据、图文电视数据、字幕数据、数据广播数据、交互业务数据、CA系统的控制信息数据等等,除了PSI和SI信息数据和CA系统的控制信息数据外,其他的数据的PID都是通过PMT表给出的,CA系统的控制信息数据的PID是由CAT表给出的,而承载了PSI和SI信息的各种表的PID值是固定分配的。如下表
表 PID值
PAT | 0X0000
CAT | 0X0001
TSDT | 0X0002
NIT、ST | 0X0010
SDT、BAT、ST | 0X0011
EIT、ST | 0X0012
RST、ST | 0X0013
TDT、TOT、ST | 0X0014
DIT | 0X001E
SIT | 0X001F
由于这些表是分配了固定的PID值,所以机顶盒就可以根据这些PID值来辨认出是什么表,并读取表中的描述参数来生成EPG信息和完成各种数据的组织、解码出所需要的节目和信息。
2、表的构成
表是组成SI信息的一种数据结构。在TS中有很多不同节目的数据包,解码器如何确定哪个数据包属于某个节目?其答案就是在TS中的PSI和SI信息里,这些信息精确地指引出获得某节目与该节目数据包的PID之间的关系。
由MPEG-2定义的TS里面,数据包携带了两类信息:一是音、视频等素材的数据,二是PSI表。具有给定PID的数据包的有序排列就形成了TS流。PSI表里的承载的内容主要是TS(本节目流)的描述参数。由MPEG-2定义的PSI主要包含有三个表:PAT、PMT、CAT。每个表都可作为一个或多个TS包的净荷插入TS中传送。
一个TS数据包的净荷为188个字节,当一个PSI/SI表的字节长度大于184字节时,就要对这个表进行分割,形成段(section)来传送。分段机制主要是将一个数据表分割成多个数据段。在PSI/SI表到TS包的转换过程中,段起到了中介的作用。由于一个数据包只有188字节,而段的长度是可变的,EIT表的段限长4096字节,其余PSI/SI表的段限长为1024字节。因此,一个段要分成几部分插入到TS包的净荷中。如图2所示。
PSI/SI表的构成是:一个表由一个或多个子表构成,表用table_id来标识;不同的子表由table_id和table_id_extension来区分(具有相同的table_id和不同的table_id_extension);一个子表由一个或多个段构成(具有相同的table_id和table_id_extension,不同section_number来区分);每个段由多个TS数据包的数据组成。每个段具有一个完整的数据结构,表的重要参数----描述符在段里传送。图3所示是SDT表的结构。
(1024)时,可把子表分割成两个或更多个段, 并通过section_number来区分,如图3-1所示。
不同的信息表在TS中通过PID来区分,具有相同PID的不同表由table_id(table_id是表标识)来区分,属于同一个table_id的不同子表由table_id_extension、版本号(version_number)进行区分,属于同一个子表的不同段由section_number区分。表的扩展标识符有:network_id、oringinal_network_id、boquet_id、tansport_stream_id、service_id等。
l 对于NIT表的子表具有相同的table_id、network_id和version_number。
l 对于BAT表的子表具有相同的table_id、bouquet_id和version_number。
l 对于SDT表的子表具有相同的table_id、oringinal_network_id、tansport_stream _id和version_number。
l 对于EIT表的子表具有相同的table_id、oringinal_network_id、tansport_stream _id、 service_id和version_number。
以EIT表为例。EIT的PID是0X0012,当它的table_id=0X4E时,EIT描述的是在当前TS中的当前/后续(EIT present/following)事件信息;table_id=0X4F时,EIT描述的是在其它TS中的当前/后续(EIT present/following)事件信息。这两个不同的描述形成了EIT的两个表。每个表分为两个段,一个段用来描述当前正在播放的事件,另一个段用来描述即将播放的事件。此时两个段的table_id、service_id、tansport_stream_id是相同的,但section_number不相同,section_number 0x00用来描述当前事件,section_number 0x01描述下一个事件。
⑴ 网络描述表(NIT)的作用
在MPEG2中由于并没有对NIT表进行定义,所以在PSI中NIT表内容是私有的,但在DVB中给NIT表作了明确的定义,所以NIT表是一个全局表,就是一个数字电视系统只对应两个NIT表,分别为当前网络表(table_id=0X40)和其他网络表(table_id=0X041),每个不同的网络视其频点数(1个TS=1个频点)的多少对应一个或多个子表,通过network_id来区分。
NIT表主要是提供有关物理网络的信息,网络信息表传送本网络以及与此有关的其它网络的一些信息。每个网络都有唯一的识别符(network_id)。网络信息表主要携带:网络识别符(Network_ID)、网络名称、传输系统参数(有线传输系统参数包括:频率、调制方式、FEC外码、符号率、FEC内码)、节目业务类型及Service_ID等信息。机顶盒只要调谐到携带NIT表的传送流中,即可提取其它网络的参数,一般解码器便可根据提取出来的信息,自动搜索频道。
这里说一说network_id和oringinal_network_id的分别。每个运营商都需要注册唯一的network_id,假设中央电视台的network_id=0X01,广州电视台的network_id=0X02 。当中央电视台直接播发自己的节目时,network_id=oringinal_network_id,如果由广州电视台转播中央电视台的节目时,那么network_id=0X02,oringinal_network_id=0X01。也就是说oringinal_network_id等于节目原发运营商的network_id。
⑵ 业务描述表(SDT)的作用
SDT表是由DVB定义的,是一个SI表,因此它是一个全局表,一个数字电视系统对应两个SDT表,分别为当前流(actual transport)表(table_id=0X42)和其他流(other transport)表(table_id=0X46)。每一个TS对应一个子表(也有对应多个子表的,如同一个TS但业务来自不同的original_network),通过tansport_stream_id和original_network_id来区分。图4就是一个SDT表的构成图。从图可看出,这个SDT表由两个表组成,一个是当前流表,只有一个子表;另一个是其他流表,由三个子表组成,每个流对应一个子表。
SDT表用于描述系统中业务的名称、业务提供者、是否有相应的事件描述表等方面的信息;业务描述表可以描述当前传输流,也可以描述其他传输流,这由表的Table_ID来区分。业务描述表提供了如下的信息:属于哪一个节目业务群;节目业务的类型,如PAL、NTSC、SECAM、调频广播、图文电视、准视频点播等;节目业务的提供者;可以接收该业务的国家和不可以接收该业务的国家;指向特定的链接信息;实现准视频点播的指导信息;实现多画面的控制信息;指示使用的加密系统;给出实现交互式回传信道的电话号码;提供多语种的节目业务名称和广播者以及私有数据。但最常用的是业务列表,即对业务名称的描述,如中央1台、广州新闻台、珠江台等等。
⑶ 事件信息表(EIT)的作用
EIT表是由DVB定义的,是一个SI表,因此它是一个全局表,一个数字电视系统每一个业务对应两种EIT表。一是EIT present/following表(描述当前事件/后续事件),一个业务对应着一个EIT present/following表,EIT present/following表分为当前流表(table_id=0X4E)和其他流表(table_id=0X4F),每一个流通常对应6个(有6个业务)EIT present/following子表,每个子表由两个段组成,分别是EIT present段和EIT following段,section_number= 0x00的段描述当前播放的事件, section_number= 0x01段描述后续播放事件,图5所示。其他流表结构与当前流表相同;二是EIT schedule(时间表)表,一个业务最多可对应16个EIT schedule表,那么每个流通常最多可对应6(业务数)×16=96个子表,每个子表由256个段组成(由于分段号是8个比特,所以最多只能有256个分段),。
对于EITschedule表,它是用作描述一个业务在一段时间(可以是一天、一周,最大可以是64天,根据冗余带宽来进行设定)内所播放的节目安排,节目的播出安排是以时间和节目简介作为描述的。时间及内容是描述一个事件的最基本元素,例如:把一个业务所播放的每一个节目都看成是一个事件,那么每一个节目开始播放的时间和播放时间的长度及事件的内容就是该事件的基本元素,EIT schedule子表就是用这一基本元素来描述每一个事件并产生某一段时间内要发生的所有事件的列表,因此EIT schedule子表的信息量很大(EIT表的段限长4096字节),由256