Архитектура объекта обработки звука

Объекты обработки звука (API), обеспечивают настраиваемую обработку цифровых сигналов на основе программного обеспечения для аудиопотоков Windows.

Обзор объектов обработки звука

Windows позволяет изготовителям оборудования OE и сторонним производителям звукового оборудования включать пользовательские эффекты обработки цифровых сигналов в рамках дополнительных функций драйвера звука. Эти эффекты упаковываются в виде объектов обработки звука в режиме пользователя (API).

Объекты обработки звука (API), обеспечивают обработку цифровых сигналов на основе программного обеспечения для аудиопотоков Windows. APO — это объект узла COM, содержащий алгоритм, написанный для предоставления определенного эффекта цифровой обработки сигналов (DSP). Эта возможность неофициально называется "аудиоэффект". Примерами APO являются графические эквалайзеры, ревербераторы, тремоло, акустическая отмена эха (AEC) и автоматическая регулировка усиления (AGC). APO — это внутрипроцессные объекты на базе COM, работающие в реальном времени.

Заметка Описания и терминология в этой документации относятся главным образом к выходным устройствам, таким как динамики. Однако технология симметричная и работает в обратном направлении для устройств ввода.

Программные APO и аппаратные DSP

Аппаратный цифровой обработчик сигналов (DSP) — это специализированный микропроцессор (или блок SIP), который оптимизирован для операционной обработки цифровых сигналов. Существуют значительные преимущества для реализации аудиообработки в специально созданном оборудовании и использовании программного APO. Одним из преимуществ является то, что использование ЦП и связанное потребление энергии может быть ниже с аппаратным оборудованием, реализованным DSP.

Существуют и другие преимущества и недостатки, связанные с целями и ограничениями проектов, которые необходимо учитывать перед реализацией APO на основе программного обеспечения.

Эффекты на основе программного обеспечения вставляются в канал программного устройства при инициализации потока. Эти решения выполняют обработку всех своих эффектов на основном ЦП и не полагаются на внешнее оборудование. Этот тип решения лучше всего подходит для традиционных звуковых решений Windows, таких как HDAudio, USB и Bluetooth, когда драйвер и оборудование поддерживают только обработку RAW. Дополнительные сведения об обработке RAW см. в разделе "Режимы обработки звуковых сигналов".

Прокси APO для аппаратного DSP

Любые эффекты, применяемые в аппаратном DSP, должны быть объявлены через прокси-APO. Корпорация Майкрософт предоставляет прокси APO по умолчанию (MsApoFxProxy.dll). Чтобы использовать предоставленный Корпорацией Майкрософт APO, этот набор свойств и свойство должны поддерживаться.

При необходимости можно реализовать собственный прокси-сервер APO.

Предоставляемые windows (системные) API

Windows устанавливает набор API по умолчанию, предоставляющий ряд различных звуковых эффектов. Список предоставленных эффектов APO системы см. в разделе "Режимы обработки звуковых сигналов".

Изготовители оборудования могут включать все предоставленные системой API или заменить некоторые или все из них пользовательскими API.

Пользовательские API

Можно создать пользовательские API для улучшения возможностей звука Windows, добавив дополнительные звуковые эффекты.

Изготовитель оборудования может включать любое сочетание предоставленных API Windows и пользовательских API при отправке Windows.

Пользовательский APO может быть установлен изготовителем оборудования или сторонним поставщиком, чтобы улучшить качество звука после покупки устройства. Когда пользователи устанавливают драйвер аудиоустройства с помощью стандартного INF-файла, они автоматически получают доступ к API системы. Независимые поставщики оборудования (IHV) и изготовители исходного оборудования (OEM) могут предоставлять дополнительные пользовательские системные эффекты при использовании драйверов классов Майкрософт. Они делают это, упаковав алгоритмы DSP в качестве API и изменив стандартный INF-файл, чтобы вставить их API в граф обработки сигналов звукового модуля.

Дополнительные сведения о создании пользовательских API см. в разделе "Реализация объектов обработки звука".

Пользовательское приложение поддержки APO

Чтобы разрешить пользователю настраивать параметры, связанные с пользовательским APO, рекомендуется создать приложение поддержки оборудования. Дополнительные сведения см. в разделе приложение поддержки оборудования (HSA): действия для разработчиков драйверов.

