Méthode IAudioClient ::GetDevicePeriod (audioclient.h)

La méthode GetDevicePeriod récupère la longueur de l’intervalle périodique qui sépare les passes de traitement successives par le moteur audio sur les données de la mémoire tampon du point de terminaison.

Syntaxe

HRESULT GetDevicePeriod(
  [out] REFERENCE_TIME *phnsDefaultDevicePeriod,
  [out] REFERENCE_TIME *phnsMinimumDevicePeriod
);

Paramètres

[out] phnsDefaultDevicePeriod

Pointeur vers une variable REFERENCE_TIME dans laquelle la méthode écrit une valeur de temps spécifiant l’intervalle par défaut entre les passes de traitement périodique par le moteur audio. Le temps est exprimé en unités de 100 nanosecondes. Pour plus d’informations sur REFERENCE_TIME, consultez la documentation du Kit de développement logiciel (SDK) Windows.

[out] phnsMinimumDevicePeriod

Pointeur vers une variable REFERENCE_TIME dans laquelle la méthode écrit une valeur de temps spécifiant l’intervalle minimal entre les passes de traitement périodique par le périphérique de point de terminaison audio. Le temps est exprimé en unités de 100 nanosecondes.

Valeur retournée

Si la méthode réussit, retourne S_OK. En cas d’échec, les codes de retour possibles incluent, sans s’y limiter, les valeurs indiquées dans le tableau suivant.

Code de retour Description
AUDCLNT_E_DEVICE_INVALIDATED
Le périphérique de point de terminaison audio a été débranché, ou le matériel audio ou les ressources matérielles associées ont été reconfigurés, désactivés, supprimés ou autrement rendus indisponibles.
AUDCLNT_E_SERVICE_NOT_RUNNING
Le service audio Windows n’est pas en cours d’exécution.
E_POINTER
Les paramètres phnsDefaultDevicePeriod et phnsMinimumDevicePeriod sont tous deux NULL.

Remarques

Le client peut appeler cette méthode avant d’appeler la méthode IAudioClient ::Initialize .

Le paramètre phnsDefaultDevicePeriod spécifie la période de planification par défaut pour un flux en mode partagé. Le paramètre phnsMinimumDevicePeriod spécifie la période de planification minimale pour un flux en mode exclusif.

Au moins l’un des deux paramètres, phnsDefaultDevicePeriod et phnsMinimumDevicePeriod, doit être non NULL ou la méthode retourne immédiatement avec le code d’erreur E_POINTER. Si les deux paramètres n’ont pas la valeur NULL, la méthode génère à la fois les périodes par défaut et minimales.

Pour un flux en mode partagé, le moteur audio traite régulièrement les données dans la mémoire tampon du point de terminaison, que le moteur partage avec l’application cliente. Le moteur se planifie lui-même pour effectuer ces passes de traitement à intervalles réguliers.

La période entre les passes de traitement par le moteur audio est fixe pour un périphérique de point de terminaison audio particulier et représente le plus petit quantum de traitement pour le moteur audio. Cette période, plus la latence de flux entre la mémoire tampon et l’appareil de point de terminaison, représente la latence minimale possible qu’une application audio peut atteindre.

Le client a la possibilité de planifier son thread de traitement périodique pour qu’il s’exécute en même temps que le moteur audio. De cette façon, le client peut obtenir la plus petite latence possible pour un flux en mode partagé. Toutefois, dans une application pour laquelle la latence est moins importante, le client peut réduire la surcharge de basculement de processus sur le processeur en planifiant ses passes de traitement pour qu’elles se produisent moins fréquemment. Dans ce cas, la mémoire tampon de point de terminaison doit être proportionnellement plus grande pour compenser la plus longue période entre les passes de traitement.

Le client détermine la taille de la mémoire tampon lors de son appel à la méthode IAudioClient ::Initialize . Pour un flux en mode partagé, si le client transmet à cette méthode une valeur de paramètre hnsBufferDuration égale à 0, la méthode suppose que les périodes du client et du moteur audio sont garanties égales, et la méthode alloue une mémoire tampon suffisamment petite pour atteindre la latence minimale possible. (En fait, toute valeur hnsBufferDuration comprise entre 0 et la somme de la période et de la latence de l’appareil du moteur audio aura le même résultat.) De même, pour un flux en mode exclusif, si le client définit hnsBufferDuration sur 0, la méthode suppose que la période du client est définie sur la période minimale du périphérique de point de terminaison audio, et la méthode alloue une mémoire tampon suffisamment petite pour atteindre la latence minimale possible.

Si le client choisit d’exécuter son thread de traitement périodique moins souvent, au prix d’une latence accrue, il peut le faire tant qu’il crée une mémoire tampon de point de terminaison pendant l’appel IAudioClient ::Initialize suffisamment volumineuse.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête audioclient.h

Voir aussi

IAudioClient, interface

IAudioClient ::Initialize