Projekte > MPEG-1/2 Video > Transport Stream

SDT - Service Description Table

Die Service Description Table ist in der ETSI EN 300 468 definert. Es ist eine europäische Norm. Im Dezember 2009 wurde Version 1.11.1 veröffentlicht. Die SDT wird in Transportstreampaketen in der Regel über die PID $0011 identifiziert. Die Tabelle kann über mehrere Pakete verteilt und darf maximal 1024 Byte lang sein.

Der Aufbau

Der Beginn einer Tabelle ist dadurch gekennzeichnet, dass der payload_unit_start_indicator im Transport Stream Header auf '1' gesetzt ist. In der Tabelle ist angegeben, auf wieviele Sektionen die Tabelle verteilt ist. In den Folgesektionen wird die Tabelle einfach fortgesetzt.

  • program_specific_information
    • 8 Bit: pointer_field
    • Soviele Bytes, wie im pointer_field angegeben sind.
    • event_information_section
      • 8 Bit: table_id
      • 1 Bit: section_syntax_indicator
      • 1 Bit: reserved_future_use
      • 2 Bit: reserved
      • 12 Bit: section_length
      • 16 Bit: transport_stream_id
      • 2 Bit: reserved
      • 5 Bit: version_number
      • 1 Bit: current_next_indicator
      • 8 Bit: section_number
      • 8 Bit: last_section_number
      • 16 Bit: original_network_id
      • 8 Bit: reserved_future_use
      • section_length - 12 Byte: Descriptorliste
        • 16 Bit: service_id
        • 6 Bit: reserved_future_use
        • 1 Bit: EIT_schedule_flag
        • 1 Bit: EIT_present_following_flag
        • 3 Bit: running_status
        • 1 Bit: free_CA_mode
        • 12 Bit: descriptors_loop_length
        • descriptors_loop_length Byte: Descriptoren
          • descriptors
      • 32 Bit: CRC_32

Der Kopf

table_id: Die ID der Tabelle kann folgende Werte haben:

  • $42: Aktueller Transportstream. Die table_id extension (transport_stream_id) und original_network_id entsprechen denen des aktuellen Transport Streams.
  • $46: Anderer Transportstream. Es wird sich auf einen anderen Transport Stream bezogen.

section_syntax_indicator: Das Bit ist auf '1' gesetzt.

section_length: Dies ist die verbleibende Länge der Sektion ab dem folgenden Byte. Die Sektion kann über mehrerere Pakete verteilt sein. Die Länge beträgt maximal 1021 Byte.

transport_stream_id: Diese ID dient der Unterscheidung der Streams.

version_number: Das ist die Versionsnummer der Information. 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.

current_next_indicator: Er gibt an, ob die Tabelle anwendbar ist. Ist der Wert 0 muss die nächste Tabelle angewendet werden.

section_number: Die Sektionen sind nummeriert. Die Nummer wird mit jeder weiteren Sektion mit der gleichen table_id, service_id, transport_stream_id und original_network_id um 1 erhöht.

last_section_number: Die Nummer der letzten Sektion.

original_network_id: Diese ID dient der Unterscheidung im Originalsystem.

Die Serviceliste

Aus der section_length abzüglich der zwölf Byte für die Bytes zwischen der section_length und der Serviceliste sowie für den CRC_32 ergibt sich die Länge derselben. Die Anzahl der Services ergibt dann beim Lesen.

sercive_id: Die ID dient als Label für den Service. Sie entspricht der service_id in der Event Information Table.

EIT_schedule_flag: Dieses Flag gibt an, ob im aktuellen Transport Stream für diesen Service Event Information Table mit Schedule Sub_table enthalten sind.

EIT_present_following_flag: Dieses Flag gibt an, ob im aktuellen Transport Stream für diesen Service Event Information Table mit Present/Following Sub_table enthalten sind.

running_status: Die Werte sind:

  • 0 - Undefiniert.
  • 1 - Läuft nicht.
  • 2 - Beginnt in wenigen Sekunden (Zum Beispiel für Videoaufnahmen).
  • 3 - Pausiert.
  • 4 - Läuft.
  • 5 - Service nicht auf Sendung.
  • 6, 7 - reserviert für zukünftige Nutzung.

free_CA_mode: Ist das Flag gesetzt, wird der Zugriff auf mindestens einen Stream durch ein CA-System kontrolliert.

descriptors_loop_length: Dies ist die Länge der folgenden Descriptorliste.

Die Descriptorliste

Die Länge aller Descriptoren beträgt descriptors_loop_length Byte. Die möglichen Descriptoren ergeben sich aus der Tabelle. Dies sind:

  • $42 - stuffing_descriptor
  • $47 - bouquet_name_descriptor
  • $48 - service_descriptor
  • $49 - country_availability_descriptor
  • $4A - linkage_descriptor
  • $4B - NVOD_reference_descriptor
  • $4C - time_shifted_service_descriptor
  • $50 - component_descriptor
  • $51 - mosaic_descriptor
  • $53 - CA_identifier_desriptor
  • $57 - telephone_descriptor
  • $5D - multilingual_service_name_descriptor
  • $5F - private_data_specifier_descriptor
  • $64 - data_broadcast_descriptor
  • $6E - announcement_support_descriptor
  • $71 - service_identifier_descriptor
  • $72 - service_availibility_descriptor
  • $73 - default_authority_descriptor
  • $7D - XAIT_location_descriptor
  • $7F - extension_descriptor