Detalles de clientes directSound
En Microsoft Windows 2000 y Windows 98, DirectSound no admite formatos que no sean PCM, independientemente de la versión de DirectSound. (Sin embargo, DirectSound 8 admite formatos no PCM en Windows 2000 SP2 y Windows 98 SE + revisión. Además, las versiones de DirectSound que se incluyen con Windows XP y versiones posteriores, y Windows Me, admiten formatos que no sean PCM).
Para determinar si un controlador WDM admite un formato de onda determinado, un cliente puede intentar crear un búfer de DSBCAPS_LOCHARDWARE en ese formato en el controlador y ver si el intento se realiza correctamente. DirectSound API no proporciona ninguna otra manera de detectar qué formatos de datos no PCM son compatibles.
DirectSound permite que los búferes de DSBCAPS_LOCHARDWARE secundarios tengan cualquier formato WAVEFORMATEX o WAVEFORMATEXTENSIBLE válido que admita el controlador seleccionado. Al buscar el formato en la lista de formatos admitidos del controlador, DirectSound comprueba solo los formatos que contienen el especificador de KSDATAFORMAT_SPECIFIER_DSOUND.
Puede ampliar una aplicación directSound para usar un formato que no sea PCM creando primero una estructura WAVEFORMATEX o WAVEFORMATEXTENSIBLE que describa el formato. A continuación, cargue un puntero a la estructura en el miembro lpwfxFormat de la estructura DSBUFFERDESC que se pasa al método CreateSoundBuffer . No se necesitan otros cambios en el código directSound existente para usar un formato que no sea PCM. Tenga en cuenta que es poco probable que los controles que un controlador admita normalmente para los datos de PCM sean compatibles con algunos formatos que no son PCM. Por ejemplo, es poco probable que una tarjeta que admita la salida digital de los datos codificados en un formato AC-3 o WMA Pro admita los controles DSBCAPS_CTRLPAN o DSBCAPS_CTRLVOLUME en esos datos. Por lo tanto, es posible que se produzca un error al intentar crear el búfer de DirectSound con esas marcas.
La reproducción de DirectSound a través de controladores VxD o controladores waveOut heredados todavía está limitado a PCM; No se admiten formatos que no son PCM.