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 |