TS科普11 PES包句法解析

本文详细介绍了PES包头的各个字段及其作用,包括packet_start_code_prefix、stream_id、PES_packet_length等,深入探讨了这些字段如何帮助确定PES包的有效载荷类型和长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




packet_start_code_prefix — packet_start_code_prefix 为24 比特码。同跟随它的stream_id 一起组成标识包起始端的包起始码。packet_start_code_prefix 为比特串‘0000 0000 0000 0000 0000 0001’(0x000001)。

stream_id — 节目流中,stream_id 指示基本流的类型和编号,如stream_id 表2-22 所定义的。传输流中,stream_id 可以设置为准确描述基本流类型的任何有效值,如表2-22 所规定的。传输流中,基本流类型在2.4.4 中所指示的节目特定信息中指定。

PES_packet_length — 16 比特字段指示PES 包中跟随该字段最后字节的字节数。0 值指示PES 包长度既未指示也未限定并且仅在这样的PES 包中才被允许,该PES 包的有效载荷由来自传输流包中所包含的视频基本流的字节组成。

PES_scrambling_control — 2 比特PES_scrambling_control 字段指示PES 包有效载荷的加扰方式。当加扰在PES 等级上实施时,PES 包头,其中包括任选字段只要存在,应不加扰(见表2-23)。


PES_priority — 此为1 比特字段,指示在此PES 包中该有效载荷的优先级。‘1’指示该PES 包有效载荷比具有此字段置于‘0’的其他PES 包有效载荷有更高的有效载荷优先级。多路复用器能够使用该PES_priority 比特最佳化基本流内的数据。此字段不能由传输机制加以改变。

data_alignment_indicator — 此为1 比特标志。置于值‘1’时,它指示PES 包头之后紧随2.6.10 中data_stream_alignment_descriptor 字段中指示的视频句法单元或音频同步字,只要该描述符字段存在。若置于值‘1’并且该描述符不存在,则要求表2-53,表2-54 或表2-55 的alignment_type‘01’中所指示的那种校准。置于‘0’值时,不能确定任何此类校准是否发生。

copyright — 此为1 比特字段。置于‘1’时,它指示相关PES 包有效载荷的素材依靠版权所保护。置于‘0’时不能确定该素材是否依靠版权所保护。2.6.24 中描述的版权描述符同包含与此PES 包的基本流有关并且只要该描述符适用于在此PES 包中所包含的素材,版权标志就应设置于‘1’。

original_or_copy — 此为1 比特字段。置于‘1’时,相关PES 包有效载荷的内容是原始的。置于‘0’时,它指示相关PES 包有效载荷的内容是复制的。

PTS_DTS_flags — 此为2 比特字段。当PTS_DTS_flags 字段设置为‘10’时,PES 包头中PTS 字段存在。当PTS_DTS_flags 字段设置为‘11’时,PES 包头中PTS 字段和DTS 字段均存在。当PTS_DTS_flags字段设置为‘00’时,PES 包头中既无任何PTS 字段也无任何DTS 字段存在。值‘01’禁用。

ESCR_flag — 1 比特标志,置于‘1’时指示PES 包头中ESCR 基准字段和ESCR 扩展字段均存在。置于‘0’时指示无任何ESCR 字段存在。ESCR:基本流时钟基准

ES_rate_flag — 1 比特标志,置于‘1’时指示PES 包头中ES_rate 字段存在。置于‘0’时指示无任何 ES_rate 字段存在。

DSM_trick_mode_flag — 1 比特标志,置于‘1’时指示8 比特特技方式字段存在。置于‘0’时指示此字段不存在。

additional_copy_info_flag — 1 比特标志,置于‘1’时指示additional_copy_info 存在。置于‘0’时指示此字段不存在。

PES_CRC_flag — 1 比特标志,置于‘1’时指示PES 包中CRC 字段存在。置于‘0’时指示此字段不存在。
PES_extension_flag — 1 比特标志,置于‘1’时指示PES 包头中扩展字段存在。置于‘0’时指示此字段不存在。

PES_header_data_length — 8比特字段指示在此PES包头中包含的由任选字段和任意填充字节所占据的字节总数。任选字段的存在由前导 PES_header_data_length 字段的字节来指定。

marker_bit — marker_bit 为1 比特字段,具有赋值‘1’。

PTS (presentation time stamp) — 显示时间与解码时间的关系如下:PTS 为三个独立字段编码的33 比特数。

DTS (decoding time stamp) DTS(解码时间标记)DTS 为三个单独字段编码的33 比特数。

ESCR_base; ESCR_extension — 基本流时钟参考为两部分编码的42 比特字段

ES_rate (elementary stream rate) ES 速率(基本流速率)— ES_rate 字段为22 比特无符号整数,在PES 流情况中,指定系统目标解码器接收PES 包字节的速率。ES_rate 在包括它的PES 包以及相同PES 流的后续PES 包中持续有效直至遇到新的ES_rate 字段时为止。ES 速率值以50 字节/秒为度量单位。0 值禁用。ES_rate 值用于确定字节到达2.5.2.4 中定义的PES 流的P-STD 输入端的时间。ES_rate 字段中的编码值可以伴随着从一个PES_packet 到另一个PES_packet 的变化而改变。

trick_mode_control — 3 比特字段,指示适用于相关视频流的特技方式。在其他类型基本流的情况中,此字段以及后随5 比特所规定的那些含义未确定。对于trick_mode 状态的定义,参阅2.4.2.3 的特技方式段落。
当trick_mode 状态为假时,由连续序列的解码处理输出的一个图像的次数N,在ITU-T H.262 建议书|ISO/IEC 13818-2 视频的情况中,由repeat_first_field 以及top_field_first 对每个图像指定,并在ISO/IEC11172-2 视频情况中,通过该序列头指定。
对于交错序列,当trick_mode 状态为假时,由连续序列的解码处理输出的一个图像的次数N,在ITU-TH.262 建议书|ISO/IEC 13818-2 视频的情况中,由repeat_first_field 和 progressive_frame 字段对每个图像指定。
当特技方式状态为真时,图像显示的次数取决于N 的值
当此字段的值改变或特技方式操作终止时,以下情况的任意组合可以发生:

  • 时间基上的中断;
  • 解码中断;
  • 连续性计数器中断。
       
    特技方式控制值
      值           描   述
    '000'         快进
    '001'         慢动作
    '010'         冻结帧
    '011'         快速反向
    '100'          慢反向
    '101'-'111' 保留的
在特技方式的上下文关系中,解码和显示的非正常速度可能引起视频基本流数据中规定的某些字段值不准确。同样的,截面结构上的语义限制可能无效。此例外适用的视频句法单元为:bit_rate  vbv_delay  repeat_first_field  v_axis_positive field_sequence  subcarrier   burst_amplitude  subcarrier_phase
特技方式时,解码器不能依靠这些字段中的编码值。

未正式要求解码器解码trick_mode_control 字段。然而,以下的正式要求应适用于要求解码器确实解码该trick_mode_control 字段。

fast forward 快进 —trick_mode_control 字段中,该值为‘000’。此值存在时,它指示快进视频流并规定PES 包头中后随的5 比特含义。intra_slice_refresh 比特可以设置为‘1’,指示可能存在丢失宏块,解码器可以使用先前解码图像的同一位置宏块来替代该丢失宏块。表2-25 中定义的field_id 字段指示哪个字段或哪些字段应予显示。frequency_truncation 字段指示可能包括的受限系数集。此字段赋值含义在表2-26 中显示。

slow motion 慢动作 — trick_mode_control 字段中,该值为‘001’。此值存在时,它指示慢动作视频流并规定PES 包头中后随的5 比特含义。在连续序列的情况中,图像应予显示N×rep_cntrl 字段的次数,其中N 为以上定义。
在ISO/IEC 11172-2 视频和ITU-T H.262 建议书|ISO/IEC 13818-2 视频连续序列的情况中,图像应予显示N×rep_cntrl 字段的持续周期。
在ITU-T H.262 建议书|ISO/IEC 13818-2 交错序列的情况中,图像应予显示N×rep_cntrl 字段的持续周期。若图像为成帧图像,只要顶字段第一个设置为‘1’, 则即将显示的首帧应为顶字段;只要顶字段第一个设置为‘0’,则即将显示的首帧为底字段(参阅ITU-T H.262 建议书|ISO/IEC 13818-2)。此字段显示二分之一的N×rep_cntrl 字段持续周期。该图像的其他字段显示N–N×rep_cntrl /2 的字段持续周期。

freeze frame 冻结帧 — trick_mode_control 字段中,该值为‘010’。此值存在时,它指示冻结帧视频流并规定PES 包头中后随的5 比特含义。表2-25 中定义的field_id 字段标识哪些字段应予显示。field_id 字段涉及包含该field_id 字段的PES 包中起始的第一视频存取单元,包含零个有效载荷字节的PES 包除外。在后一种情况中,field_id 字段涉及最近的先前视频存取单元。

fast reverse 快速反向 — trick_mode_control 字段中,该值为‘011’。此值存在时,它指示快速反向视频流并规定PES 包头中后随的5 比特含义。intra_slice_refresh 比特可以置于‘1’,指示可能存在丢失宏块,解码器可以使用先前解码图像的同一位置宏块来替代该丢失宏块。表2-25 中定义的field_id 字段指示哪个字段或哪些字段应予显示。frequency_truncation 字段指示可能包括的受限系field_id — 2 比特字段,指示哪些字段应予显示。依照表2-25 编码。数集。此字段赋值含义在表2-26“系数选择值”中显示。

slow reverse 慢反向 — trick_mode_control 字段中,该值为‘100’。此值存在时,它指示慢反向视频流并规定PES 包头中后随的5 比特含义。在ISO/IEC 11172-2 视频和ITU-T H.262 建议书|ISO/IEC 13818-2 视频连续序列的情况中,图像应予显示N× rep_cntrl 的图像持续周期,其中N 为以上定义。
ITU-T H.262 建议书|ISO/IEC 13818-2 交错序列的情况中,图像应予显示N×rep_cntrl 字段的持续周期。若图像为成帧图像,只要top_field_first 为‘1’,则即将显示的首字段为底字段;只要top_field_first 为‘0’,则即将显示的首字段为顶字段(参阅ITU-T H.262 建议书|ISO/IEC 13818-2)。此字段显示二分之一的N×rep_cntrl /2 字段持续周期。该图像的其他字段显示N–N×rep_cntrl /2 的字段持续周期。

field_id — 2 比特字段,指示哪些字段应予显示。依照表2-25 编码。


intra_slice_refresh — 1 比特标志,置于‘1’时指示此PES 包中视频数据的编码截面间可能存在丢失宏块。置于‘0’时此事件不可能发生。详情请见ITU-T H.262 建议书|ISO/IEC 13818-2。解码器可以采用先前解码图像的同一位置宏块来替代丢失宏块。

frequency_truncation — 2 比特字段,指示在此PES 包中编码视频数据时曾经使用的受限系数集。该值在表2-26 中定义。


rep_cntrl — 5 比特字段,指示交错图像中每个字段应予显示的次数,或者连续图像应予显示的次数。视频序列头中trick_mode_control 字段和 top_field_first 比特的作用是在交错图像情况中决定是顶字段还是底字段应予首先显示。‘0’值禁用。

additional_copy_info — 此7 比特字段包含与版权信息有关的专用数据。

previous_PES_packet_CRC — previous_PES_packet_CRC 为16 比特字段,包含产生解码器中16 寄存器零输出的CRC 值,类似于附件A 中定义的解码器。但在处理先前的PES 包数据字节之后,PES 包头除外,采用多项式:


PES_private_data_flag — 1 比特标志,置于‘1’时指示该PES 包头包含专用数据。置于‘0’值时,它指示PES 包头中不存在专用数据。

pack_header_field_flag — 1 比特标志,置于‘1’时指示ISO/IEC 11172-1 包头或节目流包头在此PES包头中存储。若此字段处于节目流中包含的PES 包中,则此字段应设置为‘0’。传输流中,设置为‘0’值
时,它指示该PES 头中无任何包头存在。

program_packet_sequence_counter_flag — 1 比特标志, 置于‘ 1 ’ 时指示program_packet_sequence_counter、MPEG1_MPEG2_identifier 以及original_stuff_length 字段在PES 包中存在。设置为’0’值时,它指示这些字段在PES 头中不存在。

P-STD_buffer_flag — 1 比特标志,置于‘1’时指示P-STD_buffer_scale 和 P-STD_buffer_size 在PES包头中存在。设置为‘0’值时,它指示这些字段在PES 头中不存在。

