Изучение звукового модуля Windows Vista

В этом разделе представлен обзор звукового модуля Windows Vista. В нем рассматриваются основные понятия, которые помогут вам понять, как работают API и SAPOs.

На следующей схеме представлен упрощенный макет внутренней структуры звукового модуля.

Схема, иллюстрирующая упрощенную структуру звукового модуля Windows Vista.

Как показано на схеме, системные APO и sAPO являются основными строительными блоками звукового модуля. Звуковой модуль настраивает системные API и sAPOs в компоненты, называемые каналами. В звуковом движке есть два типа трубопроводов:

  • Потоковые каналы состоят из APO и sAPO, выполняющих цифровую обработку звука, привязанную к потоку от одного приложения. SAPO в этом типе канала называется локальными эффектами sAPO (LFX sAPO).

  • Каналы устройств состоят из APO и sAPO, которые выполняют цифровую обработку звука, глобально влияя на все потоки. sAPO в этом типе трубы называется глобальный эффект sAPO (GFX sAPO).

В следующей таблице показаны sAPOs, доступные в звуковом механизме Windows Vista и тип применяемых системных эффектов.

Windows Vista sAPO Системный эффект

Усиление басов

LFX

Управление басами (аудио)

LFX

Уравнивание громкости

LFX

Защита с низкой частотой

LFX

Заполнение звука

LFX

Фантомное воспроизведение звука через динамик

LFX

Виртуальный объемный звук

LFX

Виртуализированный объемный звук в наушниках

LFX

Расширенный звук для переносимых компьютеров

GFX

Исправление комнаты

GFX

Когда звуковое приложение инициирует обработку звука, звуковой модуль настраивает предоставляемые системой API и SAPOs в звуковой граф для обработки цифровых звуковых данных. Механизм, который используется для создания звукового графа, является системной деталью и не будет обсуждаться.

Звуковое приложение может инициировать подключение в общем режиме или монопольном режиме. Хотя набор sAPOs по умолчанию установлен с Windows Vista, sAPOs не считаются системными компонентами и поэтому настраиваются.

Общий режим

В общем режиме звуковое приложение совместно использует звуковое оборудование с другими звуковыми приложениями, работающими в других процессах. Звуковой модуль смешивает потоки из этих приложений и воспроизводит результирующее сочетание через оборудование. Любое приложение, которое открывает поток в общем режиме, должно выбрать формат смешивания, используемый звуковой подсистемой. Преимущество общего режима заключается в том, что звуковой модуль Windows Vista предоставляет встроенный объект обработки звука (APO) для обеспечения необходимых вспомогательных функций. Недостатком использования общего режима является то, что задержка аудиопотока выше, чем в монопольном режиме. В следующем примере кода показан синтаксис для инициализации аудиопотока в общем режиме.

 hResult = pAudioClient->Initialize(
        AUDCLNT_SHAREMODE_SHARED, 
        0,
        0,
        0,
 pWfx,
        &m_SubmixGuid);

Монопольный режим

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

 hResult = pAudioClient->Initialize(
            AUDCLNT_SHAREMODE_EXCLUSIVE,
            0,
            0,
            0,  
 pWfxEx,
            &m_SubmixGuid);

После того как приложение инициирует обработку звука, построитель графа настраивает sAPOs в звуковой граф и инициализирует sAPOs. Затем аудиослужба взаимодействует с LFX APO, чтобы установить формат аудиоданных на входе и выходе APO. Дополнительные сведения см. в разделе "Согласование формата".