KSPROPERTY_RTAUDIO_BUFFER
Свойство KSPROPERTY_RTAUDIO_BUFFER указывает выделенный драйвером циклический буфер для звуковых данных.
В следующей таблице перечислены функции этого свойства.
Сводная таблица использования
Получить | Присвойте параметру | Назначение | Тип дескриптора свойства | Тип значения свойства |
---|---|---|---|---|
Да |
Нет |
Pin |
Дескриптор свойства (данные экземпляра) состоит из 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 |