Обзор аппаратного ускорения DirectSound

Ряд аудиоадаптеров предлагает возможность аппаратного ускорения DirectSound, что позволяет аппаратное смешивание для одного или нескольких потоков DirectSound. Аппаратное микширование повышает производительность, перенося операции смешивания звука с процессора и выполняя их на аппаратном уровне. Помимо смешивания, оборудование выполняет связанные операции, такие как преобразование частоты выборки (SRC), аттенуация и, при необходимости, трехмерная обработка, которая в противном случае должна быть выполнена в программном обеспечении.

Все устройства воспроизведения WaveCyclic или WavePci имеют один или несколько аппаратных выводов для смешивания звуковых потоков. В случае однопоточного устройства системный драйвер KMixer всегда инициализируется на одном доступном пине рендеринга оборудования.

Устройства с аппаратным ускорением DirectSound предоставляют более одного аппаратного микшировочного контакта. Каждый дополнительный пин можно использовать для микширования потока DirectSound. Потоки DirectSound, которые задействуются в аппаратные контакты микшера, обходят KMixer и избегают задержки программного смешивания внутри KMixer. DirectSound использует все доступные аппаратные ускоренные микшерные входы аудиоустройства, при условии, что эти входы имеют топологию, соответствующую требованиям к упорядочению узлов DirectSound. DirectSound также требует, чтобы пин-коды поддерживали формат данных DirectSound, указанный KSDATAFORMAT_SPECIFIER_DSOUND (см. формат данных DirectSound Stream).

Системный драйвер SysAudio всегда резервирует один аппаратный пин-код для KMixer таким образом, чтобы после того, как все остальные (незарегирвированные) аппаратные пин-коды были выделены, все дополнительные потоки можно смешать KMixer и передать в зарезервированный аппаратный пин-код.

Рисунок в Отрисовка Содержимого Волны с Использованием Программных и Аппаратных Буферов DirectSound иллюстрирует эти концепции.

Если звуковое устройство имеет достаточное количество аппаратных микшировочных разъёмов, все выходные потоки приложения DirectSound могут быть аппаратно ускорены. В противном случае приложение DirectSound имеет несколько вариантов:

  • Он может статически выделять доступные аппаратные прикрепления для потоков, требующих наименьшей задержки.

  • Он может динамически выделять доступные аппаратные контакты для смешивания потокам по мере необходимости, рассматривая эти контакты как общий пул ресурсов.

Дополнительные сведения см. в обсуждении управления голосовой связью в документации по пакету SDK для Microsoft Windows.

DirectSound может использовать два типа аппаратных микшеров: 2D и 3D. 2D штифт выполняет SRC, ослабление и смешивание, но не 3D-позиционирование. DirectSound может использовать 2D-пин для 3D-позиционирования, выполняя необходимые вычисления аттенуации и частоты с помощью программного обеспечения и применяя результаты к соответствующим узлам на 2D-пине. В отличие от этого, 3D-закрепление содержит трехмерный узел, который может вычислить собственные трехмерные эффекты непосредственно из 3D-буфера и 3D-прослушивателя, а не полагаться на DirectSound для этого. Список свойств трехмерного узла см. в KSNODETYPE_3D_EFFECTS. Дополнительные сведения о 2D-и трехмерных закреплениях см. в разделе "Поддержка 2D DirectSound Ускорение в WDM Audio и поддержка 3D DirectSound Ускорение в WDM Audio".