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


KSPROPERTY_RTAUDIO_BUFFER

Свойство KSPROPERTY_RTAUDIO_BUFFER указывает выделенный драйвером циклический буфер для звуковых данных.

В следующей таблице перечислены функции этого свойства.

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

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

Да

Нет

Pin

KSRTAUDIO_BUFFER_PROPERTY

KSRTAUDIO_BUFFER

Дескриптор свойства (данные экземпляра) состоит из KSRTAUDIO_BUFFER_PROPERTY структуры, содержащей структуру KSPROPERTY вместе с другими элементами. Клиент записывает запрошенный размер буфера в структуру . Если клиенту не нужно работать с определенным базовым адресом, он должен указать базовый адрес в виде NULL.

Значение свойства (данные операции) — это структура типа KSRTAUDIO_BUFFER. Драйвер заполняет эту структуру фактическим размером буфера, базовым адресом и флагом барьера памяти для выделенного циклического буфера.

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

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

Код состояния Значение

STATUS_UNSUCCESSFUL

Невозможно выделить циклический буфер с указанным сочетанием атрибутов буфера.

STATUS_INSUFFICIENT_RESOURCES

Память для буфера не может быть выделена.

STATUS_DEVICE_NOT_READY

Устройство не готово

Комментарии

Базовый адрес — это адрес виртуальной памяти в начале циклического буфера. Клиент может напрямую получить доступ к буферу по этому адресу. Буфер является непрерывным в виртуальной памяти. Решение о том, следует ли сделать буфер непрерывным в физической памяти, остается за драйвером.

Клиент должен задать базовый адрес в дескрипторе свойства значение NULL. Драйвер задает базовый адрес в значении свойства виртуальный адрес выделенного звукового буфера.

Как правило, звуковое оборудование требует, чтобы звуковой буфер начинался и заканчиваться на границах образца или соответствовать другим типам аппаратных ограничений выравнивания. Если доступно достаточно памяти, фактический размер буфера — это запрошенный размер, округленный (вверх или вниз) до ближайшей выборки или другой ограниченной аппаратной границы. Фактический размер должен быть не ниже запрошенного; В противном случае обработчик аудиоданных API сеансов звука (WASAPI) не будет использовать буфер, и создание потока завершится ошибкой.

Если запрос свойства KSPROPERTY_RTAUDIO_BUFFER выполнен успешно, значение свойства, представляющее собой структуру типа KSRTAUDIO_BUFFER, содержит адрес и размер буфера, выделенного драйвером.

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

Если вы хотите получать уведомления о событиях, необходимо вызывать KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION вместо KSPROPERTY_RTAUDIO_BUFFER.

Требования

Версия

Доступно в Операционных системах Windows Vista и более поздних версий.

Заголовок

Ksmedia.h

См. также

KSRTAUDIO_BUFFER

KSRTAUDIO_BUFFER_PROPERTY

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION