Übersicht über MPEG-2-Systeme

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Dieser Abschnitt bietet einen allgemeinen, nicht technischen Überblick über die MPEG-2 Systems-Ebene. MPEG-2 Systems ist der Standard, der definiert, wie Audio- und Videostreams in MPEG-2 multiplext werden.

Elementare Streams

MPEG-2-Multiplexing beginnt mit einem oder mehreren Bytestreams, die als Elementardatenströme (ES) bezeichnet werden und Video-, Audio- oder andere Daten enthalten. Ein Video-ES enthält z. B. komprimierte Videoframes sowie Sequenzheader, GOP-Header (Group-of-Picture) und alles, was der Decoder zum Decodieren des Datenstroms benötigt. Die Systemebene definiert nicht den Inhalt des ES-Bytestreams.

Ein elementarer Datenstrom wird in Pakete aufgeteilt, die einen paketisierten elementaren Datenstrom (Packetized Elementary Stream , PES) bilden. PES-Pakete haben eine variable Länge. Der Inhalt des Pakets wird als Nutzlast bezeichnet. Jedes PES-Paket enthält auch einen Header. Der Multiplexer weist jedem PES eine 1-Byte-Stream-ID zu. Einzelne PES-Pakete werden durch die Stream-ID im Paketheader identifiziert. Für Audiostreams hat die Stream-ID das Format 110xxxxx. Für Video hat die Stream-ID das Format 1110jjjj.

Der MPEG-2-Standard definiert zwei Möglichkeiten, paketierte elementare Datenströme bereitzustellen: Programmdatenströme und Transportdatenströme.

Programmstreams

Programmstreams sind für Umgebungen konzipiert, die relativ fehlerfrei sind, z. B. lokalen Dateispeicher. In einem Programmstream werden die PES-Pakete multiplext und in Einheiten organisiert, die als Packs bezeichnet werden. Alle PES-Streams in einem Programmdatenstrom werden mit derselben Uhr synchronisiert.

Transportstreams

Transportstreams (TS) sind für unzuverlässige oder fehleranfällige Umgebungen wie Netzwerkübertragungen konzipiert. Außerdem können sie mehrere Programme enthalten, die mit verschiedenen Uhren synchronisiert werden. Ein Transportstream fügt eine zweite Ebene der Paketisierung hinzu– die PES-Datenströme werden in Transportstreampakete verpackt, die eine feste Größe von 188 Bytes pro Paket haben. TS-Pakete können auch Programminformationsdatenströme enthalten, die im folgenden Abschnitt beschrieben werden.

Jedes TS-Paket verfügt über einen 4-Byte-Header sowie ein optionales Anpassungsfeld, das zusätzliche Headerinformationen enthält. Der Multiplexer weist jedem PES-Stream oder Programminformationsdatenstrom eine Programm-ID (PID) zu. Die PIDs werden verwendet, um die TS-Pakete zu identifizieren, ähnlich wie Stream-IDs PES-Pakete identifizieren. (Wenn ein Transportdatenstrom mehrere Programme enthält, sind die Stream-IDs möglicherweise nicht eindeutig, aber die PID-Zuweisungen sind innerhalb des Transportdatenstroms eindeutig.)

Programmspezifische Informationen

Da ein Transportstream mehrere Programme enthalten kann, muss es eine Möglichkeit geben, die verschiedenen PES-Pakete den Programmen zuzuordnen, zu denen sie gehören. Dies wird mithilfe von Tabellen erreicht, die die Programmstreams identifizieren. Zusammen werden diese Daten als programmspezifische Informationen (PSI) bezeichnet. Die PSI-Daten werden wie die PES-Daten in TS-Paketen übertragen. Es gibt verschiedene Arten von PSI-Daten, einschließlich:

  • Program Association Table (PAT). Die PAT wird immer PID-0x000 zugewiesen. Jeder Eintrag im PAT ist eine PID, die die PMT-Pakete für dieses Programm identifiziert (siehe nächstes Element).

  • Programmzuordnungstabelle (Program Map Table, PMT). Jedes PMT definiert ein Programm. Das PMT enthält eine Liste von Streams. Jeder Tabelleneintrag enthält die PID für diesen Stream sowie einen Code, der den Streamtyp identifiziert. ISO/IEC 13818-1 definiert einige Standardstreamtypen; Eine abgekürzte Liste wird in der folgenden Tabelle angezeigt.

    stream_type BESCHREIBUNG
    0x01 MPEG-1-Video
    0x02 MPEG-2-Video
    0x03 MPEG-1-Audio
    0x04 MPEG-2-Audio
    0x80 - 0xFF Privater Benutzer

     

    Andere Standards, die auf MPEG-2 basieren, z. B. ATSC, können zusätzliche Streamtypen im Bereich "User Private" definieren. ATSC definiert beispielsweise 0x81 als Dolby AC-3-Audio.

  • Tabellen für bedingten Zugriff (CAT)

  • Netzwerkidentifikationstabellen (NIT)

MPEG-2-Unterstützung in DirectShow