Projekte > MPEG-1/2 Video > 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

  • program_specific_information
    • 8 Bit: pointer_field (Nur wenn in diesem Paket eine Section beginnt.)
    • Soviele Bytes, wie im pointer_field angegeben sind.
    • program_map_section
      • 8 Bit: table_id
      • 1 Bit: section_syntax_indicator
      • 1 Bit: '0'
      • 2 Bit: reserved
      • 12 Bit: section_length
      • 16 Bit: program_number
      • 2 Bit: reserved
      • 5 Bit: version_number
      • 1 Bit: current_next_indicator
      • 8 Bit: section_number
      • 8 Bit: last_section_number
      • 3 Bit: reserved
      • 13 Bit: PCR_PID
      • 4 Bit: reserved
      • 12 Bit: program_info_length
      • program_info_length Byte: descriptor
      • N1 Streams (Beschreibungen der Elementarstreams)
        • 8 Bit: stream_type
        • 3 Bit: reserved
        • 13 Bit: elementary_PID
        • 4 Bit: reserved
        • 12 Bit: ES_info_length
          • ES_info_length Byte: descriptor
      • 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:

  • $00 - ITU-T | ISO/IEC Reserved
  • $01 - ISO/IEC 11172 Video
  • $02 - ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream
  • $03 - ISO/IEC 11172 Audio
  • $04 - ISO/IEC 13818-3 Audio
  • $05 - ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections
  • $06 - ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data
  • $07 - ISO/IEC 13522 MHEG
  • $08 - ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Annex A DSM-CC
  • $09 - ITU-T Rec. H.222.1
  • $0A - ISO/IEC 13818-6 type A
  • $0B - ISO/IEC 13818-6 type B
  • $0C - ISO/IEC 13818-6 type C
  • $0D - ISO/IEC 13818-6 type D
  • $0E - ITU-T Rec. H.222.0 | ISO/IEC 13818-1 auxiliary
  • $0F - ISO/IEC 13818-7 Audio with ADTS transport syntax
  • $10 - ISO/IEC 14496-2 Visual
  • $11 - ISO/IEC 14496-3 Audio with the LATM transport syntax as defined in ISO/IEC 14496-3 / AMD 1
  • $12 - ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets
  • $13 - ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC14496_sections.
  • $14 - ISO/IEC 13818-6 Synchronized Download Protocol
  • $15..$7F - ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved
  • $80..$FF - User Private

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