11. Kleine Filterkunde



Wenn der Empfang einwandfrei ist, der DVBViewer aber trotzdem nicht die erwarteten Ergebnisse bringt, liegt dies meist daran, dass wichtige Komponenten für die Audio- und Video-Wiedergabe im System fehlen. Oder andere Programme haben welche installiert, die sich nicht mit dem DVBViewer vertragen. Wer sich damit befassen muss, weil irgendwas nicht funktioniert, oder hofft, durch Austausch von Komponenten noch bessere Ergebnisse zu erzielen, oder sich einfach für die Angelegenheit interessiert, findet im Folgenden eine kleine Einführung in das DirectShow-System.

Inhaltan den Anfang ans Ende vorheriges Kapitel



Was sind DirectShow-Filter?

Microsoft stellt mit DirectShow (einem Bestandteil von DirectX) eine Multimedia-Schnittstelle zur Verfügung, die alle diesbezüglichen Programme benutzen. DirectShow-Komponenten – nicht immer zutreffend „Filter“ genannt – werden im System registriert und stehen danach allen Programmen zur Verfügung. Es handelt sich dabei um Dateien mit der Endung .ax (manchmal auch .dll). An der Verarbeitung der Audio- und Video-Datenströme ist eine ganze Kette solcher Filter beteiligt, wobei jeder eine bestimmte Aufgabe übernimmt. Dem DVBViewer – oder auch Mediaplayern allgemein – obliegt dann die Verwaltung der Filterkette, mit der Verarbeitung der Datenströme haben sie nur indirekt etwas zu tun.

Standardmäßig wird die Zusammenstellung der benötigten Filter dem DirectShow-Filtermanager übertragen. Soll z.B. eine Videodatei abgespielt werden, wird der Manager beauftragt, die nötigen Filter zu ermitteln und die Kette – den so genannten „Filtergraphen“ - aufzubauen. Da diese Automatik nicht immer zum gewünschten Ergebnis führt, können Programme den Prozess beeinflussen, also z.B. vorgeben, dass bestimmte Filter auf jeden Fall verwendet werden. Ansonsten nimmt der Manager den „besten“ Filter, den er im System für die Aufgabe findet. Die Entscheidung trifft er aufgrund eines jedem Filter zugeordneten Wertes, der „Merit“ genannt wird. Da der Merit jedoch vom Hersteller des Filters festgelegt wird, führt dieses System aufgrund gewisser Übertreibungen nicht immer zu einem optimalen Ergebnis, wie man sich denken kann... Glücklicherweise gibt es jedoch Möglichkeiten, den Merit zu ändern – dazu später mehr.

Um allen Eventualitäten gerecht zu werden, bietet der DVBViewer im Optionenfenster unter „Erweitert“ und „DirectShow Filter“ eine ganze Reihe Möglichkeiten, den Filtergraphen zu beeinflussen. Der folgende Abschnitt vermittelt einen Überblick über die vom DVBViewer benutzten Filtergraphen, über die darin enthaltenen Komponenten und die Variationsmöglichkeiten.

Inhaltan den Anfang ans Ende vorheriges Kapitel



Welche Filter spielen mit?

Den Anfang bildet ein so genannter Quellfilter oder auch Renderkern, der den Datenstrom zur Verfügung stellt (also Audio, Video und gegebenenfalls auch Teletext und EPG). Für den Fernsehempfang gibt es zwei zur Auswahl, die die Daten von den SkyStar-Treibern übernehmen: Der SkyStar 4.2 Renderkern stammt von B2C2, dem Hersteller der SkyStar2-Chips und wird von TechniSat mitgeliefert – das ist die Datei Sky2PCAVSrc.ax in Ordner Programme\TechniSat\bin.

Welchen Quellfilter der DVBViewer benutzt, lässt sich unter Einstellungen/ Optionen/ Erweitert wählen. Die zusätzlichen Optionen „SkyStar kompatibler Renderer“ und „SkyStar 4.14 Renderer“ beziehen sich nur auf alternative Schnittstellen zum SkyStar-Quellfilter, die bei Unverträglichkeiten mit älteren Versionen zum Einsatz kommen können.

Bei Video-Wiedergabe ist der Quellfilter eine Standard-Systemkomponente, die einfach die betreffende Datei ausliest. Auch diese lässt sich im DVBViewer unter „Renderkern“ auswählen, worauf sich prompt ein Fenster für die Dateiauswahl öffnet.

