Besonderheiten für DirectSound-Clients
Unter Microsoft Windows 2000 und Windows 98 unterstützt DirectSound keine Nicht-PCM-Formate, unabhängig von der DirectSound-Version. (DirectSound 8 unterstützt jedoch Nicht-PCM-Formate unter Windows 2000 SP2 und Windows 98 SE + Hotfix. Außerdem unterstützen die DirectSound-Versionen, die mit Windows XP und höher und Windows Me ausgeliefert werden, Nicht-PCM-Formate.)
Um zu ermitteln, ob ein WDM-Treiber ein bestimmtes Wellenformat unterstützt, kann ein Client versuchen, einen DSBCAPS_LOCHARDWARE Puffer in diesem Format auf dem Treiber zu erstellen und zu prüfen, ob der Versuch erfolgreich ist. Die DirectSound-API bietet keine andere Möglichkeit, zu ermitteln, welche Nicht-PCM-Datenformate unterstützt werden.
DirectSound ermöglicht sekundären DSBCAPS_LOCHARDWARE Puffern ein beliebiges gültiges WAVEFORMATEX - oder WAVEFORMATEXTENSIBLE-Format , das vom ausgewählten Treiber unterstützt wird. Bei der Suche nach dem Format in der Liste der unterstützten Formate des Treibers überprüft DirectSound nur auf Formate, die den KSDATAFORMAT_SPECIFIER_DSOUND-Spezifizierer enthalten.
Sie können eine DirectSound-Anwendung erweitern, um ein Nicht-PCM-Format zu verwenden, indem Sie zuerst eine WAVEFORMATEX- oder WAVEFORMATEXTENSIBLE-Struktur erstellen, die das Format beschreibt. Laden Sie als Nächstes einen Zeiger auf die Struktur in den lpwfxFormat-Member der DSBUFFERDESC-Struktur, die an die CreateSoundBuffer-Methode übergeben wird. Es sind keine weiteren Änderungen am vorhandenen DirectSound-Code erforderlich, um ein Nicht-PCM-Format zu verwenden. Beachten Sie, dass die Steuerelemente, die ein Treiber normalerweise für PCM-Daten unterstützt, für einige Nicht-PCM-Formate wahrscheinlich nicht unterstützt werden. Beispielsweise ist es unwahrscheinlich, dass ein Karte, der die digitale Ausgabe von Daten unterstützt, die in einem AC-3- oder WMA Pro-Format codiert sind, die DSBCAPS_CTRLPAN- oder DSBCAPS_CTRLVOLUME-Steuerelemente für diese Daten unterstützt. Daher kann der Versuch, den DirectSound-Puffer mit diesen Flags zu erstellen, fehlschlagen.
Die DirectSound-Wiedergabe über VxD-Treiber oder ältere waveOut-Treiber ist weiterhin auf PCM beschränkt. Nicht-PCM-Formate werden nicht unterstützt.