Обзор аппаратного ускорения DirectSound
Ряд аудиоадаптеров предлагает аппаратное ускорение DirectSound, которое позволяет выполнять аппаратное микширование для одного или нескольких потоков DirectSound. Аппаратное микширование повышает производительность за счет разгрузки операций микширования звука из ЦП и выполнения их на аппаратной скорости. Помимо смешивания, оборудование выполняет связанные операции, такие как преобразование частоты выборки (SRC), затухание и, при необходимости, трехмерная обработка, которые в противном случае необходимо было бы выполнить в программном обеспечении.
Все устройства отрисовки WaveCyclic или WavePci используют один или несколько аппаратных контактов для смешивания аудиопотоков. В случае однопотокового устройства экземпляр системного драйвера KMixer всегда создается на одном доступном контакте отрисовки оборудования.
Устройства с аппаратным ускорением DirectSound предоставляют несколько контактов смешивания оборудования. Каждый дополнительный контакт можно использовать для смешивания потока DirectSound. Потоки DirectSound, которые передаются в контакты аппаратного микшера, обходят KMixer и избежать задержки смешивания программного обеспечения в KMixer. DirectSound использует все доступные аппаратные контакты микшера звукового устройства, если эти контакты имеют топологию, соответствующую требованиям к упорядочению узлов DirectSound. DirectSound также требует, чтобы контакты поддерживали формат данных DirectSound, указанный в KSDATAFORMAT_SPECIFIER_DSOUND (см. раздел Формат данных потока DirectSound).
Системный драйвер SysAudio всегда резервирует один аппаратный контакт для KMixer, чтобы после выделения всех остальных (незарезервированных) аппаратных контактов KMixer смешивал все дополнительные потоки и передавался в зарезервированный аппаратный контакт.
Эти понятия показаны на рисунке в разделе Отрисовка содержимого волн с помощью программного обеспечения и аппаратных буферов DirectSound .
Если звуковое устройство предоставляет достаточное количество аппаратных микширования контактов, все выходные потоки приложения DirectSound могут быть аппаратно ускорены. В противном случае приложение DirectSound имеет несколько вариантов:
Он может статически выделять доступные аппаратные смешивания контактов для потоков, требующих наименьших задержек.
Он может динамически выделять доступные аппаратные смешивания контактов для потоков по мере необходимости, рассматривая контакты как пул общих ресурсов.
Дополнительные сведения см. в обсуждении управления голосовой связью в документации по Microsoft Windows SDK.
DirectSound может использовать два типа контактов аппаратного микшера: 2D и 3D. Двухd-штырь выполняет SRC, затухание и смешивание, но не трехмерное позиционирование. DirectSound может использовать двухd-контакт для трехмерного позиционирования, выполняя необходимые вычисления затухания и частоты в программном обеспечении и применяя результаты к соответствующим узлам на двухd-контакте. Напротив, трехмерный контакт содержит трехмерный узел, который может вычислять собственные трехмерные эффекты непосредственно из свойств 3D-буфера и прослушивателя, а не полагаться на DirectSound для этого. Список свойств трехмерного узла см. в разделе KSNODETYPE_3D_EFFECTS. Дополнительные сведения о двухмерных и трехмерных контактах см. в разделах Поддержка двухмерного ускорения DirectSound в WDM Audio и Поддержка 3D DirectSound Acceleration in WDM Audio.