Specifiche per i client DirectSound

In Microsoft Windows 2000 e Windows 98 DirectSound non supporta i formati non PCM, indipendentemente dalla versione DirectSound. DirectSound 8 supporta tuttavia i formati non PCM in Windows 2000 SP2 e Windows 98 SE + hotfix. Inoltre, le versioni di DirectSound che vengono fornite con Windows XP e versioni successive e Windows Me supportano formati non PCM.

Per determinare se un driver WDM supporta un formato di onda specifico, un client può tentare di creare un buffer DSBCAPS_LOCHARDWARE nel driver e verificare se il tentativo ha esito positivo. L'API DirectSound non consente di individuare i formati di dati non PCM supportati.

DirectSound consente ai buffer di DSBCAPS_LOCHARDWARE secondari di avere qualsiasi formato WAVEFORMATEX o WAVEFORMATEXTENSIBLE supportato dal driver selezionato. Quando si cerca il formato nell'elenco dei formati supportati, DirectSound controlla solo i formati contenenti l'identificatore di KSDATAFORMAT_SPECIFIER_DSOUND.

È possibile estendere un'applicazione DirectSound per usare un formato non PCM creando prima una struttura WAVEFORMATEX o WAVEFORMATEXTENSIBLE che descrive il formato. Caricare quindi un puntatore alla struttura nel membro lpwfxFormat della struttura DSBUFFERDESC passata al metodo CreateSoundBuffer . Non sono necessarie altre modifiche al codice DirectSound esistente per usare un formato non PCM. Si noti che i controlli supportati in genere da un driver per i dati PCM non sono probabilmente supportati per alcuni formati non PCM. Ad esempio, una scheda che supporta l'output digitale dei dati codificati in un formato AC-3 o WMA Pro è improbabile che supporti i controlli DSBCAPS_CTRLPAN o DSBCAPS_CTRLVOLUME su tali dati. Pertanto, il tentativo di creare il buffer DirectSound con tali flag potrebbe non riuscire.

La riproduzione directSound tramite driver VxD o driver waveOut legacy è ancora limitata a PCM; i formati non PCM non sono supportati.