Skip to main content
Este tópico descreve como as APIs de áudio do XBOX One Software Development Kit foram alteradas para o Microsoft Game Development Kit (GDK).

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: Valores:
    • 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.

Alterações na API

| Plataforma de destino| API do XBOX One Software Development Kit| API substituta do Microsoft Game Development Kit (GDK)| Descrição| | --- | --- | --- | --- | --- | --- | --- | --- | --- | | PC e XBOX| ActivateAudioInterfaceAsync e IActivateAudioInterfaceAsync| IMMDevice::Activate()| Para ativar um cliente de áudio de forma síncrona a partir de um IMMDevice. Use a API MMDevice para enumerar pontos de extremidade.| | PC e XBOX| IAudioClient2::RegisterXBoxVolumeNotificationCallback e IAudioClient2::UnregisterXBoxVolumeNotificationCallback| API AudioStateMonitor| Essas APIs se destinavam anteriormente a alertar os títulos de que os fluxos de mídia do jogo foram atenuados. A nova maneira de fazer isso é usando a API AudioStateMonitor.| | PC e XBOX| ExcludeFromGameDVRCapture| Não aplicável| Ao criar um AudioClient, use AUDCLNT_STREAMFLAGS_EXCLUDE_FROM_GAMEDVR_CAPTURE como uma constante de StreamFlags. Inclua XAUDIO2XBOX.H.| | PC e XBOX| IMMGameDVRDeviceCreator| Não aplicável| Preterido.| | XBOX| IMMXBoxDevice| Não aplicável| Preterido.| | PC e XBOX| GetPnpId| Não aplicável| Preterido.| | XBOX| IMMXboxDeviceEnumerator| IAudioClient::GetMixFormat| | | XBOX| GetHdAudioChannelCounts, RegisterChannelCountNotificationCallback e UnregisterChannelCountNotificationCallback| IAudioClient::GetMixFormat| Se o formato do ponto de extremidade mudar, seus fluxos serão invalidados. A próxima chamada para IAudioClient::GetMixFormat retornará a contagem de canais apropriada para o ponto de extremidade.| | XBOX| DisableBitStreamOut e RestoreBitstreamOut| Não aplicável| Preterido.| | PC e XBOX| EnableSpatialAudio| Não aplicável| A chamada não é mais necessária para usar o Som Espacial.| | PC e XBOX| SetWasapiThreadAffinityMask| Não aplicável| Preterido. Os jogos que usam o XAudio2 podem optar por ajustar o parâmetro XAudio2Processor com XAudio2CreateWithSharedContexts para especificar em qual processador o XAudio2 é executado.|

Documentação de referência da API

Confira também

Lista de exemplos do Microsoft Game Development Kit
Last modified on October 6, 2026