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


Требования к directSound Node-Ordering

У пин-кода 2D или 3D-миксера DirectSound должен быть цепочка узлов, содержащая следующую последовательность узлов:

Узлы в этом списке отображаются в том порядке, в котором они встречаются потоку данных в пин. Другие узлы могут быть перемечены между этими узлами, не вызывая проблем, если сохраняется указанное выше упорядочение.

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

Узел SRC (преобразование частоты выборки) должен предшествовать узлу SUM. Узлы SRC и SUM обычно находятся рядом, хотя это не обязательно. Метод IDirectSoundBuffer::SetFrequency (см. документацию по пакету SDK для Microsoft Windows) нарушает частоту пересчета узла SRC.

Миксер, содержащий только узлы SRC и SUM, достаточно для смешивания потоков, управляемых системными драйверами, такими как драйвер системы SWMidi и Redbook (см. драйвер системы SWMidi и драйвер системы Redbook), но DirectSound также требует, чтобы два узла тома и узел супермиксера должны предшествовать узлу SUM. DirectSound отправляет изменения громкости, вызванные вызовами IDirectSoundBuffer::SetVolume, к первому узлу громкости, а эффекты панорамирования из вызовов IDirectSoundBuffer::SetPan ко второму узлу громкости.

DirectSound может создавать 3D-эффекты на 2D-закреплении с помощью вызовов SetVolume, SetPan и SetFrequency для управления узлами громкости и частотой SRC.

  • Вызовы SetVolume могут имитировать изменения в расстоянии источника звука от прослушивателя.

  • Вызовы SetPan могут имитировать изменения в ориентации источника звука относительно прослушивателя.

  • Вызовы SetFrequency могут имитировать эффекты Doppler и HRTFs (функции передачи, связанные с головой).

Узел супермиксера — это перекрестная матрица, которая подключает входные каналы M к каналам вывода N, где N должно быть равно количеству каналов в окончательном выходном потоке устройства.

Необязательный 3D узел требуется для управления аппаратно-ускоренными 3D эффектами (см. «Поддержка ускорения 3D DirectSound в WDM Audio»), но не требуется для программной 3D обработки. Большинство существующих реализаций помещают трехмерный узел перед узлом SRC и между первым узлом тома и узлом супермиксера, но возможны другие конфигурации.

Входной поток к 3D-узлу обычно содержит один канал. В DirectSound 8.0 и более поздних версиях можно создавать только моно буферы PCM с трехмерными эффектами. Более ранние версии DirectSound, однако, поддерживают 3D-узлы как с моно, так и со стерео входными потоками, и драйверы должны поддерживать оба типа потоков для обеспечения совместимости со старыми приложениями.