Изучение обработчика звука Windows Vista
В этом разделе представлен обзор звукового модуля Windows Vista. В ней основное внимание уделяется концепциям, которые помогут понять, как API и SAPOs работают вместе.
На следующей схеме представлен упрощенный макет внутренней структуры звукового модуля.
Как показано на схеме, предоставляемые системой 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. Дополнительные сведения см. в разделе Согласование формата.