ISO/IEC13818-1 TS 格式

news/2025/3/13 3:57:50/

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’。
 


http://www.ppmy.cn/news/936843.html

相关文章

ISO-8601格式时间转换

/*** param strTime 示例:"2020-01-01 23:59:59"* return "2020-01-01T15:59:59Z"*/ //传入一个北京时间(字符串), 返回ISO-8601时间(字符串)格式出去. public static String getISOTime(String strTime) {try {Date date new SimpleDateFormat("yyy…

【LinuxOS】IMG文件格式与ISO文件格式的区别

IMG是一种文件压缩格式&#xff08;archive format&#xff09;&#xff0c;主要是为了创建软盘的镜像文件&#xff08;disk image&#xff09;&#xff0c;它可以用来压缩整个软盘&#xff08;通常指软软盘&#xff0c;Floppy Disk或Diskette&#xff09;或整片光盘的内容&…

ISO 8601 格式是干什么的?底层原理是什么?

ISO 8601 是国际标准化组织&#xff08;ISO&#xff09;制定的一种表示日期和时间的格式标准。该标准的目的是提供一种标准的、易于理解和可互操作的日期和时间表示方法&#xff0c;以便于不同系统之间的数据交换和处理。ISO 8601 标准定义了多种日期和时间表示方法&#xff0c…

ISO 8601持续时间格式

ISO 8601 持续时间格式。 ISO 8601 中定义了一个时间间隔&#xff0c; 格式如下&#xff1a; ISO 8601持续时间格式如下&#xff1a; P(n)Y(n)M(n)DT(n)H(n)M(n)S其中&#xff1a; P是持续时间指示符&#xff0c;始终放置在持续时间的开头位置T是表示时间元素开始的指示符…

ISO,IMG,QCOW2磁盘镜像格式介绍

ISO、IMG 和 qcow2 是常见的镜像格式&#xff0c;它们在特性和用途上有所区别&#xff0c;不直接相互转换&#xff0c;但可以通过一些工具进行格式转换和转换到其他的虚拟化平台。下面是它们的特点和区别&#xff1a; 1、ISO&#xff08;光盘映像&#xff09;&#xff1a;ISO …

iso文件系统转换成img格式的步骤整理

1瑞芯微iso镜像转换 瑞芯微等一些嵌入式芯片无法使用u盘装系统&#xff0c;是使用芯片原厂的工具把文件系统导入到emmc或者ssd中的&#xff0c;我们可以使用下面的方法把iso的文件系统提取出来&#xff0c;然后烧写到开发板中&#xff1a; 使用版本前安装一下包&#xff1a; …

ISO 8601日期格式与持续时间格式

ISO 8601日期格式与持续时间格式 国际标准ISO 8601&#xff0c;是国际标准化组织的日期和时间的表示方法&#xff0c;全称为《数据存储和交换形式信息交换日期和时间的表示方法》。目前是2004年12月1日发行的第三版“ISO8601:2004”以替代1998年的第一版“ISO8601:1998”与200…

iso文件用什么打开?还有iso是什么东西?

对于使用光盘或者虚拟光驱安装操作系统或其它大型软件的时候都可以看到安装的文件是 ISO文件&#xff0c;很多朋友都不知道iso文件用什么打开&#xff0c;什么是 iso文件&#xff1f;最简单的说就是以iso为扩展名的文件&#xff0c;它是iso9660文件格式&#xff0c;一种光盘&a…