Звуковые эффекты в XAudio2
Звуковой эффект — это объект, который принимает входящие звуковые данные и выполняет некоторые операции с данными перед их передачей. Эффект можно использовать для выполнения различных задач, включая добавление реверберации в звуковой поток и мониторинг пиковых уровней громкости.
Цепочки эффектов
Любой голос XAudio2 может содержать цепочку звуковых эффектов. Для указания цепочек эффектов можно использовать массив структур XAUDIO2_EFFECT_DESCRIPTOR . Каждый дескриптор содержит указатель на объект эффекта, предоставляемый клиентом. Эти объекты должны реализовывать интерфейсы APO. Дополнительные сведения о модели APO см. в обзоре XAPO .
Цепочки эффектов могут быть изменены клиентом динамически (во время работы подсистемы XAudio2), эффекты можно включать или отключать по отдельности, а параметры эффектов можно изменять без прерывания звука. Всякий раз, когда изменяется какой-либо аспект графа эффектов, XAudio2 снова оптимизирует граф, чтобы избежать ненужной обработки. См. статью IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect и IXAudio2Voice::SetEffectParameters.
После того как эффект присоединен к голосу XAudio2, XAudio2 берет на себя управление эффектом, и клиент не должен делать к нему дальнейшие вызовы. Самый простой способ обеспечить это — освободить все указатели на эффект.
Эффекты в цепочке эффектов заданного голоса XAudio2 должны потреблять и производить звук с плавающей запятой при частоте обработки этого голоса. Единственным аспектом аудиоформата, который они могут изменить, является количество каналов (например, эффект реверберации может преобразовать моноданные в 5.1). Клиент может использовать XAUDIO2_EFFECT_DESCRIPTOR. Поле OutputChannels для указания количества каналов, которые должен создавать каждый эффект. Цепочка эффектов завершается сбоем, если какой-либо из эффектов не может выполнить эти требования или если эффект создает несколько каналов, которые не может обработать следующий эффект. Все вызовы IXAudio2Voice::EnableEffect или IXAudio2Voice::D isableEffect , которые приводят к прекращению выполнения этих требований цепочкой эффектов, завершаются сбоем.
Интерфейсы APO, используемые в XAudio2, должны быть разрушительными. Это означает, что они всегда перезаписывают любые данные, которые находятся в выходных буферах. В противном случае результирующий звук может оказаться неправильным, так как XAudio2 не гарантирует, что эти буферы были инициализированы ранее безмолвием.
Встроенные эффекты XAudio2
В следующей таблице перечислены встроенные звуковые эффекты, предоставляемые XAudio2, и методы их создания.
Действие | Метод создания |
---|---|
Реверберации | XAudio2CreateReverb |
Измерение громкости | XAudio2CreateVolumeMeter |
Пример создания и использования экземпляра звукового эффекта см. в разделе Практическое руководство. Создание цепочки эффектов.
Пользовательские эффекты в XAudio2
API XAPO предоставляет платформу для создания пользовательских звуковых эффектов, которые можно использовать в XAudio2. Пример создания настраиваемого эффекта с помощью XAPO см. в разделе Практическое руководство. Создание XAPO.
Библиотека эффектов XAPO (XAPOFX)
XAPOFX предоставляет дополнительную библиотеку XAPOS и общий механизм их создания. Пример использования XAPOFX с XAudio2 см. в разделе Практическое руководство. Использование XAPOFX в XAudio2.
Связанные темы