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


Указание топологии

После того как поставщик оборудования решит, какие драйверы минипорта следует написать для волны и MIDI-устройств, следующим шагом будет представление топологии потоковой передачи ядра (KS) этих устройств. Топология KS состоит из набора структур данных, описывающих пути к данным, которым следуют звуковые или MIDI-потоки по мере их прохождения через каждое устройство. С помощью этой топологии драйвер предоставляет узлы управления (например, управление громкостями), которые находятся вдоль каждого пути. Как правило, приложение использует функции мультимедийного микшера WindowsXxx для изучения топологии путем перечисления последовательности узлов по каждому пути. Например, после обнаружения узла управления уровня тома приложение может задать уровень тома на этом узле. Дополнительные сведения о мультимедиа Windows см. в документации по Microsoft Windows SDK. Дополнительные сведения о представлении топологий KS функциями микшераXxx см. в разделе Преобразование топологии потоковой передачи ядра в API аудиомиксатора.

PortCls предоставляет шесть драйверов портов: WavePci, WaveCyclic, WaveRT, MIDI, DMus и Топология. (WaveRT была доступна с Windows Vista и является рекомендуемым подходом.) Драйвер порта топологии управляет частью цепи аудиоадаптера, которая смешивает потоки отрисовки с устройств волны и MIDI. Он также управляет выбором потоков захвата из входных разъемов. Несмотря на несколько вводящей в заблуждение название, драйвер порта топологии не воплощает всю топологию аудиоадаптера, хотя обычно он содержит большую часть. Другие драйверы портов влияют на остальные части топологии адаптера.

Каждый драйвер порта связан с соответствующим драйвером мини-порта, чтобы сформировать фильтр KS , представляющий определенное устройство (волны, MIDI или микшер) на звуковом адаптере, как показано в следующей таблице.

Тип фильтра Описание

ФильтрWave Xxx

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

Фильтр MIDI или DMus

Представляет MIDI-устройство, которое воспроизводит или захватывает поток MIDI.

Фильтр топологии

Представляет схему микшера адаптера.

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

Каждый фильтр имеет один или несколько контактов KS , которые служат путями для входа потоков звуковых данных и выхода из него. Как правило, контакты в фильтре топологии привязываются к контактам фильтров волны, MIDI и DMus через жесткие соединения в цепи адаптера. Эти фильтры и их соединения вместе образуют граф фильтра KS, который воплощает топологию адаптера.

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

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

На предыдущем рисунке топология на верхнем уровне состоит из соединений между фильтрами MIDI,Wave Xxx и топологии. Кроме того, каждый фильтр имеет собственную внутреннюю топологию, которая состоит из путей к данным через фильтр и узлов управления, расположенных вдоль каждого пути. Узлы помечены, как показано в следующей таблице.

Метка Описание ИДЕНТИФИКАТОР Node-Type KS

Синтезатор

Узел синтезатора

KSNODETYPE_SYNTHESIZER

DAC

Узел цифрового преобразователя в аудио

KSNODETYPE_DAC

ADC

Узел аналого-цифрового преобразователя

KSNODETYPE_ADC

Громкость

Узел управления на уровне тома

KSNODETYPE_VOLUME

Mute

Отключение звука узла управления

KSNODETYPE_MUTE

SUM

Узел суммирования

KSNODETYPE_SUM

MUX

Узел мультиплексоров

KSNODETYPE_MUX

На предыдущем рисунке контакты в левой части звукового адаптера представляют логические подключения (а не физические подключения), через которые потоки данных попадают в адаптер из системной шины или в системную шину из адаптера. Эти контакты логически подключаются к контактам источника и приемника в других фильтрах (не показаны), которые являются внешними по стороне адаптера. Как правило, эти фильтры представляют собой программные модули, которые вместе с топологией адаптера образуют более крупный граф фильтров, топологию которого можно изучить приложениями с помощью функциймикшера Xxx . Например, контакт с меткой "PCM Wave Out" на предыдущем рисунке логически подключен к обработчику звука в пользовательском режиме в Windows. Эти логические подключения поддерживаются передачей DMA через системную шину.

В отличие от этого, контакты на левом крае фильтра топологии физически подключены к контактам в фильтрах MIDI и WaveXxx . Эти подключения являются жесткими и не могут быть изменены программным обеспечением.

Мостовые контакты в правой части звукового адаптера представляют аудиоразъемы на корпусе системы. Эти контакты называются мостиками , так как они перекрещивает границу между графом фильтра KS и внешним миром.

Фильтры, контакты и узлы обычно имеют свойства, доступные клиентам (компонентам режима ядра или приложениям в пользовательском режиме) звукового драйвера. Клиент может отправить запрос на свойство KS фильтру, закреплению или узлу, чтобы запросить текущее значение свойства или изменить значение свойства. Например, узел управления уровня тома имеет свойство KSPROPERTY_AUDIO_VOLUMELEVEL , которое клиент может изменить с помощью запроса свойства KS. Узел суммирования — это пример типа узла, который обычно не имеет свойств.

Для простоты фильтр WaveXxx на предыдущем рисунке предоставляет только один контакт для приема потока вывода волн PCM из системной шины. В отличие от этого, некоторые волновые устройства предоставляют несколько контактов для вывода волн PCM и содержат оборудование для внутреннего смешивания потоков, которые входят в контакты. Эти устройства обеспечивают аппаратное ускорение для приложений, использующих DirectSound, принимая потоки PCM, которые воспроизводит из звуковых буферов приложений. Чтобы DirectSound использовал эти контакты, они должны предоставлять дополнительные узлы для двумерной (2-D) и трехмерной (трехмерной) обработки, как описано в разделе Аппаратное ускорение DirectSound в WDM Audio.

Этот тип аппаратного ускорения поддерживается в Windows Server 2003, Windows XP, Windows 2000 и Windows Me/98, но не поддерживается в Windows Vista. Windows Vista не использует контакты аппаратного ускорения на старых устройствах с волнами.

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

Контакт "Non-PCM Wave Out" в левом нижнем углу предыдущего рисунка принимает выходной поток, отличный от PCM, в формате сквозной передачи S/PDIF, например AC-3-over-S/PDIF или WMA Pro-over-S/PDIF. Используя один из этих форматов, устройство просто передает сжатые данные по каналу S/PDIF без декодирования данных. По этой причине путь к данным к закреплению S/PDIF Out в правом нижнем углу предыдущего рисунка не содержит узлов громкости или отключения звука. Дополнительные сведения о аудиоформатах, отличных от PCM, и сквозной передаче S/PDIF см. в разделе Поддержка форматов волн, не связанных с PCM, и S/PDIF Pass-Through передачи потоков, не связанных с PCM.

Драйвер мини-порта представляет свою топологию драйверу порта в виде структуры PCFILTER_DESCRIPTOR . Эта структура описывает все контакты и узлы фильтра и указывает, как контакты и узлы соединяются друг с другом.

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