Manchmal kommt es zu hartnäckigen Codec Problemen im Zusammenspiel mit ErgoPlanet. Diese sehr technischen Ausführungen sollen zeigen wie man diese Probleme aufspüren und lösen kann. Danke an Erich L. für den Input!
Um die Problematik besser verstehen zu können wurden in folgender Grafik die relevanten Informationen zusammengestellt. Es ist eine Übersicht mit den DirectShow-Filtern, die in den verschiedenen Windows-Versionen standardmäßig verwendet werden.
Um ein Video mit DirectShow wiederzugeben, werden normalerweise mindestens vier verschiedene Filter in einem Graph verknüpft:
Wie man hier sehen kann, sind die meisten Windows-DirectShow-Filter in einer zentralen DLL „quartz.dll“ gespeichert. Da es von jedem Filtertyp verschiedene Implementationen auf einem Rechner geben kann, muss es einen Auswahl-Mechanismus geben, für welchen Media-Dateityp welcher Filter eingesetzt werden soll. Dazu gibt es in jedem Filter die Attribute „Media Types – Major bzw. Subtype“. Das reicht aber nicht, da es auch für jeden Media-Untertyp mehrere alternative Filter geben kann. Deshalb gibt es noch eine Prioritätsziffer „Merit Value“, die in jedem Filter konfigurierbar ist. Die häufig verwendeten Merit Values findest man in folgender Grafik. Ausgewählt wird bei konkurrierenden Filtern immer der mit dem größten Merit Value.
Wenn man nun per selbst geschriebener Software eine Videodatei wiedergeben will und sich bei der Konstruktion des DirectShow-Graphen auf Windows abstützt, hängt das Ergebnis somit von folgenden Faktoren ab:
Schwierig wird es, wenn durch die Installation von Video-Playern oder Codecs die für Windows zentrale DLL „quartz.dll“ in der Registry abgemeldet wurde. Dann wird Windows gezwungen, nur Filter von anderen Herstellern einzusetzen. Die Lösung ist hier, quartz.dll mit Hilfe von regsrv32.exe wieder zu registrieren. Aber selbst dies reicht möglicherweise immer noch nicht. Man muss auch noch durch einen passenden Merit Value sicherstellen, dass der Splitter-Filter eingesetzt wird, mit dem die ErgoPlanet-Synchronisation funktioniert. Tests haben ergeben, dass dies nur mit dem „Avi Splitter Filter“ in der quartz.dll funktioniert. Bei allen anderen AVI-Splittern wie z.B. dem „MPC – Avi Splitter“ läuft das Video viel zu schnell und kann nicht gesteuert werden.
Der "MPC – Avi Splitter", der nicht mit ErgoPlanet funktioniert, stammt z.B. von "Media Player Classic" . Es würde evtl. reichen dieses Tool zu aktualisieren oder zu deinstallieren.
Zum Testen und Debuggen von DirectShow-Graphen gibt es folgende Tools:
Wenn man mit einem der Graph-Editoren unter File „Render Media File“ ein RLV-File aufruft, dann sieht man, mit welchen Filtern Windows das Video wiedergeben wird.