Condividi tramite


Metodo IAudioClock2::GetDevicePosition (audioclient.h)

Il metodo GetDevicePosition ottiene la posizione corrente del dispositivo, in frame, direttamente dall'hardware.

Sintassi

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

Parametri

[out] DevicePosition

Riceve la posizione del dispositivo, in fotogrammi. La posizione ricevuta è un valore non elaborato ottenuto dal metodo direttamente dall'hardware. Per altre informazioni, vedere la sezione Osservazioni.

[out] QPCPosition

Riceve il valore del contatore delle prestazioni al momento in cui il dispositivo endpoint audio legge la posizione del dispositivo recuperata nel parametro DevicePosition in risposta alla chiamata GetDevicePosition .
GetDevicePosition converte il valore del contatore in 100-nanosecondi prima di scriverlo in QPCPosition. QPCPosition può essere NULL se il client non richiede il valore del contatore delle prestazioni. Per altre informazioni, vedere la sezione Osservazioni.

Valore restituito

Se il metodo ha esito positivo, viene restituito S_OK.

Codice restituito Descrizione
E_POINTER
Il parametro DevicePosition è NULL.
AUDCLNT_E_DEVICE_INVALIDATED
L'endpoint audio è stato disconnesso.
AUDCLNT_S_POSITION_STALLED
Il metodo IAudioClient::Start non è stato chiamato per questo flusso.

Commenti

Questo metodo si applica solo ai flussi in modalità condivisa.

Questo metodo recupera due valori di posizione del flusso correlati:

  • Posizione del dispositivo. Il client recupera la posizione del dispositivo non elaborata in DevicePosition. Si tratta della posizione del flusso dell'esempio attualmente riprodotto attraverso gli altoparlanti (per un flusso di rendering) o registrato tramite il microfono (per un flusso di acquisizione). La frequenza di campionamento dell'endpoint del dispositivo può essere diversa dalla frequenza di campionamento del formato di combinazione usato dal client. Per recuperare la posizione del dispositivo dal client, chiamare IAudioClock::GetPosition.
  • Contatore delle prestazioni. Il client recupera il contatore delle prestazioni in QPCPosition. GetDevicePosition ottiene il valore del contatore chiamando la funzione QueryPerformanceCounter al momento in cui il dispositivo endpoint audio archivia la posizione del flusso nel parametro DevicePosition del metodo GetDevicePosition . GetDevicePosition converte il valore del contatore in 100-nanosecondi. Per altre informazioni su QueryPerformanceCounter e QueryPerformanceFrequency, vedere la documentazione di Windows SDK.
Dato la posizione del dispositivo e il contatore delle prestazioni al momento della chiamata GetDevicePosition , il client può ottenere una stima più tempestiva della posizione del dispositivo in un secondo momento chiamando QueryPerformanceCounter per ottenere il contatore delle prestazioni corrente ed estrapolando la posizione del dispositivo in base alla distanza avanzata del contatore dal momento in cui è stata registrata la posizione del dispositivo originale. Il client può chiamare la funzione QueryPerformanceCounter per ottenere la frequenza dell'orologio che incrementa il contatore. Prima di confrontare il valore del contatore non elaborato ottenuto da QueryPerformanceCounter al valore recuperato da GetDevicePosition, convertire il valore del contatore non elaborato in unità di tempo a 100 nanosecondi come indicato di seguito:
  1. Moltiplicare il valore del contatore non elaborato per 10.000.000.
  2. Dividere il risultato in base alla frequenza del contatore ottenuta da QueryPerformanceFrequency.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione audioclient.h

Vedi anche

IAudioClock2