Требования к Node-Ordering DirectSound
Контакт двухмерного или трехмерного микшера DirectSound должен иметь цепочку узлов, содержащую следующую последовательность узлов:
Узел тома (см . KSNODETYPE_VOLUME.)
Трехмерный узел (этот узел является необязательным. См . KSNODETYPE_3D_EFFECTS.)
Узел супермиксера (см . KSNODETYPE_SUPERMIX.)
Узел тома (для эффектов сдвига)
Узел SRC (см . KSNODETYPE_SRC.)
Узел SUM (см . KSNODETYPE_SUM.)
Узлы в этом списке отображаются в том порядке, в котором они встречаются при потоковой передаче данных в контакт. Другие узлы могут чередуться между этими узлами, не вызывая проблем, при условии, что указанный выше порядок сохраняется.
Для двухD-закрепления требуются все узлы из предыдущего списка, за исключением трехмерного узла, который является необязательным. Для трехмерного контакта требуются все узлы в списке, включая трехмерный узел.
Узел SRC (преобразование частоты выборки) должен предшествовать узлу СУММ. Узлы SRC и SUM обычно находятся рядом, хотя это не является обязательным требованием. Метод IDirectSoundBuffer::SetFrequency (см. Microsoft Windows SDK документацию) изменяет частоту повторной выборки узла SRC.
Микшера, содержащего только узлы SRC и SUM, достаточно для смешивания потоков, управляемых системными драйверами, такими как SWMidi и Redbook (см. раздел Драйвер системы SWMidi и Системный драйвер Redbook), но DirectSound дополнительно требует, чтобы два узла тома и узел супермиксера предшествовали узлу SUM. DirectSound отправляет изменения тома в результате вызовов IDirectSoundBuffer::SetVolume на первый узел тома и отправляет эффекты сдвига из вызовов IDirectSoundBuffer::SetPan на второй узел тома.
DirectSound может создавать трехмерные эффекты на двухмерном контакте с помощью вызовов SetVolume, SetPan и SetFrequency для управления томом и узлами SRC:
Вызовы SetVolume могут имитировать изменения расстояния от источника звука от прослушивателя.
Вызовы SetPan могут имитировать изменения ориентации источника звука относительно прослушивателя.
Вызовы SetFrequency могут имитировать эффекты Doppler и HRTFs (функции передачи, связанные с головой).
Узел супермиксера — это перекрестная матрица, которая соединяет входные каналы M с N выходными каналами, где N должно быть равно количеству каналов в конечном выходном потоке устройства.
Необязательный трехмерный узел требуется для управления эффектами трехмерной обработки с аппаратным ускорением (см. раздел Поддержка 3D-ускорения DirectSound в WDM Audio), но не требуется для программно-эмулированной трехмерной обработки. Большинство существующих реализаций размещают трехмерный узел перед узлом SRC и между первым узлом тома и узлом супермиксера, но возможны и другие конфигурации.
Входной поток для трехмерного узла обычно содержит один канал. В DirectSound 8.0 и более поздних версиях с трехмерными эффектами можно создавать только буферы mono PCM. Более ранние версии DirectSound, однако, поддерживают трехмерные узлы с моно- и стереофонические входные потоки, а драйверы должны поддерживать оба типа для обеспечения совместимости со старыми приложениями.