一、 PS 包头格式
1、PS 包头格式
包起始码字段 pack_start_code
值为'0000 0000 0000 00000000 0001 1011 1010' (0x000001BA)的位串,用来标志一个包的开始。
系统时钟参考字段 system_clock_reference_base,system_clock_reference_extenstion
系统时钟参考(SCR)分两部分编码的42位字段。第一部分system_clock_reference_base是一个长度为33位的字段;第二部分system_clock_reference_extenstion是一个长度为9位的字段。SCR字段指出了基本流中包含ESCR_base最后一位的字节到达节目目标解码器输入端的期望时间。
标记位字段 marker_bit
1位字段,取值'1'。
节目复合速率字段 program_mux_rate
一个22位整数,规定P-STD在包含该字段的包期间接收节目流的速率。其值以50字节/秒为单位。不允许取0值。该字段值在本标准中的节目多路复合流的不同包中取值可能不同。
包填充长度字段 pack_stuffing_length
3位整数,规定该字段后填充字节的个数。
填充字节字段 stuffing_byte
8位字段,取值恒为'1111 1111'。该字段能由编码器插入,例如为了满足通道的要求。它由解码器丢弃。在每个包标题中最多只允许有7个填充字节。
2、分析实例
结合上面的格式,分析图1.
图1
0x000001BA用来标志一个包的开始,从后面划线的ff到01表示填充字符,其他的分析见图2
图2
二、 PS map格式
1、格式说明
见图2-1
图2-1
分组起始码前缀字段 packet_start_code_prefix
24位码。它和跟随其后的map_stream_id共同组成一个分组起始码以标志分组的开始。该字段是值为'0000 0000 0000 0000 0000 0001' (0x000001)的位串。
映射流标识字段 map_stream_id
8位字段,值为0xBC。
节目流映射长度字段 program_stream_map_length
16位字段。指示紧跟在该字段后的program_stream_map中的字节数。该字段的最大值为1018(0x3FA)。
当前下一个指示符字段 current_next_indicator
1位字段。置'1'时表示传送的节目流映射当前是可用的。置'0'时表示传送的节目流映射还不可用,但它将是下一个生效的表。
节目流映射版本字段 program_stream_map_version
5位字段,表示整个节目流映射的版本号。一旦节目流映射的定义发生变化,该字段将递增1,并对32取模。在current_next_indicator为'1'时,该字段应该是当前适用的节目流映射的版本号;在current_next_indicator为'0'时,该字段应该是下一个适用的节目流映射的版本号。
节目流信息长度字段 program_stream_info_length
16位字段,指出紧跟在该字段后的描述符的总长度。
标记位字段 marker_bit
1位字段,取值为'1'。
基本流映射长度字段 elementary_stream_map_length
16位字段,指出在该节目流映射中的所有基本流信息的字节长度。它包括stream_type、elementary_stream_id和elementary_stream_info_length字段。
流类型字段 stream_type
8位字段,根据表2-29规定了流的类型。该字段只能标志包含在PES分组中的基本流且取值不能为0x05。
基本流标识字段 elementary_stream_id
8位字段,指出该基本流所在PES分组的PES分组标题中stream_id字段的值。
基本流信息长度字段 elmentary_stream_info_length
16位字段,指出紧跟在该字段后的描述符的字节长度。
CRC 32字段 CRC_32
32位字段。
2、实例分析
分析见图2-2
图2-2
0x000001表示分组起始码前缀字段 packet_start_code_prefix, 0xBC表示映射流标识字段 map_stream_id
①表示节目流映射长度字段 program_stream_map_length
②表示节目流信息长度字段 program_stream_info_length
③表示基本流映射长度字段 elementary_stream_map_length
④表示流类型字段 stream_type,几个常用值:
a) MPEG-4视频流: 0x10;
b) H.264视频流: 0x1B;
c) SVAC视频流: 0x80;
d) G.711音频流: 0x90;
e) G.722.1音频流: 0x92;
f) G.723.1音频流: 0x93;
g) G.729音频流: 0x99;
h) SVAC音频流: 0x9B。
⑤表示基本流标识字段 elementary_stream_id , 常见值见图2-3
图2-3
其他分析见下图