Konfigurieren der Demux-Ausgabepins
Wenn der MPEG-2-Demux ein Datenpaket empfängt, muss er bestimmen, welcher Ausgabepin die Daten analysieren und ausliefern soll. Im Programmstreammodus ordnet demux Stream-IDs Ausgabepins zu. Im Transportstreammodus ordnet er PIDs Ausgabepins zu. Wenn z. B. im Transportstreammodus PID 0x31 Pin 0 zugeordnet ist, wird jedes TS-Paket mit dieser PID-Nummer an den Ausgabepin 0 geroutet. Wenn der Demux ein Paket empfängt, dessen Datenstrom-ID oder PID keinen Ausgabepins zugeordnet ist, verwirft es einfach das Paket.
Im Pullmodus erstellt der Demux automatisch Ausgabepins für die Audio- und Videostreams in der Datei und ordnet die Stream-IDs den Pins zu.
Im Pushmodus müssen die Ausgabepins von der Anwendung oder einem anderen Filter konfiguriert werden. Bei digitalen Fernsehquellen, die die Broadcasttreiberarchitektur (Broadcast Driver Architecture, BDA) verwenden, arbeitet der Netzwerkanbieterfilter mit dem TIF-Filter zusammen, um die Demux zu konfigurieren. Die Anwendung muss nichts tun. In anderen Szenarien muss die Anwendung die Ausgabepins konfigurieren.
Der Demux beginnt ohne Ausgabepins. Um einen Ausgabepin zu erstellen, rufen Sie die IMpeg2Demultiplexer::CreateOutputPin-Methode für den Filter auf. Diese Methode verwendet einen Medientyp und einen Pinnamen und gibt einen IPin-Zeiger zurück. Der Medientyp wird verwendet, wenn die Stecknadel eine Verbindung mit einem anderen Filter herstellt, in der Regel mit einem Decoder. Ein Beispiel ist der Abschnitt Using the Demux with Elementary Streams. Der Pinname kann einen anderen Namen haben, mit der Ausnahme, dass doppelte Pinnamen nicht zulässig sind.
Weisen Sie als Nächstes dem neuen Ausgabepin eine oder mehrere Stream-IDs oder PIDs zu. Fragen Sie für Programmstreams den Pin nach IMPEG2StreamIdMap ab, und rufen Sie IMPEG2StreamIdMap::MapStreamId auf. Fragen Sie für Transportstreams den Pin nach IMPEG2PIDMap ab, und rufen Sie IMPEG2PIDMap::MapPID auf.
Es gibt mehrere Möglichkeiten, wie der Demux TS-Pakete analysieren kann. Für jeden Ausgabepin wird die Analysemethode durch den MediaSampleContent-Parameter für die MapPID-Methode bestimmt.
| Wert | BESCHREIBUNG |
|---|---|
| MEDIA _ ELEMENTARY _ STREAM | Der Filter liefert PES-Nutzlasten. In diesem Modus entpackt der Filter die PES-Pakete, sodass der Downstreamfilter den ES-Bytestream ohne die PES-Paketheader empfängt. (Nur Audio- und Videostreams.) |
| MEDIA _ MPEG2 _ PSI | Der Filter stellt vollständige PSI-Abschnitte wie PAT-Tabellen, PMT-Tabellen, CAT-Tabellen usw. zur Verfügung. |
| _ _ MEDIENTRANSPORTNUTZLAST | Der Filter extrahiert die Nutzlasten aus den TS-Paketen und liefert sie ohne weitere Analyse. Bei elementaren Streams bedeutet dies, dass der Demux ganze PES-Pakete einschließlich der PES-Paketheader liefert. |
| _ _ MEDIENTRANSPORTPAKET | Der Filter liefert vollständige TS-Pakete. Der Demux leitet die TS-Pakete gemäß ihren PIDs weiter, untersucht oder verarbeiten die Pakete jedoch nicht anderweitig. Pakete mit Fehlern werden nicht herausgefiltert. Die Demux-Datei multiplext die Pakete nicht erneut, und der resultierende Ausgabestream ist kein konformer MPEG-2-Transportstream. Dieser Modus wird als Pass-Through-Modus bezeichnet. |
Für Programmstreams stellt die Demux immer PES-Nutzlasten zur Anwendung.