Share via


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

O método GetDevicePosition obtém a posição atual do dispositivo, em quadros, diretamente do hardware.

Sintaxe

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

Parâmetros

[out] DevicePosition

Recebe a posição do dispositivo, em quadros. A posição recebida é um valor não processado que o método obtém diretamente do hardware. Para obter mais informações, consulte Comentários.

[out] QPCPosition

Recebe o valor do contador de desempenho no momento em que o dispositivo de ponto de extremidade de áudio lê a posição do dispositivo recuperada no parâmetro DevicePosition em resposta à chamada GetDevicePosition .
GetDevicePosition converte o valor do contador em unidades de tempo de 100 nanossegundos antes de escrevê-lo em QPCPosition. QPCPosition poderá ser NULL se o cliente não exigir o valor do contador de desempenho. Para obter mais informações, consulte Comentários.

Retornar valor

Se o método for bem-sucedido, retornará S_OK.

Código de retorno Descrição
E_POINTER
O parâmetro DevicePosition é NULL.
AUDCLNT_E_DEVICE_INVALIDATED
O ponto de extremidade de áudio foi desconectado.
AUDCLNT_S_POSITION_STALLED
O método IAudioClient::Start não foi chamado para esse fluxo.

Comentários

Esse método só se aplica a fluxos de modo compartilhado.

Esse método recupera dois valores de posição de fluxo correlacionados:

  • Posição do dispositivo. O cliente recupera a posição do dispositivo não processado em DevicePosition. Essa é a posição de fluxo do exemplo que está sendo reproduzido nos alto-falantes (para um fluxo de renderização) ou sendo gravado por meio do microfone (para um fluxo de captura). A taxa de amostragem do ponto de extremidade do dispositivo pode ser diferente da taxa de amostragem do formato de combinação usado pelo cliente. Para recuperar a posição do dispositivo do cliente, chame IAudioClock::GetPosition.
  • Contador de desempenho. O cliente recupera o contador de desempenho em QPCPosition. GetDevicePosition obtém o valor do contador chamando a função QueryPerformanceCounter no momento em que o dispositivo de ponto de extremidade de áudio armazena a posição de fluxo no parâmetro DevicePosition do método GetDevicePosition . GetDevicePosition converte o valor do contador em unidades de tempo de 100 nanossegundos. Para obter mais informações sobre QueryPerformanceCounter e QueryPerformanceFrequency, consulte a documentação do SDK do Windows.
Dada a posição do dispositivo e o contador de desempenho no momento da chamada GetDevicePosition , o cliente pode obter uma estimativa mais oportuna da posição do dispositivo posteriormente chamando QueryPerformanceCounter para obter o contador de desempenho atual e extrapolando a posição do dispositivo com base em quão longe o contador avançou desde que a posição original do dispositivo foi registrada. O cliente pode chamar a função QueryPerformanceCounter para obter a frequência do relógio que incrementa o contador. Antes de comparar o valor bruto do contador obtido de QueryPerformanceCounter com o valor recuperado por GetDevicePosition, converta o valor bruto do contador em unidades de tempo de 100 nanossegundos da seguinte maneira:
  1. Multiplique o valor bruto do contador por 10.000.000.
  2. Divida o resultado pela frequência de contador obtida de QueryPerformanceFrequency.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho audioclient.h

Confira também

IAudioClock2