PSI/SI 深入学习
BASIC KNOWLEDGE LEARNING OF PSI/SI
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的表结构分析
ANALYZEOF THE STRUCTUREOF 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的业务描述符分析
ANALYZEOFTHE STRUCTUREOFSERVICE_DESCRIPTORINSDT
业务描述符与业务类型一起,以文本形式给出业务提供者的名称和业务名称,如下表:
业务描述符
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编码是一致的:
|