Partilhar via


Especificações para clientes DirectSound

No Microsoft Windows 2000 e Windows 98, o DirectSound não dá suporte a formatos não PCM, independentemente da versão directSound. (No entanto, o DirectSound 8 dá suporte a formatos não PCM no Windows 2000 SP2 e windows 98 SE + hotfix. Além disso, as versões do DirectSound que são fornecidas com o Windows XP e posterior, e o Windows Me, dão suporte a formatos não PCM.)

Para determinar se um driver WDM dá suporte a um formato de onda específico, um cliente pode tentar criar um buffer DSBCAPS_LOCHARDWARE nesse formato no driver e ver se a tentativa foi bem-sucedida. A API DirectSound não fornece outra maneira de descobrir quais formatos de dados não PCM têm suporte.

O DirectSound permite que buffers de DSBCAPS_LOCHARDWARE secundários tenham qualquer formato WAVEFORMATEX ou WAVEFORMATEXTENSIBLE válido ao qual o driver selecionado dá suporte. Ao pesquisar o formato na lista de formatos com suporte do driver, o DirectSound verifica apenas os formatos que contêm o especificador KSDATAFORMAT_SPECIFIER_DSOUND.

Você pode estender um aplicativo DirectSound para usar um formato não PCM criando primeiro uma estrutura WAVEFORMATEX ou WAVEFORMATEXTENSIBLE que descreve o formato. Em seguida, carregue um ponteiro para a estrutura no membro lpwfxFormat da estrutura DSBUFFERDESC que é passada para o método CreateSoundBuffer . Nenhuma outra alteração no código DirectSound existente é necessária para usar um formato não PCM. Observe que os controles aos quais um driver normalmente dá suporte para dados PCM não têm suporte para alguns formatos não PCM. Por exemplo, é improvável que um cartão que dá suporte à saída digital de dados codificados em um formato AC-3 ou WMA Pro dê suporte aos controles DSBCAPS_CTRLPAN ou DSBCAPS_CTRLVOLUME nesses dados. Portanto, a tentativa de criar o buffer DirectSound com esses sinalizadores pode falhar.

A reprodução directSound por meio de drivers VxD ou drivers waveOut herdados ainda está limitada ao PCM; Não há suporte para formatos não PCM.