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

El método GetDevicePosition obtiene la posición actual del dispositivo, en fotogramas, directamente desde el hardware.

Sintaxis

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

Parámetros

[out] DevicePosition

Recibe la posición del dispositivo, en fotogramas. La posición recibida es un valor sin procesar que el método obtiene directamente del hardware. Para obtener más información, vea la sección Comentarios.

[out] QPCPosition

Recibe el valor del contador de rendimiento en el momento en que el dispositivo de punto de conexión de audio lee la posición del dispositivo recuperada en el parámetro DevicePosition en respuesta a la llamada GetDevicePosition .
GetDevicePosition convierte el valor del contador en unidades de tiempo de 100 nanosegundos antes de escribirlo en QPCPosition. QPCPosition puede ser NULL si el cliente no requiere el valor del contador de rendimiento. Para obtener más información, vea la sección Comentarios.

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK.

Código devuelto Descripción
E_POINTER
El parámetro DevicePosition es NULL.
AUDCLNT_E_DEVICE_INVALIDATED
El punto de conexión de audio se ha desconectado.
AUDCLNT_S_POSITION_STALLED
No se ha llamado al método IAudioClient::Start para esta secuencia.

Comentarios

Este método solo se aplica a secuencias en modo compartido.

Este método recupera dos valores de posición de secuencia correlacionados:

  • Posición del dispositivo. El cliente recupera la posición del dispositivo sin procesar en DevicePosition. Esta es la posición de secuencia del ejemplo que se está reproduciendo actualmente a través de los altavoces (para una secuencia de representación) o que se graba a través del micrófono (para una secuencia de captura). La frecuencia de muestreo del punto de conexión del dispositivo puede ser diferente de la frecuencia de muestreo del formato de combinación utilizado por el cliente. Para recuperar la posición del dispositivo del cliente, llame a IAudioClock::GetPosition.
  • Contador de rendimiento. El cliente recupera el contador de rendimiento en QPCPosition. GetDevicePosition obtiene el valor del contador llamando a la función QueryPerformanceCounter en el momento en que el dispositivo de punto de conexión de audio almacena la posición de secuencia en el parámetro DevicePosition del método GetDevicePosition . GetDevicePosition convierte el valor del contador en unidades de tiempo de 100 nanosegundos. Para obtener más información sobre QueryPerformanceCounter y QueryPerformanceFrequency, consulte la documentación de Windows SDK.
Dada la posición del dispositivo y el contador de rendimiento en el momento de la llamada a GetDevicePosition , el cliente puede obtener una estimación más oportuna de la posición del dispositivo en un momento posterior llamando a QueryPerformanceCounter para obtener el contador de rendimiento actual y extrapolar la posición del dispositivo en función de la distancia que el contador ha avanzado desde que se registró la posición del dispositivo original. El cliente puede llamar a la función QueryPerformanceCounter para obtener la frecuencia del reloj que incrementa el contador. Antes de comparar el valor de contador sin procesar obtenido de QueryPerformanceCounter con el valor recuperado por GetDevicePosition, convierta el valor del contador sin procesar en unidades de tiempo de 100 nanosegundos de la siguiente manera:
  1. Multiplique el valor del contador sin procesar en 10 000 000.
  2. Divida el resultado por la frecuencia de contador obtenida de QueryPerformanceFrequency.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado audioclient.h

Consulte también

IAudioClock2