KSPROPSETID_Hrtf3d
Набор KSPROPSETID_Hrtf3d
свойств используется для настройки трехмерной функции передачи относительной головы (HRTF) для буфера DirectSound. Этот набор содержит необязательные свойства трехмерного узла (KSNODETYPE_3D_EFFECTS) на экземпляре закрепления DirectSound.
Не все трехмерные узлы поддерживают обработку HRTF. Клиент может отправить запрос базовой поддержки для свойства HRTF на трехмерный узел, чтобы определить, способен ли этот узел выполнять обработку HRTF. Трехмерный узел, поддерживающий KSPROPSETID_Hrtf3d
набор свойств, должен поддерживать все три свойства в наборе.
Определение этого набора свойств предполагает, что алгоритм HRTF реализуется с фильтрами бесконечного импульсного ответа (IIR), которые представляют эффекты источника звука в одной позиции.
Цифровые фильтры обычно имеют начальный временный ответ. При перемещении источника из одной позиции в другую коэффициенты фильтра изменяются, и алгоритм HRTF перекрестно исчезает выходные данные из фильтра в старой позиции в фильтр в новой позиции. Элемент FilterTransientMuteLength структуры KSDS3D_HRTF_INIT_MSG указывает количество выборок, на которые следует задерживать перекрестное затухание, чтобы избежать отрисовки начального временного фильтра. В течение этого времени выходные данные поступают только из старых фильтров. Элемент FilterOverlapBufferLength (та же структура) указывает общее количество выборок, для которых необходимо отключить и перекрестно исчезать выходные данные фильтра.
Когда источник перемещается из правой половины плоскости влево, фильтры переключаются. Этот переключатель может вызвать звуковой сигнал. Элемент SwapChannels структуры KSDS3D_HRTF_PARAMS_MSG сообщает алгоритму HRTF переключить выходные данные, чтобы изменить расположение источника на другую половину плоскости. Член CrossFadeOutput (та же структура) указывает алгоритму перекрестно исчезать выходные каналы после перехода через угол азимута. Элемент OutputOverlapBufferLength KSDS3D_HRTF_INIT_MSG указывает количество выборок, для которых будет происходить перекрестное исчезание при этом переходе.
Из-за симметрии в алгоритм HRTF необходимо загрузить только половину коэффициентов фильтра, если угол азимута равен нулю. Элемент ZeroAzimuth KSDS3D_HRTF_PARAMS_MSG указывает, когда происходит это условие.
Сведения о настройке обработки HTRF с помощью API DirectSound см. в документации по Microsoft Windows SDK.
Набор KSPROPSETID_Hrtf3d
свойств содержит следующие три элемента: