Avatar
www.fr-an.de

Transport Stream

PMT - Program Map Table

Die Program Map Table ist in der ISO/IEC 13818-1 definiert. Sie ist an keine bestimmte PID gebunden. Vielmehr sind die PIDs, in welcher PMT enthalten sind, als program_map_PID in der Programmnummernliste der PAT angegeben. Die Table kann nicht über mehrere Sektion verteilt werden.

 

Der Aufbau

  1. program_specific_information
    1. 8 Bit: pointer_field (Nur wenn in diesem Paket eine Section beginnt.)
    2. Soviele Bytes, wie im pointer_field angegeben sind.
    3. program_map_section
      1. 8 Bit: table_id
      2. 1 Bit: section_syntax_indicator
      3. 1 Bit: '0'
      4. 2 Bit: reserved
      5. 12 Bit: section_length
      6. 16 Bit: program_number
      7. 2 Bit: reserved
      8. 5 Bit: version_number
      9. 1 Bit: current_next_indicator
      10. 8 Bit: section_number
      11. 8 Bit: last_section_number
      12. 3 Bit: reserved
      13. 13 Bit: PCR_PID
      14. 4 Bit: reserved
      15. 12 Bit: program_info_length
      16. program_info_length Byte: descriptor
      17. N1 Streams (Beschreibungen der Elementarstreams)
        1. 8 Bit: stream_type
        2. 3 Bit: reserved
        3. 13 Bit: elementary_PID
        4. 4 Bit: reserved
        5. 12 Bit: ES_info_length
          1. ES_info_length Byte: descriptor
      18. 32 Bit: CRC_32

 

Program Specific Information

pointer_field: Das pointer_field ist nur vorhanden, wenn in diesem Paket eine Sektion beginnt. Ist dies der Fall, ist der Payload Start Indicator des Transport Stream Headers auf '1' gesetzt. Das pointer_field gibt dann an, ab welchem Byte nach dem pointer_field die neue Sektion beginnt. Beginnt keine neue Sektion ist der Payload Start Indicator auf '0' gesetzt.

 

Program Map Section

table_id: Ist die ID der Tabelle. Sie muss den Wert $02 besitzen.

section_syntax_indicator: Das Bit ist auf '1' gesetzt.

section_length: Dies ist Länge der Sektion. Sie gibt die verbleibende Länge ab dem folgenden Byte einschließlich der Kontrollsumme CRC32 an. Die Sektion kann über mehrerere Pakete verteilt sein, darf jedoch nicht länger als 1021 Byte sein. Die ersten beiden der zwölf Bit sind immer auf '0' gesetzt.

program_number: Gibt die Programmnummer an, auf welches die program_map_PID anzuwenden ist. Eine Programmdefinition darf nur eine TS_program_map_section enthalten. Eine Definition ist nie länger als 1016 Byte.

version_number: Das ist die Versionsnummer der Tabelle. Sie beginnt mit 0 und wird bei einer Änderung der Information um 1 erhöht. Ist die 31 erreicht, beginnt die Zählung wieder bei 0. Hat der current_next_indicator den Wert '1', dann ist dies die Version der gerade anzuwendenen program association table. Ist der Wert '0', ist es die Version der nächsten anzuwendenen program association table.

current_next_indicator: Er gibt an, ob die Tabelle anwendbar ist. Ist der Wert 0, ist es die nächste anzuwendene Tabelle.

section_number: Die Sektionsnummer ist immer $00.

last_section_number: Die Nummer der letzten Sektion ist hier immer $00.

PCR_PID: Gibt die PID der Pakete an, welche die für die festgelegte Programmnummer gelten. Wenn kein PCR mit einer Programmdefinition für einen privaten Stream verbunden ist, ist der Wert $1FFF.

program_info_length: Die ersten beiden Bits sind '00'. Der Wert gibt an, wie lang der unmittelbar auf diesen Wert folgende Descriptor ist.

stream_type: Der Wert gibt an, welchen Typ die Pakete mit der PID enthalten, welche unter elementary_PID angegeben ist. Möglich sind folgende Werte:

elementary_PID: Gibt die PID der Pakete an, welche das hiermit verbundene Programmelement enthält.

ES_info_length: Die ersten beiden Bits sind '00'. Der Wert gibt die Länge des unmittelbar folgenden Descriptors an.

CRC_32: Dieser Wert ist für den Decoder bestimmt.

 

Testprogramm

Test 5: Das Testprogramm scannt einen Transport Stream. Er zeigt die Stream Header, Adaptationsfelder, Program Association Table und Program Map Table.

TSTest5 (237 kb), MD5 (1 kb).
Stand: 19. Februar 2010

Fr_An - Letzte Änderung: 20. Februar 2010

seit 28. Juli 2010