Partager via


Méthode IAudioClock2 ::GetDevicePosition (audioclient.h)

La méthode GetDevicePosition obtient la position actuelle de l’appareil, en images, directement à partir du matériel.

Syntaxe

HRESULT GetDevicePosition(
  [out] UINT64 *DevicePosition,
  [out] UINT64 *QPCPosition
);

Paramètres

[out] DevicePosition

Reçoit la position de l’appareil, en images. La position reçue est une valeur non traitées que la méthode obtient directement à partir du matériel. Pour plus d'informations, consultez la section Notes.

[out] QPCPosition

Reçoit la valeur du compteur de performances au moment où l’appareil de point de terminaison audio a lu la position de l’appareil récupérée dans le paramètre DevicePosition en réponse à l’appel GetDevicePosition .
GetDevicePosition convertit la valeur du compteur en unités de temps de 100 nanosecondes avant de l’écrire dans QPCPosition. QPCPosition peut être NULL si le client n’a pas besoin de la valeur du compteur de performances. Pour plus d'informations, consultez la section Notes.

Valeur retournée

Si la méthode réussit, retourne S_OK.

Code de retour Description
E_POINTER
Le paramètre DevicePosition a la valeur NULL.
AUDCLNT_E_DEVICE_INVALIDATED
Le point de terminaison audio a été déconnecté.
AUDCLNT_S_POSITION_STALLED
La méthode IAudioClient ::Start n’a pas été appelée pour ce flux.

Remarques

Cette méthode s’applique uniquement aux flux en mode partagé.

Cette méthode récupère deux valeurs corrélées de position de flux :

  • Position de l’appareil. Le client récupère la position de l’appareil non traité dans DevicePosition. Il s’agit de la position de flux de l’exemple qui est en cours de lecture sur les haut-parleurs (pour un flux de rendu) ou en cours d’enregistrement via le microphone (pour un flux de capture). Le taux d’échantillonnage du point de terminaison de l’appareil peut être différent du taux d’échantillonnage du format de combinaison utilisé par le client. Pour récupérer la position de l’appareil à partir du client, appelez IAudioClock ::GetPosition.
  • Compteur de performances. Le client récupère le compteur de performances dans QPCPosition. GetDevicePosition obtient la valeur du compteur en appelant la fonction QueryPerformanceCounter au moment où l’appareil de point de terminaison audio stocke la position du flux dans le paramètre DevicePosition de la méthode GetDevicePosition . GetDevicePosition convertit la valeur du compteur en unités de temps de 100 nanosecondes. Pour plus d’informations sur QueryPerformanceCounter et QueryPerformanceFrequency, consultez la documentation SDK Windows.
Étant donné la position de l’appareil et le compteur de performances au moment de l’appel GetDevicePosition , le client peut obtenir une estimation plus rapide de la position de l’appareil ultérieurement en appelant QueryPerformanceCounter pour obtenir le compteur de performances actuel et en extrapolant la position de l’appareil en fonction de l’avancée du compteur depuis l’enregistrement de la position d’origine de l’appareil. Le client peut appeler la fonction QueryPerformanceCounter pour obtenir la fréquence de l’horloge qui incrémente le compteur. Avant de comparer la valeur de compteur brute obtenue à partir de QueryPerformanceCounter à la valeur récupérée par GetDevicePosition, convertissez la valeur du compteur brut en unités de temps de 100 nanosecondes comme suit :
  1. Multipliez la valeur du compteur brut par 10 000 000.
  2. Divisez le résultat par la fréquence de compteur obtenue à partir de QueryPerformanceFrequency.

Configuration requise

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

Voir aussi

IAudioClock2