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


Изучение обработчика звука Windows Vista

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

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

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

Как показано на схеме, предоставляемые системой APOs и SAPOs являются основными стандартными блоками звукового модуля. Звуковой модуль настраивает предоставляемые системой API и SAPOS в компоненты, называемые каналами. Существует два типа каналов в звуковом движке:

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

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

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

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

Повышение баса

LFX

Управление басами

LFX

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

LFX

Низкочастотная защита

LFX

Заливка говорящего

LFX

Фантомное распознавание говорящего

LFX

Виртуальное окружение

LFX

Виртуализированное окружение по наушникам

LFX

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

GFX

Исправление помещений

GFX

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

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

Общий режим

В общем режиме звуковое приложение совместно использует звуковое оборудование с другими звуковыми приложениями, выполняющимися в других процессах. Звуковой модуль смешивает потоки из этих приложений и воспроизводит полученный микс через оборудование. Любое приложение, которое открывает поток в режиме общего доступа, должно выбрать формат микса, используемый обработчиком звука. Преимущество использования общего режима заключается в том, что обработчик звука 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. Затем аудиослужба согласовывает с APO LFX, чтобы установить формат звуковых данных на входных и выходных данных APO. Дополнительные сведения см. в разделе Согласование формата.