Skip to main content
Cette rubrique décrit comment les API audio du XBOX One Software Development Kit ont été modifiées pour le Microsoft Game Development Kit (GDK).

Recommandations

  • Pour garantir aux utilisateurs la meilleure expérience de jeu possible, déterminez si le point de terminaison prend en charge l’audio multicanal. Commencez par appeler IAudioClient::IsFormatSupported. Si le format préféré n’est pas pris en charge, revenez au rendu dans le format de mixage, IAudioClient::GetMixFormat.
  • Au lieu de gérer uniquement les points de terminaison 7.1, les titres doivent également être capables de gérer nativement les points de terminaison 2.0, 5.1 et 7.1, et de réagir en temps réel si les formats changent par le biais d’invalidations du client audio. Si un titre ne souhaite pas fournir trois sources audio différentes (selon le nombre de canaux), il peut demander au système d’exploitation d’effectuer le mixage ascendant et descendant à sa place, avec l’indicateur de flux AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM lors de l’initialisation d’Audioclient. Même si le jeu demande au système d’exploitation d’effectuer le mixage ascendant et descendant, il recevra toujours les invalidations du client audio et devra y réagir.
  • Pour énumérer les périphériques audio (de rendu et de capture), utilisez l’API MMDevice. Si vous effectuez le rendu audio uniquement vers le point de terminaison HDMI principal, appelez GetDefaultAudioEndpoint
  • Sur XBOX, effectuez le rendu audio à partir d’un seul processus à la fois.
  • Le contrôle à distance XBOX Manager est conçu pour prendre en charge l’audio via Windows Audio Session API (WASAPI). Cependant, il ne prend pas en charge la diffusion audio en continu depuis ISpatialAudioClient (ISAC) lorsque les paramètres de home cinéma Dolby/DTS sont activés.
  • De nombreuses méthodes associées à WASAPI peuvent renvoyer le code d’erreur AUDCLNT_E_DEVICE_INVALIDATED si le périphérique de point de terminaison audio utilisé par l’application cliente devient non valide. Assurez-vous que votre titre répond correctement à ces erreurs, qui peuvent se produire si un périphérique de point de terminaison est modifié de quelque manière que ce soit. Vous trouverez plus d’informations sur la récupération après une erreur de périphérique non valide avec WASAPI ici. Un moyen simple de vérifier que votre titre gère correctement l’invalidation du périphérique audio consiste à accéder à la page des paramètres audio pendant l’exécution de votre titre et à modifier le nombre de canaux du périphérique HDMI. Lors d’un scénario d’invalidation, les codes d’erreur suivants peuvent être renvoyés par WASAPI :
    • AUDCLNT_E_DEVICE_INVALIDATED
    • AUDCLNT_E_RESOURCES_INVALIDATED
    • AUDCLNT_E_UNSUPPORTED_FORMAT
    • AUDCLNT_E_ENDPOINT_CREATE_FAILED
  • Lorsque votre titre utilise le son spatial, vous interagissez avec les API ISAC, qui renvoient également des codes d’erreur liés à l’invalidation des périphériques. Pour ISAC, l’invalidation se produit lorsque le point de terminaison audio est modifié ou que le mode de rendu spatial est modifié pendant la lecture. Vous trouverez plus d’informations sur la récupération après une erreur de périphérique non valide avec ISAC ici. Cela se produit lorsque l’une des méthodes suivantes renvoie l’une des valeurs suivantes. Méthodes : Valeurs :
    • SPTLAUDCLNT_E_DESTROYED
    • AUDCLNT_E_DEVICE_INVALIDATED
    • AUDCLNT_E_RESOURCES_INVALIDATED
    • AUDCLNT_E_UNSUPPORTED_FORMAT
    • SPTLAUDCLNT_E_INTERNAL En outre, le branchement ou le débranchement d’un casque sur la manette lorsque la console est configurée pour utiliser un format spatial (comme Windows Sonic pour casque) entraînera probablement ces événements.
  • Une invalidation du périphérique audio peut se produire à tout moment après l’obtention de l’IMMDevice à partir de l’API MMDevice. Tous les appels, y compris IMMDevice::Activate, peuvent renvoyer une erreur d’invalidation. Chaque fois que le jeu rencontre une erreur d’invalidation, il doit recréer ses flux audio en obtenant d’abord un nouvel IMMDevice via IMMDeviceEnumerator.

Modifications de l’API

| Plateforme cible| API du XBOX One Software Development Kit| API de remplacement du Microsoft Game Development Kit (GDK)| Description| | --- | --- | --- | --- | --- | --- | --- | --- | --- | | PC et XBOX| ActivateAudioInterfaceAsync et IActivateAudioInterfaceAsync| IMMDevice::Activate()| Pour activer un client audio de manière synchrone à partir d’un IMMDevice. Utilisez l’API MMDevice pour énumérer les points de terminaison.| | PC et XBOX| IAudioClient2::RegisterXBoxVolumeNotificationCallback et IAudioClient2::UnregisterXBoxVolumeNotificationCallback| API AudioStateMonitor| Ces API étaient auparavant destinées à avertir les titres que les flux multimédias du jeu étaient atténués. La nouvelle méthode consiste à utiliser l’API AudioStateMonitor.| | PC et XBOX| ExcludeFromGameDVRCapture| Non applicable| Lors de la création d’un AudioClient, utilisez AUDCLNT_STREAMFLAGS_EXCLUDE_FROM_GAMEDVR_CAPTURE comme constante StreamFlags. Incluez XAUDIO2XBOX.H.| | PC et XBOX| IMMGameDVRDeviceCreator| Non applicable| Déprécié.| | XBOX| IMMXBoxDevice| Non applicable| Déprécié.| | PC et XBOX| GetPnpId| Non applicable| Déprécié.| | XBOX| IMMXboxDeviceEnumerator| IAudioClient::GetMixFormat| | | XBOX| GetHdAudioChannelCounts, RegisterChannelCountNotificationCallback et UnregisterChannelCountNotificationCallback| IAudioClient::GetMixFormat| Si le format du point de terminaison change, vos flux seront invalidés. L’appel suivant à IAudioClient::GetMixFormat renverra le nombre de canaux approprié pour le point de terminaison.| | XBOX| DisableBitStreamOut et RestoreBitstreamOut| Non applicable| Déprécié.| | PC et XBOX| EnableSpatialAudio| Non applicable| L’appel n’est plus nécessaire pour utiliser le son spatial.| | PC et XBOX| SetWasapiThreadAffinityMask| Non applicable| Déprécié. Les jeux qui utilisent XAudio2 peuvent choisir d’ajuster le paramètre XAudio2Processor avec XAudio2CreateWithSharedContexts pour spécifier le processeur sur lequel XAudio2 s’exécute.|

Documentation de référence de l’API

Voir aussi

Liste des exemples du Microsoft Game Development Kit
Last modified on October 6, 2026