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


KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION

Запрос свойства KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION указывает текущую позицию записи буфера WaveRT в байтах. Драйвер разгрузки может использовать эти сведения о положении записи, чтобы узнать, сколько допустимых данных находится в буфере WaveRT.

Сводная таблица использования

Получить Присвойте параметру Назначение Тип дескриптора свойства Тип значения свойства

Нет

Да

Узел через экземпляр pin

KSP_NODE

ULONG

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

Запрос свойства KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION возвращает STATUS_SUCCESS, указывающий на успешное выполнение. В противном случае запрос возвращает соответствующий код состояния ошибки.

Комментарии

Чтобы лучше понять, как интерпретировать сведения, предоставляемые этим запросом свойства, предположим, что циклический буфер размером n байтов. Начальная позиция записи перед записью данных составляет 0. Данные записываются в буфер блоками, кратными байтам WAVEFORMATEX.nBlockAlign .

Например, буфер может содержать 20 мс 16-разрядных стереоданных PCM с частотой выборки 48000 Гц. Таким образом, на основе описания элемента nBlockAlign структуры WAVEFORMATEX в этом примере nBlockAlign = 2 * 16 / 8 = 4 байта. Это означает, что длина буфера будет составлять 48 000 * 20 / 1000 = 960 кадров или 960 * 4 = 3840 байт.

Первый запрос Set указывает количество байтов, записанных в буфер. Так как "позиция записи" выражается в байтах, значение 1920 будет указывать половину размера буфера, тогда как значение 3840 будет означать полный размер буфера. Чтобы определить количество записанных новых байтов для выполнения последующих запросов Set , в следующем псевдокоде показано, как выполняется вычисление:

if new write position > old write position:
     bytes written = new write position – old write position
if new write position < old write position, we’ve wrapped:
     bytes written = (new write position + buffer size) – old write position
if new write position = old write position, we’ve had a glitch
     log a "duplicate write position" glitch event

Требования

Версия

Windows 8

Заголовок

Ksmedia.h

См. также

WAVEFORMATEX