KSPROPERTY_RTAUDIO_POSITIONREGISTER
Свойство KSPROPERTY_RTAUDIO_POSITIONREGISTER сопоставляет регистр положения звукового устройства для определенного потока с расположением виртуальной памяти, к которому у клиента есть доступ.
В следующей таблице перечислены функции этого свойства.
Сводная таблица использования
Получить | Присвойте параметру | Назначение | Тип дескриптора свойства | Тип значения свойства |
---|---|---|---|---|
Да |
Нет |
Pin |
Дескриптор свойства (данные экземпляра) — это структура KSRTAUDIO_HWREGISTER_PROPERTY, которая содержит структуру KSPROPERTY . Перед отправкой запроса клиент загружает структуру со значениями, указывающими предпочтительный базовый адрес для регистра.
Значение свойства (данные операции) — это структура KSRTAUDIO_HWREGISTER, в которую обработчик свойств записывает виртуальный адрес, с которым сопоставлен регистр положения оборудования. Клиент может напрямую считывать регистр по этому адресу. Структура KSRTAUDIO_HWREGISTER также указывает скорость приращения регистра позиции.
Возвращаемое значение
Запрос свойства KSPROPERTY_RTAUDIO_POSITIONREGISTER возвращает STATUS_SUCCESS, указывающий на успешное выполнение. В противном случае запрос возвращает соответствующий код состояния сбоя.
Комментарии
Как правило, звуковые приложения должны отслеживать текущее положение аудиопотока. Эта позиция указывается как смещение в байтах от начала потока:
В случае потока отрисовки положение потока — это смещение в байтах звукового кадра, который в настоящее время воспроизводим через цифровые аналоговые преобразователи (DAC).
В случае потока захвата положение потока — это смещение в байтах звукового кадра, который в настоящее время записывается через аналого-цифровые преобразователи (АЦОД).
Некоторые звуковые устройства содержат регистры позиций, которые постоянно увеличиваются во время выполнения потока. Для звукового устройства, которое включает все цифровые и аналоговые функции в одну микросхему, регистр положения обычно указывает текущую позицию потока напрямую.
Однако для набора микросхем, который разделяет цифровые и аналоговые функции на отдельные микросхемы контроллера шины и кодека, регистр положения обычно располагается в микросхеме контроллера шины и указывает на следующее:
В случае потока отрисовки регистр позиции указывает смещение в байтах последнего звукового кадра, записанного контроллером шины в кодек.
В случае потока захвата регистр позиции указывает смещение в байтах последнего звукового кадра, считываемого контроллером шины из кодека.
В обоих случаях значение регистра позиции не включает задержку в кодеке. Если клиент определил задержку кодека, он может добавить эту задержку к значению регистра позиции, чтобы оценить истинную позицию потока (в DAC или ADC). Для значения CodecDelay, указывающего наихудшую задержку в кодека, можно запросить свойство KSPROPERTY_RTAUDIO_HWLATENCY .
В случае успешного выполнения запроса свойства KSPROPERTY_RTAUDIO_POSITIONREGISTER регистр позиции сопоставляется с адресом виртуальной памяти, который доступен клиенту в пользовательском режиме или режиме ядра, как указано клиентом. После этого клиент считывает с этого адреса, чтобы получить текущее значение регистра позиции.
Запрос свойства завершается ошибкой, если звуковое оборудование не поддерживает регистр позиции, который можно сопоставить с виртуальным адресом. В этом случае клиент должен определить позицию из свойства KSPROPERTY_AUDIO_POSITION .
Сопоставление регистра позиций уничтожается при закрытии контакта. Клиент может сопоставить регистр только один раз за время существования открытого контакта, и любой последующий вызов для повторного сопоставления регистра позиции для контакта завершается ошибкой.
Обычно считывать регистр позиции быстрее, чем отправлять запрос KSPROPERTY_AUDIO_POSITION, который требует перехода между пользовательским режимом и режимом ядра для клиентов в пользовательском режиме.
Требования
Версия |
Доступно в операционных системах Windows Vista и более поздних версий. |
Заголовок |
Ksmedia.h |