Die nächste Station im Filtergraphen bilden bei Fernsehempfang Dump-Filter, die dem DVBViewer das Abgreifen der Audio- und Video-Daten zwecks Aufnahme sowie der Teletext- und EPG-Daten erlauben. Diese befinden sich alle in der Datei RLDumper.ax im Ordner DVBViewer/Filters. Das folgende Bild zeigt den vollständigen Graphen für den Fernsehempfang mit SkyStar 4.2 Quellfilter (0001):

Bei Video-Wiedergabe folgt dagegen auf den Quellfilter ein Demultiplexer (auch Demuxer oder Splitter), der die Aufgabe hat, Video- und Audio-Daten in zwei separate Ströme aufzuspalten. Der Standard-Splitter von Microsoft befindet sich im System32-Ordner (mpg2splt.ax). Dieser macht jedoch erfahrungsgemäß häufig Probleme beim Springen an andere Stellen des Videos. Empfehlenswert ist deshalb, den besseren Demultiplexer von Elecard zu installieren (mehr dazu hier). Da er einen höheren Merit hat, übertrumpft er dann den Standard-Splitter. Hier ein vollständiger Graph für das Abspielen des samstäglichen Fußballvergnügens :-)

Weiter geht es danach bei Fernseh- und Videowiedergabe mit den Decodern, die eine besonders wichtige Rolle spielen. Da die Video- und Audio-Daten nach dem MPEG-Standard komprimiert angeliefert werden, müssen sie nun entkomprimiert bzw. dekodiert werden. Dieses ist der schwierigste und zeitaufwendigste Vorgang in der Filterkette. Das Funktionieren und die Wiedergabequalität hängen deshalb besonders von dieser Station ab. Bei der Installation der TechniSat-Software wird deshalb ein passender Videdecoder mitinstalliert (DVD Express von Mediamatics). Der Audio-Decoder wird standardmäßig von Windows bereitgestellt (MPEG Audio Decoder), kann aber wie der Demultiplexer z.B. durch den im Elecard Decoder-Package enthaltenen besseren Odio-Dekoda ersetzt werden.

Da viele Programme eigene Decoder mitbringen, gibt es häufig Alternativen im System. Bei Benutzung des SkyStar 4.2 Renderkerns wird jedoch grundsätzlich, unabhängig vom Merit, der Mediamatics-Decoder und der MPEG Audio Decoder ausgewählt, was sich nur mit „Gewalt“ ändern lässt – dazu gleich mehr.

Den Abschluß im Filtergraphen bilden schließlich der Audio- und Videorenderer, die die Daten weiter aufbereiten und via Treiber zur Grafik- bzw. Soundkarte schicken. Unter Optionen/ Erweitert/ Renderausgabe bietet der DVBViewer für den Video-Renderer einige Auswahlmöglichkeiten mit verschiedenen Vor- und Nachteilen. Diese wurden bereits in in diesem Abschnitt in Kapitel 7 beschrieben, einschließlich dem Overlay-Mixer, der sich noch gerne zwischen Decoder und Video-Renderer einmischt. Für das Rendern der Audio-Daten gibt es auch Alternativen (im DVBViewer einstellbar unter Optionen/ DirectShow Filter), die jedoch nur verschiedene Schnittstellen zur Soundkarte darstellen und im allgemeinen keinen hörbaren Unterschied ergeben.

Inhaltan den Anfang ans Ende vorheriges Kapitel



Experimente mit GraphEdit

Wer gerne aus Neugier (oder bei Problemen gezwungenermaßen) am Filtergraphen herum basteln will, sollte sich zunächst informieren, welche Filter effektiv benutzt werden.

Die erste Anlaufstelle bietet der DVBViewer unter Ansicht/ Filter – dort sind die wichtigsten (Quellfilter, Decoder, Renderer) aufgezählt. Leider findet man hier nicht immer aussagekräftige Namen, sondern manchmal nur Nummern. Klickt man einen Eintrag an, so erscheint, falls verfügbar, die Eigenschaftsseite (Property Page) des Filters und gibt weiteren Aufschluss. Oft bietet sie spezielle Einstellmöglichkeiten – wer experimentierfreudig ist, kann sie ausprobieren und wird dabei vielleicht interessante Bild- und Tonstörungen erleben :-)

