6 7 8 '10' PES_scrambling_control PES_priority data_alignment_indicator copyright original_or_copy PTS_DTS_flags ESCR_flag ES_rate_flag DSM_trick_mode_flag additional_copy_info_flag PES_CRC_flag PES_extension_flag PES_header_data_length if(PTS_DTS_flags =='10'){ 2 2 1 1 1 1 2 1 1 1 1 1 1 8 4 3 1 15 1 15 1 4 3 1 15 1 15 1 4 3 1 15 1 15 1 2 3 1 15 reserved ESCR_base[32..30] marker_bit ESCR_base[29..15] bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf uimsbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf bslbf 9 10 12 } '0010' PTS[32..30] marker_bit PTS[29..15] marker_bit PTS[14..0] marker_bit if(PTS_DTS_flags =='11'){ 9 10 12 '0011' PTS[32..30] marker_bit PTS[29..15] marker_bit PTS[14..0] marker_bit 14 15 17 9 } '0001' PTS[32..30] marker_bit PTS[29..15] marker_bit PTS[14..0] marker_bit if(ESCR_flag =='1'){ 9 9 9 9 9 } } } } } marker_bit ESCR_base[14..0] marker_bit ESCR_extension marker_bit if(ES_rate_flag =='1'){ marker_bit ES_rate marker_bit if (DSM_trick_mode_flag =='1'){ trick_mode_control if ( trick_mode_control = =fast_forward ) { field_id intra_slice_refresh frequency_truncation } else if ( trick_mode_control = = slow_motion ) { rep_cntrl } else if ( trick_mode _control = = freeze_frame ) { field_id reserved } else if ( trick_mode _control = = fast_reverse ) { field_id intra_slice_refresh frequency_truncation else if ( trick_mode_control = = slow_reverse ) { rep_cntrl } else reserved if ( additional_copy_info_flag = ='1'){ marker_bit additional_copy_info if (PES_CRC_flag==‘1’){ previous_PES_packet_CRC if ( PES_extension_flag =='1') { PES_private_data_flag 1 15 1 9 1 1 22 1 3 2 1 2 5 2 3 2 1 2 5 5 1 7 16 1 bslbf bslbf bslbf uimsbf bslbf bslbf uimsbf bslbf uimsbf bslbf bslbf bslbf uimsbf uimsbf bslbf bslbf bslbf bslbf uimsbf bslbf bslbf bslbf bslbf bslbf 10 10 10 11 pack_header_field_flag program_packet_sequence_counter_flag P-STD_buffer_flag reserved PES_extension_flag_2 if(PES_private_data_flag =='1'){ PES_private_data } if (pack_header_field_flag == '1'){ pack_field_length pack_header() } if (program_packer_sequence_counter_flag == '1'){ marker_bit program_packet_sequence_counter marker-bit MPEG1_MPEG2_indentifier original_stuff_length } if (P-STD_buffer_flag = = '1'({ 1 1 1 3 1 128 8 1 7 1 1 6 2 1 13 1 7 8 8 8 bslbf bslbf bslbf bslbf bslbf bslbf uimsbf bslbf uimsbf bslbf bslbf uimsbf bslbf bslbf uimsbf bslbf uimsbf bslbf bslbf bslbf 10 10 9 9 } } } for (i=0;i 24位代码,它和后面的stream_id构成了标识分组开始的分组起始码。它是一个值为'0000 0000 0000 0000 0000 0001' (0x000001)的位串。 流标识字段 stream_id 在节目流中,它规定了基本流的号码和类型。其中0xBC指下章节提到的节目流映射。0x(C0~DF)指音频,0x(E0~EF)为视频。具体见下表: Stream_id赋值 stream_id 1011 1100 1011 1101 1011 1110 1011 1111 110x xxxx 1110 xxxx 1111 0000 1111 0001 1111 0010 1111 0011 1111 0100 1111 0101 1111 0110 1111 0111 1111 1000 1111 1001 1111 1010?1111 1110 1111 1111 注 1 类型为program_stream_map的PES分组有唯一的语法,在2.5.4.1中作了规定。 2 类型为private_stream_1和ISO/IEC_13352_stream的PES分组与GB/T XXXX.2及GB/T XXXX.3音频流服4 program_stream_directory 符号x表示值'0'或'1'均被允许且可产生相同的流类型。流号码由x的取值决定。 注 1 2 3 3 3 5 2 6 6 6 6 6 7 program_stream_map private_stream_1 padding_stream private_stream-2 GB/T XXXX.3或GB/T AAAA.3音频流编号xxxx GB/T XXXX.2或GB/T AAAA.2视频流编号xxxx ECM_stream EMM_stream GB/T XXXX.1附录B或GB/T XXXX.6_DSMCC_stream ISO/IEC_13522_stream ITU-T Rec. H.222.1类型A ITU-T Rec. H.222.1类型B ITU-T Rec. H.222.1类型C ITU-T Rec. H.222.1类型D ITU-T Rec. H.222.1类型E ancillary_stream 保留数据流 流 编 码 从相同的PES分组语法。 3 类型为private_stream_2,ECM_stream和EMM_stream的PES分组与private_stream_1相似,除了在PES_packet_length字段后未规定语法。 4 类型为program_stream_directory的PES分组有唯一的语法,在2.5.5中作了规定。 5 类型为DSM_CC_stream的PES分组有唯一的语法,在GB/T XXXX.6中作了规定。 6 stream_id与表2-29中的stream_type 0x09相关联。 7 stream_id仅用于PES分组。PES分组在传输流中携带了来源于节目流或GB/T AAAA.1系统流的数据(参见2.4.3.7)。 PES分组长度字段 PES_packet_length 16位字段,指出了PES分组中跟在该字段后的字节数目。值为0表示PES分组长度要么没有规定要么没有限制。这种情况只允许出现在有效负载包含来源于传输流分组中某个视频基本流的字节的PES分组中。 PES加扰控制字段 PES_scrambling_control 2位字段,表示PES分组有效负载的加扰方式。当加扰发生在PES层,PES分组标题,如果有可选字段的话也包括在内,不应被加扰。 PES优先级字段 PES_priority 1位字段,指示PES分组中有效负载的优先级。'1'表示PES分组中有效负载的优先级高于该字段为'0'的PES分组有效负载。多路复合器能使用该字段来区分安排基本流中数据的优先级。传输机制不应改动该字段。 数据对齐指示符字段 data_alignment_indicator 1位标志。当值为'0'时,没有定义是否有任何此种的对齐。 版权字段 copyright 1位字段。置'1'时表示相关PES分组有效负载的材料受到版权保护。当值为'0'时,没有定义该材料是否受到版权保护。 原始或拷贝字段 original_or_copy 1位字段。置'1'时表示相关PES分组有效负载的内容是原始的;值为'0'表示相关PES分组有效负载的内容是一份拷贝。 PTS DTS标志字段 PTS_DTS_flags 2位字段。当值为'10'时,PTS字段应出现在PES分组标题中;当值为'11'时,PTS字段和DTS字段都应出现在PES分组标题中;当值为'00'时,PTS字段和DTS字段都不出现在PES分组标题中。值'01'是不允许的。 ESCR标志字段 ESCR_flag 1位标志。置'1'时表示ESCR基础和扩展字段出现在PES分组标题中;值为'0'表示没有ESCR字段。 ES速率标志字段 ES_rate_flag 1位标志。置'1'时表示ES_rate字段出现在PES分组标题中;值为'0'表示没有ES_rate字段。 DSM特技方式标志字段 DSM_trick_mode_flag 1位标志。置'1'时表示有8位特技方式字段;值为'0'表示没有该字段。 附加版权信息标志字段 additional_copy_info_flag 1位标志。置'1'时表示有附加拷贝信息字段;值为'0'表示没有该字段。 PES CRC标志字段 PES_CRC_flag 1位标志。置'1'时表示CRC字段出现在PES分组标题中;值为'0'表示没有该字段。
视音频数据PS封装-offset(2)
2019-03-29 09:48
视音频数据PS封装-offset(2).doc
将本文的Word文档下载到电脑
下载失败或者文档不完整,请联系客服人员解决!