ISO/IEC13818-1 TS 格式

bslbf代表位串,即“Bit string, left bit first ”,

uimsbf代表无符号整数,即”unsinged integer, most significant bit first”,数字表示该数据项所占的比特数

又一解释:

bslbf (bit string, left bit first)  比特串,左位在先

uimsbf (unsigned integer,most significant bit first)  无符号整数,高位在先

 

                 ISO/IEC13818-1 TS 格式    

        
transport_packet(){    
  sync_byte                                   8  bslbf
  transport_error_indicator                   1  bslbf
  payload_unit_start_indicator                1  bslbf
  transport_priority                          1  bslbf
  PID                                        13  uimsbf
  transport_scrambling_control                2  bslbf
  adaptation_field_control                    2  bslbf
  continuity_counter                          4  uimsbf
  if(adaptation_field_control=='10'    ||
adaptation_field_control=='11'){
  
    adaptation_field()    
  }    
  if(adaptation_field_control=='01'  ||
adaptation_field_control=='11') {
  
    for (i=0;i<N;i++){    
      data_byte                               8  bslbf
    }    
  }    
}   
 
表6.1 TS Header 语法


Sync_byte:总是0x47
Transport_error_indicator:总是0
payload_unit_start_indicator:当传送RTP 数据时,’1’表示Payload 包含RTP Header(即
1 个RTP 包的开始),’0’表示Payload 不包含RTP Header;当传送PSI 信息时,’1’表示包含
PSI 信息的第一个字节(即完整PSI 信息的开头),’0’表示不是一个PSI 的开始。
transport_priority:总是0
PID:13 位,其中PID0x0000 代表PAT,PID 范围0x0001-0x000F 是保留的,PID 值0x1FFF 代表空包
transport_scrambling_control:总是0
adaptation_field_control:
00:备用
01:没有adaptation_field
10:只有adaptation_field,没有Payload
11:有adaptation_field,adaptation_field 之后是Payload
在本规范中, adaptation_field 只是用作填充。所以,只会用到值01、11。
具体的填充细节见“TS包的填充规范”
continuity_counter:
4Bit 的计数器,0000-1111。对于同一个PID,顺序的TS 包自动增长,到1111 后转到0000。
该字段用作RTP 组包的排序功能,以后可以扩展支持重传等其它功能。
对于Payload 不足184 字节的情况,要进行填充。填充采用adaptaion_field,而且在本规范
中adaptation_field 只是用作填充使用。
Adaptation_field 的语法如表6.2 所示:


               Syntax                                  No. of Bits Mnemonic
adaptation_field() {    
  adaptation_field_length                                     8  uimsbf
  if(adaptation_field_length >0) {    
    discontinuity_indicator                                   1  bslbf
    random_access_indicator                                   1  bslbf
    elementary_stream_priority_indicator                      1  bslbf
    PCR_flag                                                  1  bslbf
    OPCR_flag                                                 1  bslbf
    splicing_point_flag                                       1  bslbf
    transport_private_data_flag                               1  bslbf
    adaptation_field_extension_flag                           1  bslbf 
    if(PCR_flag == '1') {     
      program_clock_reference_base                           33  uimsbf
      Reserved                                                6  bslbf
      program_clock_reference_extension                       9  uimsbf
    }    
    if(OPCR_flag == '1') {    
      original_program_clock_reference_base                  33  uimsbf
      Reserved                                                6  bslbf
        original_program_clock_reference_extension            9  uimsbf
    }      
    if (splicing_point_flag == '1') {    
      splice_countdown                                        8  tcimsbf
    }    
    if(transport_private_data_flag == '1') {    
      transport_private_data_length                           8  uimsbf
      for (i=0; i<transport_private_data_length;i++){    
        private_data_byte                                     8  bslbf
      }    
    }    
    if (adaptation_field_extension_flag == '1' ) {    
      adaptation_field_extension_length                       8  uimsbf
      for ( i=0;i<adaptation_field_extension_length;i++) {    
        Reserved                                              8  bslbf
      }    
    }    
    for (i=0;i<N;i++){    
      stuffing_byte                                           8  bslbf
    }    
  }    
}    
adaptation_field_length:填充的具体字节数,不包括adaptation_field_length 这个字节。
如果值为’0’,表示没有其它的填充字节。这用来填充1 个字节的情况。 
discontinuity_indicator:总是’0’
random_access_indicator:总是’0’
elementary_stream_priority_indicator:总是’0’
PCR_flag:总是’0’
OPCR_flag:总是’0’
splicing_point_flag:总是’0’
transport_private_data_flag:总是’0’
adaptation_field_extension_flag:总是’0’
stuffing_byte: 填充字节为’0xff’。
 

你可能感兴趣的:(ISO/IEC13818-1 TS 格式)