Projekte > MPEG-1/2 Video > Transport Stream

Adaptationsfeld

Das Feld ist wie folgt aufgebaut:

  • 1 Byte: Länge des Adaptationfeldes
  • Ist die Länge > 0
    • 1 Bit: discontinuity_indicator
    • 1 Bit: random_access_indicator
    • 1 Bit: elementary_stream_priority_indicator
    • 1 Bit: PCR_flag
    • 1 Bit: OPCR_flag
    • 1 Bit: splicing_point_flag
    • 1 Bit: transport_private_data_flag
    • 1 Bit: adaptation_field_extension_flag
    • Wenn das PCR_flag den Wert $1 besitzt
      • 33 Bit - program_clock_reference_base
      • 6 Bit - reserved
      • 9 Bit - program_clock_reference_extension
    • Wenn das OPCR_flag den Wert $1 besitzt
      • 33 Bit - original_program_clock_reference_base
      • 6 Bit - reserved
      • 9 Bit - original_program_clock_reference_extension
    • Wenn das splicing_point_flag den Wert $1 besitzt
      • 8 Bit - splice_countdown
    • Wenn das transport_private_data_flag den Wert $1 besitzt
      • 8 Bit - transport_private_data_length
      • N Byte: private_data_byte
        Bis transport_private_data_length erreicht ist
    • Wenn das adaptation_field_extension_flag den Wert $1 besitzt
      • 8 Bit: adaptation_field_extension_length
      • 1 Bit: ltw_flag
      • 1 Bit: piecewise_rate_flag
      • 1 Bit: seamless_splice_flag
      • 5 Bit: reserved
      • Wenn das ltw_flag den Wert $1 besitzt
        • 1 Bit: ltw_valid_flag
        • 15 Bit: ltw_offset
      • Wenn das piecewise_rate_flag den Wert $1 besitzt
        • 2 Bit: reserved
        • 22 Bit: piecewise_rate
      • Wenn das seamless_splice_flag den Wert $1 besitzt
        • 4 Bit: splice_type
        • 3 Bit: DTS_next_au[32..30]
        • 1 Bit: marker_bit
        • 15 Bit: DTS_next_au[29..15]
        • 1 Bit: marker_bit
        • 15 Bit: DTS_next_au[14..0]
        • 1 Bit: marker_bit
      • N Byte: reserviert
        Bis adaptation_field_extension_length erreicht ist.
    • N Byte: stuffing_byte
      Bis die Länge des Adaptationsfeldes erreicht ist.

discontinuity_indicator
Gibt an, ob der Stream kontinuierlich fortgesetzt wird. Bei einer Diskontinuität ist in dem Paket eine Program Clock Reference enthalten.

random_access_indicator
Gibt an, ob in dem Paket ein Zugangspunkt zu dem im PID abgegebeben Stream enthalten ist. Für Video wäre dies das erste Byte eines Sequenz, für Audio das erste Byte eines Frame Headers.

elementary_stream_priority_indicator Gibt die Priorität des Payloads in Bezug auf andere Payloads mit der selben PID an.

PCR_flag
Gibt an, ob eine Program Clock Reference enthalten ist.

PCR: program_clock_reference_base und program_clock_reference_extension
Die Base wird in 90 kHz Zyklen und die Extension in 27 MHz Zyklen angegeben. Somit ergibt sich PCR = PCR Base * 300 + PCR Extension.

OPCR_flag
Gibt an, ob eine Original Program Clock Reference enthalten ist. Voraussetzung ist, das eine PCR enthalten ist.

OPCR:
Der OPCR unterstützt die Rekonstruktuion eines Einzeltransportstream aus einem anderen Transportstream und wird vom Decoder ignoriert. Im rekonstruierten Stream stellt er die Kopie des PCR dar. Die Base wird in 90 kHz Zyklen und die Extension in 27 MHz Zyklen angegeben. Somit ergibt sich OPCR = OPCR Base * 300 + OPCR Extension.

splicing_point_flag
Gibt an, ob ein splice_countdown Feld vorhanden ist.

splice_countdown
Der Wert kann positiv oder negativ sein. Ein positiver Wert gibt an, wieviele Pakete mit der selben PID bis zum nächsten splicing point folgen.

transport_private_data_flag
Gibt an, ob private_data bytes enthalten sind.

private_data
Sind nicht spezifiziert.

adaptation_field_extension_flag
Gibt an, ob eine adaptation field extension enthalten ist.

adaptation_field_extension_length
Gibt die Länge der Extension in Byte an.

ltw_flag
legal_time_window_flag - Gibt an, ob ein ltw_offset Feld enthalten ist.

ltw_valid_flag
Gibt an, ob der Wert des folgenden ltw_offset Feldes gültig ist.

ltw_offset
Der Offset wird in 90 kHz Zyklen angegeben. Er hat etwas mit Buffern zu tun.

piecewise_rate_flag
Gibt an, ob ein piecewise_rate Feld entalten ist.

piecewise_rate
Gibt die Bitrate aller Transport Pakete mit dieser PID an. Der Wert gilt bis zur Angabe eines neuen Wertes. Der Wert ist in 50 Bytes je Sekunde angegeben.

seamless_splice_flag
Dieses Flag ist nur unter bestimmten Bedingungen gesetzt. Dabei spielen die Access Unit und der Buffer eine Rolle.

splice_type
Es gibt vier Typen, mit welchen unter Berücksichtigung von Profile und Level der splice_decoding_delay und die max_splice_rate bestimmt werden.

DTS_next_au
Decoding Time Stamp der nächsten Access Unit eines unspliced oder seamless spliced Stream.

Testprogramm

Test 3: Das Testprogramm zeigt die Stream Header und eventuell vorhandene Adaptationsfelder an.

TSTest3 (171 kb), MD5 (1 kb).
Stand: 13. Februar 2010