Пользовательские тесты и требования APO

Microsoft HLK предоставляет тесты, которые можно использовать с API. Дополнительные сведения об звуковых тестах см. в разделе Device.Audio Testing и Device.Audio Test.

Эти два теста могут быть особенно полезными при работе с API.

Проверка обнаружения звуковых эффектов (вручную) — сертификация

Проверка SysFX

Сведения о требованиях к звуку для поддержки API см. в статье Device.Audio Requirements.

Пользовательские инструменты и служебные программы APO

Для изучения доступных звуковых эффектов можно использовать пример обнаружения звуковых эффектов. В этом примере показано, как запрашивать звуковые эффекты для отрисовки и записи звуковых устройств и отслеживать изменения с помощью звуковых эффектов. Он входит в состав примеров пакета SDK и можно скачать с помощью этой ссылки:

Пример обнаружения звуковых эффектов

Осведомленность о эффекте звука приложения

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

Архитектура объектов обработки звука

Размещение звуковых эффектов

Существует три разных расположения для звуковых эффектов, реализованных как API. Они находятся в эффектах потока (SFX), эффектах режима (MFX) и конечных эффектах (EFX).

Stream Effect (SFX)

APO эффекта потока имеет экземпляр эффекта для каждого потока. Потоковые эффекты находятся до смешивания (отрисовки) или после tee (захвата) для заданного режима и могут использоваться для изменения количества каналов перед миксером. Эффекты потоков не используются для необработанных потоков.

Некоторые версии Windows в качестве оптимизации не загружают API SFX или MFX в режиме RAW.

  • Windows 8.1 не загружает RAW SFX или RAW MFX
  • Windows 10 загружает RAW MFX, но не RAW SFX

Эффект режима (MFX)

Эффекты режима (MFX) применяются ко всем потокам, которые связаны с одним и тем же режимом. Эффекты режима применяются после смешивания (отрисовки) или до tee (захвата) для одного режима, но до смешивания (отрисовки) или после tee (захвата) всех режимов. Любой сценарий конкретный эффект или эффект, который не нуждается в специфике эффекта потока, должен быть помещен здесь. Более эффективно использовать эффект режима, так как существует один экземпляр для нескольких потоков, которые имеют одинаковые характеристики, такие как периодичность и формат.

Эффект конечной точки (EFX)

Эффект конечной точки (EFX) применяется ко всем потокам, которые используют одну и ту же конечную точку. Эффект конечной точки всегда применяется даже к необработанным потокам. То есть это после смешивания (рендеринга) или до типа (захвата) всех режимов. Эффекты конечных точек следует использовать с осторожностью, и при сомнении эффект должен быть помещён в область Режима. Некоторые эффекты, которые должны быть помещены в область конечной точки, являются защитой динамиков и компенсацией динамиков.

На этой схеме показаны возможные расположения для эффектов потока (SFX), режима (MFX) и конечных точек (EFX) для Windows 10.

Схема, демонстрирующая размещение потоков, режимов и конечных точек в Windows 10.

Несколько настраиваемых эффектов APO

Можно настроить несколько эффектов на основе APO для работы с различными приложениями.

На этой схеме показано, как несколько приложений могут получить доступ к нескольким сочетаниям потоков, режимов и эффектов APO конечной точки. Все API основаны на COM и выполняются в пользовательском режиме. В этом сценарии ни один из эффектов не выполняется в аппаратном или в режиме ядра.

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

Заметка Полосу прокрутки можно использовать в нижней части этой страницы, чтобы просмотреть всю эту схему.

Эффекты режима программного обеспечения и эффекты аппаратной конечной точки для отрисовки и записи

На этой схеме показаны эффекты режима программного обеспечения и эффекты конечных точек оборудования для отрисовки и записи.

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

Система с DSP и аппаратными эффектами

На этой схеме показана система, оснащенная DSP, которая реализует эффекты в оборудовании. В этом сценарии необходимо создать Прокси APO, чтобы сообщить приложениям об эффектах, реализованных в оборудовании.

Схема, изображающая систему, оснащенную DSP, реализующую эффекты в оборудовании.

Объекты обработки звука Windows

Реализация звукового драйвера с аппаратной разгрузкой