PSI/SI 深入学习
BASIC KNOWLEDGE LEARNING OF PSI/SI
INFORMATION OF SI
"SI是对多个TS流的描述,它包含了PSI"
PSI只提供了单个TS流的信息,使接收机能够对单个TS流中的不同节目进行解码;但是,它不能提供多个TS流的相关业务,也不能提供节目的类型、节目名称、开始时间、节目简介等信息。因此,DVB对PSI进行了扩展,提供了其他不同类型的表,形成了SI。
SI定义了PAT、PMT和CAT之外的9张表,通过组织SI提供的这些数据,可以生成类似节目报表的形式,方便用户查看多种信息,这就是所谓的电子节目指南(EPG)。
下面给出了SI定义的十张表(NIT的由SI规定的):
NIT | Network Information Table | 网络信息表 | 描述整个网络,如多少TS流、频点和调制方式等信息 |
SDT | Service Description Table | 业务描述表 | 包含业务数据(如业务名称、起始时间、持续时间等) |
BAT | Bouquet Association Table | 业务群关联表 | 给出业务群的名称及其业务列表等信息 |
EIT | Event Information Table | 事件信息表 | 包含事件或节目相关数据,是生成EPG的主要表 |
RST | Running Status Table | 运行状态表 | 给出事件的状态(运行/非运行) |
TDT | Time&Date Table | 时间和日期表 | 给出当前事件和日期相关信息,更新频繁 |
TOT | Time Offset Table | 时间偏移表 | 给出了当前时间日期与本地时间偏移的信息 |
ST | Stuffing Table | 填充表 | 用于使现有的段无效,如在一个传输系统的边界 |
SIT |
| 选择信息表 | 仅用于码流片段中,如记录的一段码流,包含描述该码流片段业务信息段的地方 |
DIT |
| 间断信息表 | 仅用于码流片段,如记录的一段码流中,它将插入到码流片段业务信息间断的地方 |
SI定义的表,并不需要全部传输,其中,NIT、SDT、EIT和TDT是必须传输的;而又以NIT、SDT和EIT最为重要,利用这三个表可以构成功能不同的EPG,如提供节目附加信息、节目分类、节目预定和家长分级控制等。
NIT解析
PARSINGOF NIT
"NIT描述了数字电视网络中与网络相关的信息"
NIT描述了数字电视网络中与网络相关的信息,但这个表本身的信息有限,更多的信息是依靠插入表中的描述符来提供的。NIT常用的描述符有:网络名称描述符(network_name_descriptor)、有线传送系统(cable_delivery_system_descriptor)、业务列表描述符(service_list_descriptor)和链接描述符(linkage_descriptor)。下图是实际的一个例子中的两种描述符。
NIT的表结构分析
ANALYZEOFTHE STRUCTUREOFNIT
网络信息表(NIT)传递了与通过一个给定的网络传输的复用流/TS流的物理结构相关的信息,以及与网络自身特性相关的信息。
网络信息段
Syntax (句法结构) No. of bits(所占位数) Identifier(识别符) Note(注释)
network_information_section(){
table_id 8 uimsbf
Section_syntax_indicator 1 bslbf 通常设为“1”
Reserved_future_use 1 bslbf
Reserved 2 bslbf
Section_length 12 uimsbf 见注释
Network_id 16 uimsbf 见注释
Reserved 2 bslbf
Version_number 5 uimsbf 见注释
Current_next_indicator 1 bslbf 见注释
Section_number 8 uimsbf 见注释
last_section_number 8 uimsbf 见注释
Reserved_future_use 4 bslbf
Network_descriptors_length 12 uimsbf
for(i=0;i<N;i++){
descriptor() //First descriptor loop
}
reserved_future_use 4 bslbf
transport_stream_loop_length 12 uimsbf
for(i=0;i<N;i++){
transport_stream_id 16 uimsbf 见注释
original_network_id 16 uimsbf 见注释
reserved_future_use 4 bslbf
transport_descriptors_length 12 uimsbf
for(j=0;j<N;j++){
descriptor() //Second descriptor loop
}
}
CRC_32 32 rpchof 见注释
}
在SI标准中规定:original_network_id和transport_stream_id两个标识符相结合唯一确定了网络中的TS流。各网络被分配独立的network_id值作为网络的唯一识别码。当NIT表在生成TS流的网络上传输时,network_id和original_network_id将取同一值。
- NIT表被切分为网络信息段(network_information_section)
- 任何NIT的段都必须由PID为0x0010的TS包传输
- 现行网络的NIT表任何段的table_id值应为0x40,且具有相同的table_id_extension即(network_id);
- 现行网络以外的其他网络NIT表的段table_id值应为0x41
注意到这里出现了两个循环,分别成为第一层循环和第二层循环;每层循环都插入了一个描述符,也就是一共插入了两个描述符。这两个描述符的特点如下:
第一层描述符 | 作用域是针对整个网络的,如插入网络名称描述符、链接描述符等 |
第二层描述符 | 作用域是第一层循环所代表的一个TS流,如插入有线传输系统描述符 |
上图提供的即是一个真实的NIT表,红色框内有两个描述符,分别是业务列表描述符service_list_descriptor和有线传输系统描述符cable_delivery_system_descriptor;它们都位于第二层循环。
NIT的业务列表描述符结构分析
ANALYZEOFTHE STRUCTUREOFSERVICE_LIST_DESCRIPTORINNIT
业务列表描述符通过业务标识符和业务类型提供业务服务。其目的在于:告诉接收机每一个TS流中存在多少个业务以及每一个业务的类型。其结构如下:
业务列表描述符
Syntax(句法结构) No. of bits(所占位数)Identifier(识别符)
service_list_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
for(i=0;i<N;i++){
service_id 16 uimsbf
service_type 8 uimsbf
}
}
service_id(业务标识符):唯一标识TS中的一个业务,它与program_map_section中的program_number(参看PMT表结构)相同。但当业务类型为0x04时(即NVOD参考业务,service_id没有对应的program_number)。
service_type(业务类型):指示业务的类型。如0x01为数字电视业务,0x02为数字音频广播业务,0x04为NVOD参考业务,0x05为NVOD时移业务。
HINT:下表给出了业务类型编码方法
service_type | 描述 |
0x00 | 预留使用 |
0x01 | 数字电视业务 |
0x02 | 数字音频广播业务 |
0x03 | 图文电视业务 |
0x04 | NVOD参考业务 |
0x05 | NVOD时移业务 |
0x06 | 马赛克业务 |
0x07 | PAL制编码信号 |
0x08 | SECAM制编码信号 |
0x09 | D/D2-MAC |
0x0A | 调频广播 |
0x0B | NTSC制信号 |
0x0C | 数据广播业务 |
0x0D | 公共接口使用预留 |
0x0E | RCS映射(见EN 301 790) |
0x0F | RCS FLS(见EN 301 790) |
0x10 | DVB MHP业务 |
0x11~0x7F | 预留使用 |
0x80~0xFE | 用户定义 |
0xFF | 预留使用 |
上图所示只是其中一个section的业务列表描述符,如果将所有的section全解析,那么此网络中所有TS流包含的所有service_id和service_type都可以获得。这样,用户可以据此了解整个网络业务的构成,并以此为基础对业务进行分类、整合。
NIT的有线传输系统描述符结构分析
ANALYZEOFTHE STRUCTUREOFCABLE_DELIVERY_SYSTEM_DESCRIPTORINNIT
有线传输系统描述符(Cable_Delivery_System_descriptor)是NIT业务中重要的描述符,也是基本运营所必需的描述符。它主要描述了每一个TS流的物理参数(频率、调制方式、符码率等),使接收机能正确锁频、得到数据。其结构如下:
有线传输系统描述符
Syntax(句法结构) No. of bits(所占位数)Identifier(识别符)
cable_delivery_system_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
frequency 32 bslbf
reserved_future_use 12 bslbf
FEC_outer 4 bslbf 前向纠错外码
modulation 8 bslbf
symbol_rate 28 bslbf
FEC_inner 4 bslbf 前向纠错内码
}
Frequency(频率):32位,以8个4位BCD码给出频率。其单位是MHz,小数点位于第四个BCD码之后,如0312.0000MHz。
Modulation(调制方式):指出有线传输系统的调制方式。其定义如下表:
调制方式(十六进制) | 描述 |
0x00 | 未定义 |
0x01 | 16 QAM |
0x02 | 32 QAM |
0x03 | 64 QAM |
0x04 | 128 QAM |
0x05 | 256 QAM |
0x06~0xFF | 预留使用 |
symbol_rate(符码率):28位,以7个4位BCD码表示符码率。其单位是MSPS(兆符号每秒),小数点位于第三个BCD码后,如027.4500 MSPS
上图所示为一个真实TS流里的一个有线传输系统描述符。可以看到其频率为331.0000MHz,符码率为6.8750MSym/s,调制方式为64 QAM。
NIT的网络名称描述符结构分析
ANALYZEOFTHE STRUCTUREOFNETWORK_NAME_DESCRIPTORINNIT
网络名称描述符的功能比较简单,它以字符串的形式将网络的名称告诉接收机。下面是其描述符结构列表:
网络名称描述符
Syntax(句法结构) No. of bits(所占位数)Identifier(识别符)
network_name_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
for(i=0;i<N;i++){
char 8 uimsbf
}
}
char(字符):8位字段,一个字符串,给出NIT表指定的传送系统的名称。
NIT的链接描述符结构分析
ANALYZEOFTHE STRUCTUREOFLINKAGE_DESCRIPTORINNIT
链接描述符
Syntax(句法结构) No. of bits(所占位数)Identifier(识别符)
linkage_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
transport_stream_id 16 uimsbf
original_network_id 16 uimsbf
service_id 16 uimsbf
linkage_type 8 uimsbf
for(i=0;i<N;i++){
private_data_byte 8 bslbf
}
}
如果用户要求得到SI系统描述的特定实体的进一步信息,则可以使用链接描述符。链接描述符包含的信息给出了该实体的位置。如:可以在一个NIT中使用一个链接描述符,给出网络中可存放业务附加信息的位置;或者在BAT表中的链接描述符可链接到业务群的相关信息等。
使用链接描述符,也可以提供一种业务,以替换CA系统的功能。如果CA系统不能处理相应功能的时候,接收机就可以用这个业务来取代CA。
使用链接描述符,还可以以一种备用业务,用以替换主业务。若主业务的运行状态被置为“not_running”,那么,接收机可以自动选择被链接描述符指引的备用业务,以取代该业务。
使用链接描述符,还可以向移动接收机提供漫游功能。若现行业务其service_id下无法使用,IRD可以自动选择该功能。hand-over_type指明link_descriptor是否链接到不同国家的同一业务,或者链接到本地变更业务或关联业务。
总之,链接描述符为运营商提供了一种业务扩充功能,使得运营商可以更加灵活地组合各种业务。
NIT的软件下载链接描述符结构分析
ANALYZEOFTHE STRUCTUREOFDOWNLOAD_LINKAGE_DESCRIPTORINNIT
软件下载描述符用于运营商在网络内进行多于一个机顶盒的软件下载更新标识,在网络信息表NIT的第一个循环内,并且可能多次出现。针对同一组制造商号(manufacturer_id)、硬件类型(hw_model)、硬件版本(hw_version)和软件类型(sw_model),可能有不只一组的不同软件版本(sw_version)和开始时间(start_time)参数,并可能出现在同一个或多个链接描述符(linkage_descriptor)的各个循环内。
BAT解析
PARSINGOF BAT
"BAT将网络中的所有业务分成了多个业务群,以此界定用户"
BAT即业务群关联表(BouquetAssociation Table),它将网络中所有的业务分成了多个业务群,以此界定用户。例如,将网络中所有业务分为两个业务群,一个是境内节目业务群,另一个是境外节目业务群。这样,国内的运营商就可以利用这样划分的业务群,充分利用节目资源,在不违反现有广电总局规定的前提下,同时分别满足境内用户和境外用户。
BAT本身可以跨网络存在,但在国内运营体系来看几乎没有得到真正使用。国内的运营使用中,BAT还可以存在分级运营的运营体系中,用于区分不同的地域用户。
BAT被切分为业务群关联段,所有的业务群关联段都在TS中传输,其PID为0x0011。所有的业务群关联段的table_id都取0x4A。
HINT:SDT的TS包PID也为0x0011,其table_id为0x42或0x46。
BAT的表结构分析
ANALYZEOFTHE STRUCTUREOFBAT
下面给出了BAT表的段结构:
业务群关联段
Syntax(句法结构) No. ofbits(所占位数) Identifier(识别符) Note(注释)
bouquet_association_section(){
table_id 8 uimsbf
Section_syntax_indicator 1 bslbf 通常设为“1”
Reserved_future_use 1 bslbf
Reserved 2 bslbf
Section_length 12 uimsbf 见注释
bouquet_id 16 uimsbf 见注释
Reserved 2 bslbf
Version_number 5 uimsbf 见注释
Current_next_indicator 1 bslbf 见注释
Section_number 8 uimsbf 见注释
last_section_number 8 uimsbf 见注释
Reserved_future_use 4 bslbf
bouquet_descriptors_length 12 uimsbf
for(i=0;i<N;i++){
descriptor()
}
reserved_future_use 4 bslbf
transport_stream_loop_length 12 uimsbf
for(i=0;i<N;i++){
transport_stream_id 16 uimsbf 见注释
original_network_id 16 uimsbf 见注释
reserved_future_use 4 bslbf
transport_descriptors_length 12 uimsbf
for(j=0;j<N;j++){
descriptor()
}
}
CRC_32 32 rpchof 见注释
}
注意到
BAT
的结构和
NIT
类似,其作用和描述符的使用也与
NIT
大致雷同。其中,可以插入传输系统描述符、业务列表描述符等。
这些表和
NIT
中的表已介绍,这里不再赘述。
BAT的业务群名称描述符结构分析
ANALYZEOFTHE STRUCTUREOFBOUQUET_NAME_DESCRIPTORINBAT
下面给出的是业务群名称描述符,它以文本方式给出了业务群的名称:
业务群名称描述符
Syntax(句法结构) No. of bits(所占位数)Identifier(识别符)
bouquet_name_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
for(i=0;i<N;i++){
char 8 uimsbf
}
}
char(字符):8位字段,用于描述BAT子表叙述的节目业务群名称
业务名称描述符和网络名称描述符类型,只是作为业务群的一个代号,其实际意义只存在于用户界面上,可以给用户一个良好的操作体验。