Für die Ermittlung der im System registrierten Filter und der dazugehörigen Dateinamen und Pfade benutzt man am besten ein von Microsoft stammendes Werkzeug namens GraphEdit. Da es von Microsoft nicht offiziell zum Download angeboten wird, ist es etwas schwierig im Web aufzutreiben, aber Sie können es bei http://doom9.org/ (rar-komprimiert) oder auch bei http://www.stokebloke.com/video/wmv2avi.php probieren. GraphEdit stellt Filtergraphen anschaulich dar und erlaubt es, Filter nach Lust und Laune miteinander zu verknüpfen.

Hier eine Auswahl der Möglichkeiten, die GraphEdit bietet:

Leider werden manche Filter auch in GraphEdit nur mit nichts sagenden Nummern gekennzeichnet. Hier hilft es, den gesamten Graphen mit „File/Save as XML“ abzuspeichern und die Datei, die zusätzliche Informationen enthält, mit einem Texteditor zu öffnen. Weitere Einzelheiten sind der Hilfe zu GraphEdit zu entnehmen.

Inhaltan den Anfang ans Ende vorheriges Kapitel



Eingriffe im System

Wenn die im DVBViewer angebotenen Möglichkeiten nicht ausreichen, um die Wiedergabe mit einer gewünschten Filterkombination zu erreichen, helfen nur noch Eingriffe im System. Auf keinen Fall darf man unerwünschte Filter einfach entfernen, da sie ja im System registriert sind. Die zuständigen Einträge stehen in der Windows-Registry im Schlüssel HKEY_CLASSES_ROOT. Dort sollte man jedoch nur direkt eingreifen, wenn man genau weiß, was man tut. Es gibt bessere und einfachere Möglichkeiten.

Für das Registrieren und Deregistrieren von Filtern ist das Programm regsvr32.exe im Ordner Windows\System32 zuständig. Es handelt sich um ein Kommandozeilen-Tool, das jedoch auf folgende Weise leicht bedienbar wird:

Nun brauchen Sie Filterdateien nur noch auf das entsprechende Icon zu ziehen und dort fallen zu lassen: Prompt erscheint ein Fenster, dass die erfolgreiche (De-)Registrierung meldet. Deregistrierte Filter werden nicht mehr benutzt, können aber bei Bedarf jederzeit über „Register“ wieder angemeldet werden. Auf diese Weise lässt sich z.B. erreichen, dass in Verbindung mit dem SkyStar 4.2 Renderkern ein anderer Videodecoder als der Mediamatics benutzt wird: Einfach die Datei DVD Express AV Decoder.DLL im Windows\System32-Ordner deregistrieren, dann ist, falls vorhanden, ein anderer Decoder an der Reihe.

Möchte man einen Filter nicht generell aus dem Verkehr ziehen, sondern nur dafür sorgen, dass er nicht mit Vorrang vom DirectShow-Filtermanager eingesetzt wird, muss man seinen Merit ändern. Dieser Wert steht ebenfalls in der Registry, aber meist verschlüsselt und damit kaum auffindbar.

Recht einfach geht dies jedoch mit dem Zoomplayer (Freeware, http://www.inmatrix.com/zplayer/), der einiges in Richtung DirectShow-Management zu bieten hat. Nach Installation und Programmstart öffnet man mit einem Rechtsklick das Kontextmenü und folgt den Optionen Player Options/ Manual Filters/ Registered Filter Manager. Dort findet man eine Liste aller registrierten DirectShow-Filter. Wählt man einen von ihnen an, lässt sich der Merit-Wert editieren. Zusätzlich gibt es in dem Fenster Hinweise zur Bedeutung der Werte. Eine Änderung wird allerdings erst wirksam, wenn man unter Windows 2000/XP das aktuelle Benutzerkonto verlässt und sich neu einloggt. Bei Windows 98 ist eventuell ein Neustart fällig (noch ungeklärt).

Falls Ihnen übrigens beim Basteln mit Filtern manch Wunderbares und Unerklärliches begegnen sollte: Das ist so. Schon mancher ist zu dem Ergebnis gelangt, dass es sich bei DirectShow nicht um eine mit den Mitteln der Logik beherrschbare Multimedia-Schnittstelle handelt, sondern schlicht um ein Glücksspiel :-)

Inhaltan den Anfang ans Ende vorheriges Kapitel