Konfigurieren der Demux-Ausgabepins

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Wenn der MPEG-2-Demux ein Datenpaket empfängt, muss ermittelt werden, welcher Ausgabenadel die Daten analysieren und übermitteln soll. Im Programmstreammodus ordnet der Demux Stream-IDs Ausgabepins zu. Im Transportstreammodus werden PIDs Ausgabepins zugeordnet. Wenn beispielsweise im Transportstreammodus PID 0x31 Pin 0 zugeordnet ist, wird jedes TS-Paket mit dieser PID-Nummer an Ausgabepin 0 weitergeleitet. Wenn der Demux ein Paket empfängt, dessen Stream-ID oder PID keinem Ausgabepin zugeordnet ist, verwirft es einfach das Paket.

Im Pullmodus erstellt der Demux automatisch Ausgabepins für die Audio- und Videodatenströme 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 Broadcast Driver Architecture (BDA) verwenden, arbeitet der Netzwerkanbieterfilter mit dem TIF-Filter zusammen, um den Demux zu konfigurieren. Die Anwendung muss nichts tun. In anderen Szenarien muss die Anwendung die Ausgabepins konfigurieren.

Der Demux beginnt ohne Ausgabenadeln. Um einen Ausgabenadel zu erstellen, rufen Sie die IMpeg2Demultiplexer::CreateOutputPin-Methode für den Filter auf. Diese Methode akzeptiert einen Medientyp und einen Pinnamen und gibt einen IPin-Zeiger zurück. Der Medientyp wird verwendet, wenn der Pin eine Verbindung mit einem anderen Filter herstellt, in der Regel einem Decoder. Ein Beispiel ist der Abschnitt Using the Demux with Elementary Streams ( Using the Demux with Elementary Streams). Der Pinname kann beliebig sein, mit dem Unterschied, dass doppelte Pinnamen nicht zulässig sind.

Weisen Sie als Nächstes dem neuen Ausgabenadel eine oder mehrere Stream-IDs oder PIDs zu. Für Programmstreams fragen Sie die Pin für IMPEG2StreamIdMap ab, und rufen Sie IMPEG2StreamIdMap::MapStreamId auf. Fragen Sie für Transportstreams den Pin für IMPEG2PIDMap ab, und rufen Sie IMPEG2PIDMap::MapPID auf.

Es gibt mehrere Möglichkeiten, wie der Demux TS-Pakete analysieren kann. Für jeden Ausgabenadel wird die Analysemethode durch den MediaSampleContent-Parameter auf die MapPID-Methode bestimmt.

Wert BESCHREIBUNG
MEDIA_ELEMENTARY_STREAM Der Filter liefert PES-Nutzlasten. In diesem Modus entpacket 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 liefert vollständige PSI-Abschnitte, z. B. PAT-Tabellen, PMT-Tabellen, CAT-Tabellen usw.
MEDIA_TRANSPORT_PAYLOAD Der Filter extrahiert die Nutzlasten aus den TS-Paketen und übermittelt sie ohne weitere Analyse. Für elementare Datenströme bedeutet dies, dass der Demux ganze PES-Pakete einschließlich der PES-Paketheader liefert.
MEDIA_TRANSPORT_PACKET Der Filter liefert ganze TS-Pakete. Der Demux leitet die TS-Pakete gemäß ihren PIDs weiter, untersucht oder verarbeitet die Pakete jedoch nicht anderweitig. Pakete mit Fehlern werden nicht herausgefiltert. Der Demux multiplext die Pakete nicht erneut, und der resultierende Ausgabedatenstrom ist kein konformer MPEG-2-Transportstream. Dieser Modus wird als Passthroughmodus bezeichnet.

 

Bei Programmdatenströmen liefert der Demux immer PES-Nutzlasten.

Verwenden des MPEG-2-Demultiplexers