KSPROPSETID_Hrtf3d
Der KSPROPSETID_Hrtf3d
Eigenschaftssatz wird verwendet, um die 3D-Head-Relative Transfer-Funktion (HRTF) für einen DirectSound-Puffer zu konfigurieren. Dieser Satz enthält optionale Eigenschaften eines 3D-Knotens (KSNODETYPE_3D_EFFECTS) auf einem DirectSound-Pin instance.
Nicht alle 3D-Knoten unterstützen die HRTF-Verarbeitung. Ein Client kann eine grundlegende Unterstützungsabfrage für eine HRTF-Eigenschaft an einen 3D-Knoten senden, um zu bestimmen, ob dieser Knoten die HRTF-Verarbeitung durchführen kann. Ein 3D-Knoten, der den KSPROPSETID_Hrtf3d
Eigenschaftensatz unterstützt, muss alle drei Eigenschaften in der Gruppe unterstützen.
Bei der Definition dieses Eigenschaftensatzes wird davon ausgegangen, dass der HRTF-Algorithmus mit IIR-Filtern (Infinite Impulse Response) implementiert wird, die die Auswirkungen einer Audioquelle an einer einzelnen Position darstellen.
Digitale Filter haben in der Regel eine anfängliche vorübergehende Antwort. Beim Verschieben einer Quelle von einer Position zur nächsten ändern sich die Filterkoeffizienten, und der HRTF-Algorithmus überblendet die Ausgaben des Filters an der alten Position zum Filter an der neuen Position. Der FilterTransientMuteLength-Member der KSDS3D_HRTF_INIT_MSG-Struktur gibt die Anzahl der Stichproben an, mit denen das Querblenden verzögert werden soll, um zu vermeiden, dass die anfängliche Transiente des neuen Filters gerendert wird. Während dieser Zeit stammt die Ausgabe nur aus den alten Filtern. Der FilterOverlapBufferLength-Member (dieselbe Struktur) gibt die Gesamtzahl der Stichproben an, über die die Filterausgaben stummgeschaltet und ausgeblendet werden sollen.
Wenn die Quelle von der rechten Halbebene nach links wechselt, wird der Filter gewechselt. Dieser Schalter kann zu einem hörbaren Pop führen. Der SwapChannels-Member der KSDS3D_HRTF_PARAMS_MSG-Struktur weist den HRTF-Algorithmus an, die Ausgaben zu tauschen, um den Speicherort der Quelle auf die andere Halbebene umzukehren. Der CrossFadeOutput-Member (dieselbe Struktur) weist den Algorithmus an, die Ausgabekanäle nach einem Übergang über den Azimutwinkel null zu kreuzen. Der OutputOverlapBufferLength-Member von KSDS3D_HRTF_INIT_MSG gibt die Anzahl der Stichproben an, die bei diesem Übergang überkreuzt werden sollen.
Aufgrund der Symmetrie muss nur die Hälfte der Filterkoeffizienten in den HRTF-Algorithmus heruntergeladen werden, wenn der Azimutwinkel null ist. Der ZeroAzimuth-Member von KSDS3D_HRTF_PARAMS_MSG gibt an, wann diese Bedingung auftritt.
Informationen zum Konfigurieren der HTRF-Verarbeitung über die DirectSound-API finden Sie in der Microsoft Windows SDK-Dokumentation.
Der KSPROPSETID_Hrtf3d
Eigenschaftensatz enthält die folgenden drei Member: