Packetized elementary stream
http://en.wikipedia.org/wiki/Packetized_elementary_stream
Packetized Elementary Stream (PES) is a specification in the MPEG-2 Part 1 (Systems) (ISO/IEC 13818-1) and ITU-T H.222.0[1][2] that defines carrying ofelementary streams (usually the output of an audio or video encoder) in packets within MPEG program stream and MPEG transport stream.[3] The elementary stream ispacketized by encapsulating sequential data bytes from the elementary stream inside PES packet headers.
A typical method of transmitting elementary stream data from a video or audio encoder is to first create PES packets from the elementary stream data and then to encapsulate these PES packets inside Transport Stream (TS) packets or Program Stream (PS) packets. The TS packets can then be multiplexed and transmitted using broadcasting techniques, such as those used in an ATSC and DVB.
Transport Streams and Program Streams are each logically constructed from PES packets. PES packets shall be used to convert between Transport Streams and Program Streams. In some cases the PES packets need not be modified when performing such conversions. PES packets may be much larger than the size of a Transport Stream packet.[3]
Contents[hide] |
PES packet header[edit]
| Name | Size | Description |
|---|---|---|
| Packet start code prefix | 3 bytes | 0x000001 |
| Stream id | 1 byte | Examples: Audio streams (0xC0-0xDF), Video streams (0xE0-0xEF) [4] [5] [6] [7] |
| Note: The above 4 bytes is called the 32 bit start code. | ||
| PES Packet length | 2 bytes | Can be zero. If the PES packet length is set to zero, the PES packet can be of any length. A value of zero for the PES packet length can be used only when the PES packet payload is a video elementary stream.[8] |
| Optional PES header | variable length (length >= 9) | not present in case of Padding stream & Private stream 2 (navigation data) |
| Stuffing bytes | variable length | |
| Data | See elementary stream. In the case of private streams the first byte of the payload is the sub-stream number. |
Optional PES header[edit]
| Name | Number of Bits | Description |
|---|---|---|
| Marker bits | 2 | 10 binary or 0x2 hex |
| Scrambling control | 2 | 00 implies not scrambled |
| Priority | 1 | |
| Data alignment indicator | 1 | 1 indicates that the PES packet header is immediately followed by the video start code or audio syncword |
| Copyright | 1 | 1 implies copyrighted |
| Original or Copy | 1 | 1 implies original |
| PTS DTS indicator | 2 | 11 = both present, 1 = only PTS |
| ESCR flag | 1 | |
| ES rate flag | 1 | |
| DSM trick mode flag | 1 | |
| Additional copy info flag | 1 | |
| CRC flag | 1 | |
| extension flag | 1 | |
| PES header length | 8 | gives the length of the remainder of the PES header |
| Optional fields | variable length | presence is determined by flag bits above |
| Stuffing Bytes | variable length | 0xff |
While above flags indicate that values are appended into variable length optional fields, they are not just simply written out. For example PTS (and DTS) is expanded from 33 bits to 5 bytes (40 bits). If only PTS is present, this is done by catenating 0010b, most significant 3 bits from PTS, 1, following next 15 bits, 1, rest 15 bits and 1. If both PTS and DTS are present, first 4 bits are 0011 and first 5 bits for DTS are 0001. Other appended bytes have similar but different encoding.

本文详细介绍了MPEG-2 Part 1 (ISO/IEC 13818-1) 和 ITU-T H.222.0标准中定义的Packetized Elementary Stream (PES) 规范。PES用于将音频或视频编码后的原始流数据打包成可以在MPEG程序流和传输流中传输的数据包。文章解释了PES数据包头的结构及其包含的字段,并提供了不同类型的流ID示例。
9303

被折叠的 条评论
为什么被折叠?



