31
EIT表是SI表中结构最复杂的表,图8是它的结构图。 机顶盒通常都有一个“节目指南”的按钮,按动它就可以读取EIT schedule自表里的信息,显示某一个业务在某段时间内的所有事件列表。
⑷ 业务组关联表(BAT)的作用
BAT表是由DVB定义的,是一个SI表,因此它是一个全局表,一个数字电视系统只
对应一个BAT表,其table_id=0X4A。一个节目类别对应一个段。为了让受众能更方便地在众多的节目中寻找出自己喜欢的节目,往往需要提供一种把众多的节目频道进行分类的方法(一个类相当一个节目组)。例如把电影频道归为“家庭影院”的类别,把电视连续剧归为“电视剧场”的类别等等,BAT表就提供了这一功能,每一个类别都用一个bouquet_id 来标识。它包括了节目业务名称(类别)及节目组所包含的节目清单(节目列表)。BAT表在SI信息中属于可选表。 BAT表还支持一个特别的描述符,称为国家获得性描述符。此描述符的意义是:运营商可能出于运营的需要,把一些业务提供给特定(国家)的人群收看,而不希望给其他(其他国家)的人群收看,那么,就可以利用国家获得性这一描述符,在其他人群收看节目时不显示这些业务。这个描述符同样支持SDT表,不过在SDT 表中指的是某一个业务,而不是一个业务组。所以,BAT表概括地说是提供给不同观众不同组合节目的一种方法。
⑸ 其他表
对于PAT、PMT和CAT表,都是由MPEG-2定义的,是PSI里面的表,所以这三个表
都不是全局表,它们存在在每一个TS中。PSI信息使用这3个表来定义码流的结构,一个TS对应一个PAT表;一个CA系统和一个TS对应一个CAT表,CAT表的PID值总是1,每个CAT都只给出其所在流的EMM(包括携带组密钥的EMM和携带产品密钥的EMM)
32
包的PID等信息;一个业务(节目频道)对应一个PMT表,一个TS对应多个PMT(视流中所携带的业务数而定)且只对应本流的业务。 PAT的PID是0,它是PSI信息的根,要查找信息时首先必须从PAT开始,表中列出了传送码流中所有节目所对应的PMT的PID,可根据这些PID找到相应的PMT包。在PMT表中又可以找到与节目有关的所有基本码流,如视频、音频、ECM和数据等有关信息的PID,然后把这些标有这一PID的数据包组织起来通过解码,把节目或数据还原出来。 以上PSI的几个表和NIT表是解码所必需的表,而SDT和EIT是构成业务信息所必需的表。
SI还有其他的表,如:TDT表,称为时间日期表,它给出了当前的时间和日期的信息,有时也可作为机顶盒解码时钟的更新;RST表,称为运行状态表,属于可选表,它用于快速更新某节目或某些节目的运行参数,RST只有在状态或节目变更时才发送一次;ST表,称为填充表,属于可选表,它用来替代不传送的表。
⑹ 描述符
描述符是用来携带节目要素和TS流等的各种参数的信息结构、语法与语义,描述符是
PSI/SI表的构成主体,PSI/SI表的主要意义就是传送这些描述符,为机顶盒提供相关业务描述与运行参数,可以认为SI表是舟而描述符是舟上的货物。描述符的通用结构都是以descriptor_tag (描述符标记)字段与紧跟其后的descriptor_length(描述符长度)字段开始。每个SI表通常都使用特定的描述符,但也不限制这些描述符在其他表中使用。
描述符是随使用它的SI表一起发送的。
描述符以及在它们的PSI/SI表中的位置见下表:
33
在PSI/SI表里,我们通常都看到一个循环语句,如:
for(I=0;I 这个循环语句是用来引导机顶盒读取描述参数用的,以SDT子表为例,由于一个SDT子表里面包含了对多个业务的描述,每个业务的都使用了 Multilingual_service_name_descriptor和service_descriptor描述符,也就是说一个SDT子表里同样的描述符被使用了多次(也可以理解为,一个描述符里存有多个描述参数),通过循环语句来对描述符进行重复有序的读取,来提取里面的描述参数,直到读完为止。 网络信息表(NIT)的段数据结构: Netwok_information_section(){ 网络信息段 Table_id 8bit 表标识 Section_syntax_indicator 1bit 段序列指示(标记位),此值=1时,规定从section第43位开始的5位是版本号 Reserved_future_use 1bit 保留将来使用字段 Reserved 2bit 保留字段 Section_length 12bit 段长度 Network_id 16bit 网络标识 Reserved 2bit 保留字段 Version_number 5bit 表版本号,作为表更新机制 Current_next_indicator 1bit 当前/下一个有效指示位(标记位),表示当前表是否有效,如果Current_next_indicator为1,则当前表有效;0表示当前表无效. Section_number 8bit 当前段段号 Last_section_number 8bit 最后段号(反映了这个子表由多少个段组成,如其值为0X01那么表示这个子表由两个段组成) Reserved_future_use 4bit 保留将来使用字段 Network_description_length 12bit 网络描述符长度 For(I=0;I Descriptor() 读取网络描述参数(网络名称描述符、连接描述符) } reserved_future_use 4bit 保留将来使用字段 transport_stream_loop_length 12bit 传输流循环长度 for(I=0;I transport_descriptors_length 12bit 传输描述符长度 for(j=0;j } CRC_32 32bit 循环校验码 } 34 下图是一个真实的NIT表,此表由两个段组成 35