Projekte > MPEG-1/2 Video > Transport Stream

PES Paket

Das Paket ist wie folgt aufgebaut:

  • 3 Byte: PACKET_START_CODE_PREFIX = $000001
  • 1 Byte: StreamID
    • $BC = PROGRAM_STREAM_MAP
    • $BD = PRIVATE STREAM 1
    • $BE = PADDING_STREAM
    • $BF = PRIVATE_STREAM_2
    • $C0 bis $DF (110x xxxx) = AUDIO
    • $E0 bis $EF (1110 xxxx) = VIDEO
    • $F0 = ECM
    • $F1 = EMM
    • $F2 = DSM_CC_Stream
    • $F3 = ISO/IEC_13522_Stream
    • $F4 bis $FE = Reservierte Daten Streams
    • $FF = PROGRAMM_STREAM_DIRECTORY
  • 2 Byte: PES Paketlänge
  • Wenn die StreamID keinen der folgenden Werte beinhaltet:
    $BC = PROGRAM_STREAM_MAP
    $BE = PADDING_STREAM
    $BF = PRIVATE_STREAM_2
    $F0 = ECM
    $F1 = EMM
    $FF = PROGRAMM_STREAM_DIRECTORY
    • 2 Bit: Müssen den Wert $10 besitzen
    • 2 Bit: PES_scrambling_control
    • 1 Bit: PES_priority
    • 1 Bit: data_alignment_indicator
    • 1 Bit: copyright
    • 1 Bit: original_or_copy
    • 2 Bit: PTS_DTS_flags (Presentation Time Stamp, Decoding Time Stamp)
    • 1 Bit: ESCR_flag
    • 1 Bit: ES_rate_flag
    • 1 Bit: DSM_trick_mode_flag
    • 1 Bit: additional_copy_info_flag
    • 1 Bit: PES_CRC_flag
    • 1 Bit: PES_extension_flag
    • 8 Bit: PES_header_data_length
    • Wenn die PTS_DTS_flags den Wert $10 besitzen
      • 4 Bit: Müssen den Wert $0010 besitzen
      • 3 Bit: PTS [32.30]
      • 1 Bit: marker_bit
      • 15 Bit: PTS [29.15]
      • 1 Bit: marker_bit
      • 15 Bit: PTS [14..0]
      • 1 Bit: marker_bit
    • Wenn die PTS_DTS_flags den Wert $11 besitzen
      • 4 Bit: Müssen den Wert $0011 besitzen
      • 3 Bit: PTS [32..30]
      • 1 Bit: marker_bit
      • 15 Bit: PTS [29..15]
      • 1 Bit: marker_bit
      • 15 Bit: PTS [14..0]
      • 1 Bit: marker_bit
      • 4 Bit: Müssen den Wert $0001 besitzen
      • 3 Bit: DTS [32..30]
      • 1 Bit: marker_bit
      • 15 Bit: DTS [29..15]
      • 1 Bit: marker_bit
      • 15 Bit: DTS [14..0]
      • 1 Bit: marker_bit
    • Wenn das ESCR_flag den Wert $1 besitzt
      • 2 Bit: reserved
      • 3 Bit: ESCR_base[32..30]
      • 1 Bit: marker_bit
      • 15 Bit: ESCR_base[29..15]
      • 1 Bit: marker_bit
      • 15 Bit: ESCR_base[14..0]
      • 1 Bit: marker_bit
      • 9 Bit: ESCR_extension
      • 1 bit: marker_bit
    • Wenn das ES_rate_flag den Wert $1 besitzt
      • 1 Bit: marker_bit
      • 22 Bit: ES_rate 22
      • 1 Bit: marker_bit
    • Wenn das DSM_trick_mode_flag den Wert $1 besitzt
      • 3 Bit: trick_mode_control
      • Wenn der trick_mode_control den Wert $000 besitzt
        • 2 Bit: field_id
        • 1 Bit: intra_slice_refresh
        • 2 bit: frequency_truncation
      • Wenn der trick_mode_control den Wert $001 besitzt
        • 5 Bit: field_rep_cntrl
      • Wenn der trick_mode_control den Wert $010 besitzt
        • 2 Bit: field_id
        • 3 Bit: reserved
      • Wenn der trick_mode_control den Wert $011 besitzt
        • 2 Bit: field_id
        • 1 Bit: intra_slice_refresh
        • 2 Bit: frequency_truncation
      • Wenn der trick_mode_control den Wert $100 besitzt
        • 5 Bit: field_rep_cntrl
    • Wenn der additional_copy_info_flag den Wert $1 besitzt
      • 1 Bit: marker_bit
      • 7 Bit: additional_copy_info
    • Wenn der PES_CRC_flag den Wert $1 besitzt
      • 2 Byte: previous_PES_packet_CRC
    • Wenn der PES_extension_flag den Wert $1 besitzt
      • 1 Bit: PES_private_data_flag
      • 1 Bit: pack_header_field_flag
      • 1 Bit: program_packet_sequence_counter_flag
      • 1 Bit: P-STD_buffer_flag
      • 3 Bit: reserved
      • 1 Bit: PES_extension_flag_2
      • Wenn der PES_private_data_flag den Wert $1 besitzt
        • 128 Bit: PES_private_data
      • Wenn der pack_header_field_flag den Wert $1 besitzt
        • 8 Bit: pack_field_length 8 uimsbf
      • Wenn der program_packet_sequence_counter_flag den Wert $1 besitzt
        • 1 Bit: marker_bit
        • 7 Bit: program_packet_sequence_counter
        • 1 Bit: marker_bit
        • 1 Bit: MPEG1_MPEG2_identifier
        • 6 Bit: original_stuff_length
      • Wenn der P-STD_buffer_flag den Wert $1 besitzt
        • 2 Bit: Müssen den Wert $01 besitzen.
        • 1 Bit: P-STD_buffer_scale
        • 13 Bit: P-STD_buffer_size
      • Wenn der PES_extension_flag_2 den Wert $1 besitzt
        • 1 Bit: marker_bit
        • 7 Bit: PES_extension_field_length
        • N Byte: Reserviert. N = PES_extension_field_length
    • N1 Byte: stuffing_byte
    • N2 Byte: PES_packet_data_byte
       
  • Wenn die StreamID einen der folgenden Werte besitzt:
    $BC = PROGRAM_STREAM_MAP
    $BF = PRIVATE_STREAM_2
    $F0 = ECM
    $F1 = EMM
    $FF = PROGRAMM_STREAM_DIRECTORY
    • N Byte: PES_packet_data_byte, N = PES_packet_length
       
  • Wenn die StreamID der Wert besitzt:
    $BE = PADDING_STREAM

    • N Byte: padding_byte, N = PES_packet_length

StreamID
Zulässige StreamIDs sind:

  • $BC = PROGRAM_STREAM_MAP
  • $BD = PRIVATE STREAM 1 (genauso aufgebaut wie Audio und Video Streams)
  • $BE = PADDING_STREAM
  • $BF = PRIVATE_STREAM_2
  • $C0 bis $DF (110x xxxx) = ISO/IEC 13818-3 or ISO/IEC 11172-3 AUDIO, x xxxx ist die Streamnummer
  • $E0 bis $EF (1110 xxxx) = ITU-T Rec. H.262 | ISO/IEC 13818-2 or ISO/IEC 11172-2 VIDEO, xxxx ist die Streamnummer
  • $F0 = ECM
  • $F1 = EMM
  • $F2 = DSM_CC_Stream
  • $F3 = ISO/IEC_13522_Stream
  • $F4 bis $FE = Reservierte Daten Streams
  • $FF = PROGRAMM_STREAM_DIRECTORY

PES Paketlänge
Gibt die Länge des auf den Header folgenden Pakets an.