Поделиться через


Метод IAudioClock2::GetDevicePosition (audioclient.h)

Метод GetDevicePosition получает текущее положение устройства в кадрах непосредственно от оборудования.

Синтаксис

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

Параметры

[out] DevicePosition

Получает положение устройства в кадрах. Полученная позиция — это необработаемое значение, которое метод получает непосредственно из оборудования. Дополнительные сведения см. в подразделе "Примечания".

[out] QPCPosition

Получает значение счетчика производительности в момент, когда устройство конечной точки аудио считывает позицию устройства, полученную в параметре DevicePosition , в ответ на вызов GetDevicePosition .
GetDevicePosition преобразует значение счетчика в 100-наносекундные единицы времени, прежде чем записывать его в QPCPosition. QPCPosition может иметь значение NULL , если клиенту не требуется значение счетчика производительности. Дополнительные сведения см. в подразделе "Примечания".

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK.

Код возврата Описание
E_POINTER
Параметр DevicePosition имеет значение NULL.
AUDCLNT_E_DEVICE_INVALIDATED
Конечная точка звука отключена.
AUDCLNT_S_POSITION_STALLED
Метод IAudioClient::Start не был вызван для этого потока.

Комментарии

Этот метод применяется только к потокам общего режима.

Этот метод извлекает два коррелированных значения позиции потока:

  • Положение устройства. Клиент получает необработанные позиции устройства в DevicePosition. Это положение потока образца, который в настоящее время воспроизводит динамики (для потока отрисовки) или записывается через микрофон (для потока захвата). Частота выборки конечной точки устройства может отличаться от частоты выборки в формате набора, используемом клиентом. Чтобы получить расположение устройства от клиента, вызовите IAudioClock::GetPosition.
  • Счетчик производительности. Клиент получает счетчик производительности в QPCPosition. GetDevicePosition получает значение счетчика, вызывая функцию QueryPerformanceCounter в момент, когда устройство конечной точки аудио сохраняет позицию потока в параметре DevicePosition метода GetDevicePosition . GetDevicePosition преобразует значение счетчика в 100-наносекундные единицы времени. Дополнительные сведения о QueryPerformanceCounter и QueryPerformanceFrequency см. в документации по Windows SDK.
Учитывая положение устройства и счетчик производительности во время вызова GetDevicePosition , клиент может получить более своевременную оценку положения устройства позже, вызвав QueryPerformanceCounter , чтобы получить текущий счетчик производительности, и экстраполируя положение устройства в зависимости от того, насколько далеко счетчик продвинулся с момента записи исходного положения устройства. Клиент может вызвать функцию QueryPerformanceCounter , чтобы получить частоту часов, которые увеличивают счетчик. Перед сравнением необработанного значения счетчика, полученного из QueryPerformanceCounter , со значением, полученным методом GetDevicePosition, преобразуйте необработанное значение счетчика в 100-наносекундные единицы времени следующим образом:
  1. Умножьте необработанное значение счетчика на 10 000 000.
  2. Разделите результат на частоту счетчика, полученную из QueryPerformanceFrequency.

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header audioclient.h

См. также раздел

IAudioClock2