Avatar
www.fr-an.de

Transport Stream

PES Paket

Das Paket ist wie folgt aufgebaut:

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

    1. N Byte: padding_byte, N = PES_packet_length

 

StreamID
Zulässige StreamIDs sind:

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

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

Fr_An - Letzte Änderung: 20. Oktober 2007
Counter
seit 28. Juli 2010