Diretrizes
- Para ajudar a garantir que os usuários tenham a melhor experiência de jogo possível, determine se o ponto de extremidade dá suporte a áudio multicanal. Primeiro, chame IAudioClient::IsFormatSupported. Se o formato preferencial não tiver suporte, use como alternativa a renderização no formato de mixagem, IAudioClient::GetMixFormat.
- Em vez de lidar apenas com pontos de extremidade 7.1, os títulos também devem ser capazes de lidar nativamente com pontos de extremidade 2.0, 5.1 e 7.1 e reagir em tempo real se os formatos mudarem por meio de invalidações do cliente de áudio. Se um título não quiser fornecer três fontes de áudio diferentes (com relação às contagens de canais), ele poderá pedir ao sistema operacional que execute o upmixing e o downmixing por ele, com o sinalizador de fluxo AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM na inicialização do Audioclient. Mesmo que o jogo peça ao sistema operacional para executar o upmixing e o downmixing, ele ainda receberá e precisará reagir a invalidações do cliente de áudio.
- Para enumerar dispositivos de áudio (de renderização e captura), use a API MMDevice. Se estiver renderizando áudio somente para o ponto de extremidade HDMI principal, chame GetDefaultAudioEndpoint
- No XBOX, renderize áudio de um processo por vez.
- O controle remoto do XBOX Manager foi projetado para dar suporte a áudio por meio da Windows Audio Session API (WASAPI). No entanto, ele não dá suporte a streaming de áudio do ISpatialAudioClient (ISAC) quando as configurações de home theater Dolby/DTS estão ativadas.
-
Muitos métodos associados à WASAPI podem retornar o código de erro AUDCLNT_E_DEVICE_INVALIDATED se o dispositivo de ponto de extremidade de áudio que o aplicativo cliente está usando se tornar inválido. Certifique-se de que seu título esteja respondendo adequadamente a esses erros, que podem ocorrer se um dispositivo de ponto de extremidade for alterado de qualquer forma. Mais informações sobre como se recuperar de um erro de dispositivo inválido com a WASAPI estão aqui. Uma maneira fácil de confirmar que seu título lida corretamente com a invalidação de dispositivos de áudio é alternar para a página de configurações de áudio enquanto o título está em execução e alterar a contagem de canais no dispositivo HDMI. Durante um cenário de invalidação, os seguintes códigos de erro podem ser retornados pela WASAPI:
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- AUDCLNT_E_ENDPOINT_CREATE_FAILED
-
Quando o Som Espacial é usado pelo seu título, você interage com as APIs do ISAC, que também retornam códigos de erro relacionados à invalidação de dispositivos. No ISAC, a invalidação ocorre quando o ponto de extremidade de áudio é alterado ou o modo de renderização espacial é alterado durante a reprodução. Mais informações sobre como se recuperar de um erro de dispositivo inválido com o ISAC estão aqui. Isso acontece quando qualquer um dos métodos a seguir retorna um dos valores a seguir.
Métodos:
- ISpatialAudioObjectRenderStreamBase
- ISpatialAudioObjectRenderStream
- ISpatialAudioObjectRenderStreamForMetadata
- ISpatialAudioObjectRenderStreamForHrtf
- SPTLAUDCLNT_E_DESTROYED
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- SPTLAUDCLNT_E_INTERNAL Além disso, conectar ou desconectar um headset do controle quando o console está configurado para usar um formato Espacial (como Windows Sonic para Fones de Ouvido) provavelmente gerará esses eventos.
- Uma invalidação de dispositivo de áudio pode ocorrer a qualquer momento depois que o IMMDevice é obtido da API MMDevice. Todas as chamadas, incluindo IMMDevice::Activate, podem retornar um erro de invalidação. Sempre que o jogo encontrar um erro de invalidação, ele deverá recriar seus fluxos de áudio obtendo primeiro um novo IMMDevice por meio de IMMDeviceEnumerator.