PES_extension_flag_2 — 1 比特字段,置于‘1’时指示PES_extension_field_length 字段及相关的字段存在。设置为‘0’值时,指示PES_extension_field_length 字段以及任何相关的字段均不存在。

PES_private_data — 此为包含专用数据的16 字节字段。此数据,同前后字段数据结合,应不能仿真packet_start_code_prefix (0x000001)。

pack_field_length — 此为8 比特字段指示 pack_header_field() 的长度,以字节为单位。

program_packet_sequence_counter — program_packet_sequence_counter 字段为7 比特字段。它是一个任选的计数器,随着来自节目流或来自ISO/IEC 11172-1 流的每个连续PES 包或传输流中与单个节目定义有
关的PES 包而增加,提供类似于连续性计数器的功能(参阅2.4.3.2)。此字段允许适用于检索节目流的原始PES 包序列或原始ISO/IEC 11172-1 流的原始包序列的那些应用。该计数器到达其最大值后循环返回到0 值。
PES 包重发不会发生。因而, 在节目多路复用中, 没有任何两个连续的PES 包会有相同的program_packet_sequence_counter 值。

MPEG1_MPEG2_identifier — 1 比特标志,置于‘1’时指示此PES 包承载来自ISO/IEC 11172-1 流的信息。置于‘0’时,它指示此PES 包承载来自节目流的信息。

original_stuff_length — 此 6 比特字段规定在原始ITU-T H.222.0 建议书| ISO/IEC 13818-1 PES 包头或在原始ISO/IEC 11172-1 包头中所使用的填充字节数。

P-STD_buffer_scale — P-STD_buffer_scale 为1 比特字段,它的含义仅当节目流中包含此PES 包时才规定。它指示所使用的标度因子用于解释后续的P-STD_buffer_size 字段。若前导stream_id 指示音频流,则
P-STD 缓冲器标度字段必为‘0’值。若前导stream_id 指示视频流,则P-STD_buffer_scale 字段必为‘1’值。对于所有其他流类型,该值可为‘1’或为‘0’。

P-STD_buffer_size — P-STD_buffer_size 为13 比特的无符号整数,其含义仅当节目流中包含此PES包时才规定。它规定在P-STD中,输入缓冲器BSn 的尺寸。若STD_buffer_scale 为‘0’值,则P-STD_buffer_size
以128 字节为单位度量该缓冲器尺寸。若P-STD_buffer_scale 为‘1’值,则P-STD_buffer_size 以1024 字节为单位度量该缓冲器尺寸。

PES_extension_field_length — 此为 7 比特字段,指示PES 扩展字段中跟随此长度字段的直至并包括任何保留字节为止的数据长度,以字节为度量单位。

stream_id_extension_flag — 1 比特标志,当置为'0' 时表示 stream_id_extension 字段在PES 包头中,'1'值保留。

stream_id_extension — 在节目流中,stream_id_extension 规定基本流的类型和数量,如表 2-27 中stream_id_extension 的定义。在传输流中,stream_id_extension 可以置为正确描述如表 2-27 中规定的基本流
类型的任何有效值,在传输流中,基本流类型在如2.4.4 规定的节目特定信息中规定。注意,此字段用做上述定义的stream_id 的扩展。除非stream_id 的值是1111 1101,否则不使用此字段。


stuffing_byte — 此为等于‘1111 1111’的固定的8 比特值,它能够由编码器插入,例如为满足信道的要求。它为解码器所丢弃。在一个PES 包头中将存在长度不超过32 的填充字节。

PES_packet_data_byte — PES_packet_data_bytes 应是来自包stream_id 或PID 所指示的基本流的连贯数据字节。当基本流数据遵从ITU-T H.262 建议书| ISO/IEC 13818-2 或ISO/IEC 13818-3 时,该
PES_packet_data_bytes 必须把字节定位到本建议书|国际标准的字节上。该基本流的字节序必须保持。PES_packet_data_bytes 数N 由PES_packet_length 字段指定。N 应等于PES_packet_length 中所指定的值减去
PES 包长度字段的最后字节与该第一PES_packet_data_byte 间的字节数。
在private_stream_1, private_stream_2, ECM_stream 或 EMM_stream 的情况中,PES_packet_data_byte 字段的内容为用户自定义,今后将不由ITU-T|ISO/IEC 所指定。

padding_byte — 此为等于‘1111 1111’的固定8 比特值。它为解码器所丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值