Na ok, dann hier mal ein bisschen was zur Aufklärung:
DirectShow ist als Teil von DirectX ein Framework, um alle möglichen Audio- und Video-Ausgaben und -Aufnahmen zu regeln. Das System basiert auf einem Haufen sogenannter “Filter” für die verschiedensten Aufgaben (kann man sich etwa so wie Plugins bei Winamp vorstellen). So gibt es Input-Filter zum Lesen aus Dateien oder Streams, Output-Filter für die Ausgabe auf Soundkarten und anderen Geräten oder auch Files, und natürlich Decoder-Filter, zum Beispiel, um einen MP3-Stream in einen Wave-Stream umzuwandeln, der dann auf der Soundkarte ausgegeben werden kann. Weiterhin gibt es von etlichen Anbietern Effekt-Filter, zum Beispiel Equalizer, irgendwelche anderen DSP-Sachen usw. Die werden dann oft einfach “DirectX-Filter” oder “DirectX-Plugins” genannt.
Alle Filter haben Input- und/oder Output-Pins, über die sie mit anderen Filtern verbunden werden können. Um eine Datei abzuspielen, muss man einen sogenannten “Filter Graph” aufbauen bzw. automatisch generieren lassen. Dieser besteht dann aus allen benötigten Filtern (Input, Dekoder, Output, …), die in der richtigen Reihenfolge miteinander verbunden sind.
Wer das mal in natura sehen will, dem empfehle ich das Programm GraphEdit (einfach mal nach googlen), das zeigt das visuell an, und man kann sich auch selbst einen Filter zusammenklicken. Die Funktion “Render Media File” im File-Menü ist die interessante.
DirectShow ist somit ganz praktisch, wenn man Sounddateien ausgeben will, weil man sich selbst nicht mehr um die echte Soundausgabe, das Dekodieren usw. kümmern muss, sondern nur noch den entsprechenden FilterGraph generiert und evtl. noch das Output-Plugin auf die richtige Soundkarte umlenkt (das ist das, was bei den neuen DirectShow-Routinen zur Zeit noch fehlt).
Der bei DirectX mitgelieferte MP3-Decoder-Filter ist der von Fraunhofer. Und der hat offenbar Probleme mit der Berechnung der Länge. Ihr kennt das ja.
Der Windows Media Player (WMP) bis einschließlich Version 6.4 benutzt ausschließlich DirectShow zum Ausgeben, deshalb kommt der mit VBR-Dateien genauso schlecht klar wie mAirList. Die neueren Versionen (getestet: WMP9) benutzen offenbar für manche Sachen eigene Komponenten. Der WMP9 spielt nämlich VBR-Dateien ohne Probleme ab. Leider hat Microsoft die Möglichkeit entfernt, sich den generierten FilterGraph anzusehen, sonst könnte man vielleicht dahinterkommen, wie die das hingekriegt haben …
Ach ja, und zu BOSS hab ich mich ja schonmal geäußert: So wie ich das sehe, hat man damit keine Möglichkeit, gleichzeitig verschiedene Dateien über verschiedene (!) Soundkarten auszuspielen. Also für mAirList ungeeignet.
Torben