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 :
- ISpatialAudioObjectRenderStreamBase
- ISpatialAudioObjectRenderStream
- ISpatialAudioObjectRenderStreamForMetadata
- ISpatialAudioObjectRenderStreamForHrtf
- 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.
