SI信息解析

/*学习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

Select Information Table

选择信息表

仅用于码流片段中,如记录的一段码流,包含描述该码流片段业务信息段的地方

DIT

Disconnect Information Table

间断信息表

仅用于码流片段,如记录的一段码流中,它将插入到码流片段业务信息间断的地方

 

SI定义的表,并不需要全部传输,其中,NIT、SDT、EIT和TDT是必须传输的;而又以NIT、SDT和EIT最为重要,利用这三个表可以构成功能不同的EPG,如提供节目附加信息、节目分类、节目预定和家长分级控制等。

 

 

一:BAT解析

PARSING OF BAT

"BAT将网络中的所有业务分成了多个业务群,以此界定用户"

  BAT即业务群关联表(BouquetAssociation Table),它将网络中所有的业务分成了多个业务群,以此界定用户。例如,将网络中所有业务分为两个业务群,一个是境内节目业务群,另一个是境外节目业务群。这样,国内的运营商就可以利用这样划分的业务群,充分利用节目资源,在不违反现有广电总局规定的前提下,同时分别满足境内用户和境外用户。

BAT本身可以跨网络存在,但在国内运营体系来看几乎没有得到真正使用。国内的运营使用中,BAT还可以存在分级运营的运营体系中,用于区分不同的地域用户。

  BAT被切分为业务群关联段,所有的业务群关联段都在TS中传输,其PID为0x0011。所有的业务群关联段的table_id都取0x4A。

提示:SDT的TS包PID也为0x0011,其table_id为0x42或0x46。

 

 

BAT的表结构分析

ANALYZE OF THE STRUCTURE OF BAT

 

下面给出了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的业务群名称描述符结构分析

ANALYZE OF THE STRUCTURE OF BOUQUET_NAME_DESCRIPTOR IN BAT

 

 下面给出的是业务群名称描述符,它以文本方式给出了业务群的名称:

业务群名称描述符

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子表叙述的节目业务群名称

  业务名称描述符和网络名称描述符类型,只是作为业务群的一个代号,其实际意义只存在于用户界面上,可以给用户一个良好的操作体验。

 


 

二:SDT解析

PARSINGOF SDT

"SDT描述了业务内容及信息,连接了NIT与EIT和PMT(PSI)"

  SDT即服务描述表(Service Description Table),它描述了一个业务中的内容以及信息,它承上启下,以transport_stream_ID连接了NIT和EIT;SDT的servicID必须与PMT中的Program_no一致,因此,SDT又与PSI的信息连接。

  对于一般的音视频业务,SDT表中不会有太多的信息需要添加。如果是其他业务(如NVOD、马赛克、数据广播等),在SDT中需要插入相应业务的描述符。

        

SDT的表结构分析

ANALYZE OF THE STRUCTURE OF SDT

 

         SDT表被切分成业务描述段(service_description_section),由PID为0x0011的TS包传输(BAT段也由PID为0x0011的TS包传输,但table_id不同)。

  描述现行TS(即包含SDT表的TS)的SDT表的任何段的table_id都为0x42,且具有相同的table_id_extension(transport_stream_id)以及相同的original_network_id。

  指向非现行TS的SDT表的任何段的table_id都应取0x46。

下面给出了SDT的业务描述段:                 

业务描述段
Syntax(句法结构)         No. ofbits(所占位数)   Identifier(识别符)  Note(注释)  
service_description_section(){
table_id                                             8                      uimsbf                                                  
Section_syntax_indicator               1                          bslbf                   通常设为“1”
Reserved_future_use                      1                        bslbf
Reserved                                           2                        bslbf
Section_length                                12                      uimsbf                 见注释
transport_stream_id                       16                       uimsbf                给出TS识别号
Reserved                                           2                         bslbf
Version_number                              5                         uimsbf             见注释
Current_next_indicator                   1                          bslbf                 见注释
Section_number                              8                          uimsbf            见注释
last_section_number                       8                          uimsbf            见注释
original_nerwork_id                        16                         uimsbf            见注释
reserved_future_use                        8                          bslbf
for(i=0;i<N;i++){
    service_id                                     16                         uimsbf           见注释
    reserved_future_use                     6                         bslbf
    EIT_schedule_flag                         1                          bslbf            见注释
    EIT_present_following_flag          1                          bslbf            见注释
    running_status                                3                         uimsbf        见下面分析
    freed_CA_mode                            1                         bslbf            见注释
    descriptors_loop_length                12                      uimsbf
    for(j=0;j<N;j++){
        descriptor()
    }
}
CRC_32                                               32                  rpchof                  见注释
}

 

running_status(运行状态):表示业务状态,下表给出了业务状态

含义

0

未定义

1

未运行

2

几秒后开始(如录像)

3

暂停

4

运行

5~7

预留

         SDT是描述一个TS流中所有业务信息的一张表,重要的字段包含transport_stream_id,明确这些业务是属于哪个TS流的;另一个重要字段时候service_id,这是作为频道索引信息存在的。

 

SDT的业务描述符分析

ANALYZE OF THE STRUCTURE OF SERVICE_DESCRIPTOR IN SDT

 

 业务描述符与业务类型一起,以文本形式给出业务提供者的名称和业务名称,如下表:

 业务描述符

Syntax(句法结构)    No. of bits(所占位数)Identifier(识别符) 

service_descriptor(){

descriptor_tag                         8                       uimsbf

descriptor_length                    8                       uimsbf

service_type                            8                      uimsbf

service_provider_name_length  8                    uimsbf

for(i=0;i<N;i++){

    Char                                   8                      uimsbf

}

service_name_length            8                      uimsbf

for(i=0;i<N;i++){

    Char                                  8                      uimsbf

}

}

service_type(业务类型):这里的业务类型和NIT中的业务列表描述符中的service_type编码是一致的:

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

预留使用

        业务描述符是SDT中最重要的描述符,也是运营商中必须的描述符。其中的service_type描述这个业务类型的域;service_name描述频道名。

 

SDT的实例分析

ANALYZE OF REAL EXAMPLE OF SDT

 这里主要演示SDT如何连接PSI和NIT

   首先,根据SDT描述符的service_id可以和PMT中的program_number建立连接。如图所示,SDT的service_id=201=0xc9,与PMT中的program_number一致。

   上图所示,根据SDT的transport_stream_id和NIT的transport_stream_id,可以将SDT和NIT联系起来。根据上图的信息,我们可以根据SDT获取该业务(频道)的业务列表信息和有线传输信息(位于NIT中)。

 

 

三:EIT解析

PARSING OF EIT

"EIT按时间顺序提供每一个业务所包含的事件信息"

   EIT即事件信息表(Event Information Table),它是EPG中绝大部分信息的携带者。事实上,EPG主要就是通过SDT和EIT信息的获取和重组实现的。SDT只提供了频道信息,而EIT则提供各频道下的所有节目的信息。

  EIT的主要信息也是通过插入的描述符来实现的。EIT按照时间顺序提供每一个业务所包含的事件的相关信息(如节目名称、节目简介)。

传输流

信息

table_id

当前TS流

当前/后续事件信息

0x4E

其他TS流

当前/后续事件信息

0x4F

当前TS流

事件时间表信息

0x50~0x5F

其他TS流

事件时间表信息

0x60~0x6F

  按照不同的table_id,一共有四类EIT。其中,当前TS流的所有EIT子表都有相同的transport_stream_id和original_stream_id。下图给出了一个实例的码流中的EIT信息,这里一共有三类EIT表,观察其table_id就可以知道它们代表什么类型的EIT。

   第一个EIT_PF_Actual应该是当前TS流的“当前/后续事件信息”;第二个EIT_PF_Other是其他TS流的“当前/后续事件信息”;第三个EIT_Schedule_Actual是当前TS流的“事件时间表信息”。

 

 

EIT的表结构分析

ANALYZEOF THE STRUCTUREOF EIT

 

  EIT表被切分成事件信息段。任何构成EIT的段都由PID=0x0012的TS包传输。下面给出的是事件信息段的结构:

事件信息段

Syntax(句法结构)  No. ofbits(所占位数)   Identifier(识别符)  Note(注释)

event_information_section(){

table_id              8         uimsbf      

Section_syntax_indicator   1          bslbf   通常设为“1”

Reserved_future_use       1          bslbf

Reserved           2          bslbf

Section_length         12         uimsbf     见注释

service_id           16      uimsbf 与PAT中的program_number一致

Reserved           2           bslbf

Version_number          5          uimsbf       见注释

Current_next_indicator      1                bslbf     见注释

Section_number         8           uimsbf    见注释

last_section_number     8          uimsbf        见注释

transport_stream_id     16        uimsbf       见注释

original_nerwork_id     16         uimsbf       见注释

segment_last_section_number  8       uimsbf          见注释

last_table_id         8       uimsbf        见注释

for(i=0;i<N;i++){

    event_id       16         uimsbf        事件(节目)id

    start_time      40        bslbf     事件(节目)开始时间

    duration      24       bslbf       事件(节目)持续始时间

    running_status   3        uimsbf         见注释

    freed_CA_mode    1        bslbf          见注释

    descriptors_loop_length   12  uimsbf

    for(j=0;j<N;j++){

        descriptor()

    }

}

CRC_32         32         rpchof        见注释

}

   start_time(开始时间):40位字段,指的是事件(节目)的开始时间,它包含以UTC和MJD形式表示的事件(节目)的起始时间及日期。此字段前16位表示MJD日期码,其余24位按4位BCD编码,表示6个数字。例如:93/10/13 12:45:00被编码为:“0xc079124500”

HINT(提示):如果事件起始时间未定,则所有位都置为“1”,例如对NVOD业务的一个事件。

duration(持续时间):24位字段,表示事件的持续时间,以时、分、秒的格式表示,即由6个4位BCD码显示。如:01:45:30被编码为“0x14530”。

running_status(运行状态):参看SDT表解析部分。

 

 

 

 

 

下面给出一个具体的例子:

  EIT主要承载的信息就是Event的相关内容,即节目信息。其中,节目所在频道(service_id)、开始时间(start_time)、结束时间(start_time+duration)可在EIT子表获取;而节目描述、节目名称、节目分类等信息就要在插入EIT的描述符中获取了。

 

 

EIT的短事件描述符分析

ANALYZE OF THE STRUCTURE OF SHORT_EVENT_DESCRIPTOR IN EIT

 

  短事件描述符(Short_event_descriptor)以文本方式提供了事件名称和该事件的简短描述。描述符结构如下:

短事件描述符

Syntax(句法结构)    No.of bits(所占位数)  Identifier(识别符)

short_event_descriptor(){

descriptor_tag         8            uimsbf

descriptor_length      8           uimsbf

ISO_639_language_code     24            bslbf

event_name_length      8            uimsbf

for(i=0;i<event_name_length;i++){

    event_name_char    8            uimsbf

}

text_length         8           uimsbf

for(i=0;i<text_length;i++){

    text_char       8            uimsbf

}

}

 

ISO_639_language_code(ISO 639-2语言代码):24位字段,指明后续文本字段的语言。该字段包含一个由ISO 639-2定义的3字符代码。ISO 639-2/B和ISO 639-2/T均可使用。每个字符按照GB/T15273.1-1994编码为8位,并依次插入24位字段。如:法语的3字符代码“fre”,可编码为:“0110 01100111 0010 0110 0101”。

event_name_char(事件名称字符):一个字符串给出事件的名字。

text_char(文本字符):一个字符串给出事件的文本描述。

 下面给出的是一个实际案例的短时间描述符,可见中文的3字符代码是“chi”。

 

EIT的扩展事件描述符分析

ANALYZE OF THE STRUCTURE OF EXTENDED_EVENT_DESCRIPTOR IN EIT

 

  扩展事件描述符(Extended_Event_Descriptor)扩展事件描述符给出了一个事件的详细文本描述。如果一个事件的信息长度超过256字节,可以使用多于一个相关联的扩展事件描述符来描述。文本信息可以分为两个栏目,一栏为条目的描述,另一栏为条目的内容。

  下面给出了扩展事件描述符的结构。

扩展事件描述符

Syntax(句法结构)   No. of bits(所占位数)Identifier(识别符) 

extended_event_descriptor(){

descriptor_tag       8          uimsbf        

descriptor_length      8          uimsbf   

descriptor_number      4          uimsbf

last_descriptor_number   4          uimsbf

ISO_639_language_code   24          bslbf 

length_of_items      8          uimsbf

for(i=0;i<N;i++){

    item_description_length   8      uimsbf

    for(j=0;j<N;j++){

        item_description_char   8  uimsbf

    }

    item_length

    for(j=0;j<N;j++){

        item_char

    }

}   

text_length

for(i-0;i<N;i++){

    text_char

}             

}

下面给出的是一个实例截图

 

EIT的内容描述符分析

ANALYZE OF THE STRUCTURE OF CONTENT_DESCRIPTOR IN EIT

 

  内容描述符的目的是为事件提供清晰的信息描述符。根据这个描述符的信息,接收机可以清晰地知道事件的分类,并告知观众。下面给出了内容描述符的结构:

内容描述符

Syntax(句法结构)    No. of bits(所占位数)Identifier(识别符) 

content_descriptor(){

descriptor_tag       8           uimsbf     

descriptor_length      8           uimsbf            

for(i=0;i<N;i++){

    content_nibble_level1    4       uimsbf      

    content_nibble_level2    4       uimsbf      

    user_nibble          4       uimsbf      

    user_nibble          4       uimsbf      

}

}

  这里主要需要介绍的就是 content_nibble_level1content_nibble_level2:根据EN 300 468V1.3.1(1998-02)中的Table 18可以确定该节目的具体分类。
 

下面给出了一个实例。

 

四:TDT解析

PARSING OF TDT

"TDT仅传送UTC时间和日期信息,只有一个段"

TDT为时间和日期表(Time&Date Table),它仅传送UTC时间和日期信息。并且TDT仅包含一个段,其结构如下:

时间和日期段

Syntax(句法结构)  No. ofbits(所占位数) Identifier(识别符)  Note(注释)  

time_date_section(){

table_id            8         uimsbf      

Section_syntax_indicator   1         bslbf     通常设为“1”

Reserved_future_use     1         bslbf

Reserved          2           bslbf

Section_length        12         uimsbf     见注释

UTC_time         40         bslbf     见注释

}

UTC_time(UTC时间):40位字段,包含以UTC和MJD形式表示的当前时间和日期。此字段前16位为MJD日期码,后24位按4位BCD编码,表示6个数字。如:93/10/13 12:45:00被编码为“0xC079124500”。

        下图给出了一个实例:

 

 

五:TOT解析

PARSINGOF TOT

"TOT是TDT的一个扩展,增加了一个描述符"

TOT为时间偏移表(Time Offset Table),它包含了UTC时间和日期信息及当地时间偏移。传输此表的TS包PID为0x0014,table_id=0x73。下面给出了时间偏移段的结构:

时间偏移段

Syntax(句法结构)    No. ofbits(所占位数) Identifier(识别符)  Note(注释)

time_offset_section(){

table_id           8         uimsbf            section_syntax_indicator    1         bslbf    通常设为“1”

reserved_future_use         1          bslbf

reserved               2          bslbf

section_length           12           uimsbf   见注释

UTC_time            40           bslbf    见注释

reserved            4            bslbf

descriptors_loop_length   12          uimsbf            for(i=0;i<N;i++){

    descriptor()

CRC_32     32           rpchof       见注释

}

   这里的UTC_time和TDT表是一致的,都是以UTC和MJD形式表示当前时间和日期;其格式也与TDT的UTC_time相同,这里不再赘述。需要特别注意的是这里的描述符descriptor()。下面给出了本地时间偏移描述符的结构:

本地时间偏移描述符

Syntax(句法结构)    No. of bits(所占位数)  Identifier(识别符) 

local_time_offset_descriptor(){

descriptor_tag          8            uimsbf        

descriptor_length        8            uimsbf   

for(i=0;i<N;i++){

    coutry_code       24           bslbf

    country_region_id    6            bslbf

    reserved        1            bslbf

    local_time_offset_polarity    1       bslbf

    local_time_offset   16            bslbf

    time_of_change     40            bslbf

    next_time_offset    16            bslbf

}

}

 

国家代码  country_code

  24位字段,按照ISO 3166用3字符代码指明国家。每个字符根据GB/T 15273.1-1994编码为8位,并依次插入24位字段。假设3个字符代表了一个900至999的数字,那么country_code指定了一组ETSI定义的国家。其分配见ETR 162。国家组的国家代码应该被限制在同一时区内。

例如:英国由3字符代码“GBR”表示,编码为:“01000111 0100 0010 0101 0010”。

 

国家区域标识符  country_region_id

6位字段,表示country_code指明的国家所在的时区。若国家内部里没有时差,则置“000000”。

country_region_id

描述

00 0000

未使用时区扩展

00 0001

时区1(最东部)

00 0010

时区2

……..

……..

11 1100

时区 60

11 1101 – 11 1111

预留

本地时间偏移极性 local_time_offset_polarity

  1位字段,用于指明随后的local_time_offset的极性。置“0”时,极性为正,说明本地时间早于UTC时间(通常在格林威治以东);置“1”时,极性为负,说明本地时间晚于UTC时间。

本地时间偏移 local_time_offset

  16位字段,指出由country_code和country_region_id确定的区域的相对于UTC的时间偏移,范围为-12小时至+13小时。16比特含有4个4位BCD码,顺序为小时的十位,小时的个位,分的十位,分的个位。

时间变化  time_of_change

  40位字段,指明时间改变时当前的日期(MJD)与时间(UTC),见附录C。该字段分为两部分,前16位给出了LSB格式的日期(MJD),后24位给出了UTC时间(6个4位BCD码)。

下一时间偏移  next_time_offset

  16位字段,指出由country_code和country_region_id确定的区域,当UTC时间变化时的下一个时间偏移,范围为-12小时至+13小时。此16比特域为4个4位BCD码,依次为时的十位,时的个位,分的十位,分的个位。

 

六:运行状态表(RST)

    运行状态表(RST)能准确而迅速地的更新一个或多个事件的时间状态。因为时间表的变化,事件的开始可能提前或滞后,所以RST表的存在是非常必要的。使用一个独立的表可以保证快速更新机制的实现。

按照表10语法,RST表被切分成运行状态段。任何构成RST表的段,都要由PID为0x0013的TS包传输,table_id值为0x71。

  运行状态段表

语    法

位数

助记符

running_status_section(){

 

 

    table_id

8

uimsbf

    section_syntax_indicator

1

bslbf

    reserved_future_use

1

bslbf

    reserved

2

bslbf

section_length

12

uimsbf

    for(i=0;i<N;i++){

 

 

          transport_stream_id

16

uimsbf

          original_network_id

16

uimsbf

          service_id

16

uimsbf

          event_id

16

uimsbf

          reserved_future_use

5

bslbf

          running_status

3

uimsbf

    }

 

 

}

 

 

 

运行状态段的语义:

表标识符  table_id

段语法指示符  section_syntax_indicator: 1位字段,应置“0”。

段长度  section_length:12位字段,前两位置“00”。它表示从该字段的下一个字节开始的本段的字节长度,并包含CRC。section_length不能超过1021,这样整个段的最大长度为1024字节。

传输流标识符  transport_stream_id16位字段,RST表所描述的TS的标识,用以区别传输系统中的其他复用流。

原始网络标识符  original_network_id:16位字段,给出原始传输系统的network_id。

业务标识符  service_id:16位字段,用于在TS流中识别不同的业务。service_id 与program_map_section中的program_number取同一值。

事件标识符  event_id16位字段,指示相关事件的标识号。

运行状态  running_status:3位字段,表示业务的状态。

 

七:填充表(ST)

填充表段用于在一个传输系统的边界使当前段无效,例如在一个有线系统前端。当子表中的一个段被改写(填充)时,则该子表中的所有段都需要重写,以便保持section_number字段的一致性。

表11  填充段

语    法

位数

助记符

stuffing_section(){

 

 

      table_id

   8

uimsbf

      section_syntax_indicator

   1

bslbf

      reserved_future_use

   1

bslbf

      reserved

   2

bslbf

      section_length

   12

uimsbf

      for(i=0;i<N;i++){

  

 

            date_byte

   8

uimsbf

      }

 

 

}

 

 

 

填充段的语义:

表标识符  table_id。

段语法指示符  section_syntax_indicator: 1位字段,可以取值“1”或“0”。。

段长度  section_length:12位字段,它表示从该字段的下一个字节开始的本段的字节长度,并包含CRC。section_length不能超过4093,这样整个段的最大长度为4096字节。

数据字节  data_byte:8位字段,可取任何值,没有具体意义。

 

八:间断信息表(DIT)

DIT表应插入SI信息可能间断的转变点,见下表。

 间断信息段表

语    法

位数

助记符

discontinuity_information_section(){

 

 

table_id

8

uimsbf

section_syntax_indicator

1

bslbf

reserved_future_use

1

bslbf

reserved

2

bslbf

section_length

12

uimsbf

transition_flag

1

uimsbf

reserved_future_use

7

bslbf

}

 

 

 

间断信息段的语义:

表标识符  table_id 

段语法标识符  section_syntax_indicator 

1位字段,应置“0”。

段长度  section_length

12位字段,应置为0x001.

转变标志  transition_flag

1位标志字段,指明TS中的转变类型。该位置“1”时,表示转变因起始码源变化所致。这种起始源的变化可能是原始TS发生变化和/或在TS的位置发生变化(如时间偏移)。该位置“0”时,表示转变仅因为选择的变化所致。例如:停留在同一个原始TS中的同一个位置上。

 

九:选择信息表(SIT

SIT表描述了TS片断所携带的业务和事件。

  选择信息段表

语    法

位数

助记符

selection_information_section(){

 

 

   table_id

8

uimsbf

   section_syntax_indicator 

1

bslbf

   DVB_reserved_future_use

1

bslbf

   ISO_reserved 

2

bslbf

   section_length     

12

uimsbf

   DVB_reserved_future_use 

16

uimsbf

   ISO_reserved 

2

bslbf

   version_number   

5

uimsbf

   current_next_indicator  

1

bslbf

   section_number  

8

uimsbf

   last_section_number    

8

uimsbf

   DVB_reserved_for_future_use 

4

uimsbf

   transmission_info_loop_length   

12

bslbf

   for(i = 0; i < N; i++){

 

 

         descriptor()

 

 

   }

 

 

   for(i = 0; i < N; i++){

 

 

      Service_id

16

uimsbf

      DVB_reserved_for_future_use 

1

uimsbf

      running_status

3

bslbf

      service_loop_length

12

bslbf

      for(i = 0; i < N; I++){

 

 

          descriptor()

 

 

      }

 

 

   }

 

 

   CRC_32

32

rpchof

}

 

 

 

选择信息段的语义:

表标识符  table_id

段语法指示符  section_syntax_indicator

1位字段,应置“1”。

段长度  section_length

12位字段,它表示从该字段的下一个字节开始的本段的字节长度,并包含CRC。section_length不能超过4093,这样整个段的最大长度为4096字节。

版本号  version_number

5位字段,标识表的版本号。当表包含的信息发生变化时,version_number加1。当值增至31时,复位为0。当current_next_indicator置“1”时,则version_number为当前使用的表的版本号。当current_next_indicator置“0”时,则version_number为下一个使用的表的版本号。

当前后续指示符  current_next_indicator

1位字段,当被置“1”时,表示当前表正被使用。当其置“0”时,表示所传表尚未被使用,它是下一个将被使用的表。

段号  section_number

8位字段,给出了段号,应为“0x00”。

最后段号  last_section_number

8位字段,表示最后一个段的段号,应为“0x00”。

传输信息循环长度  transmission_info_loop_length

12位字段,以字节为单位给出了后续的描述TS片断的传输参数描述符循环的长度。

业务标识符  service_id

16位字段,用于在TS中识别不同的业务。service_id 与program_map_section中的program_number取同一值。

运行状态  running_status

3位字段,指明原始码流中的事件的运行状态,是原始的当前事件的运行状态, 若在原始码流中, 当前事件不存在,则认为”未运行”,running_status值的意义的定义见ETR 211 。

业务循环长度  service_loop_length

12位字段,以字节为单位给出了后续的TS片断中携带的业务和事件的相关SI信息的描述符循环的长度。

 

SI小结

SUMMARY OF SI

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值