DSSPEAKER_SURROUND Lautsprecherkonfiguration
Hinweis Diese Informationen gelten für Windows XP und frühere Betriebssysteme. Ab Windows Vista sind IDirectSound::GetSpeakerConfig und IDirectSound::SetSpeakerConfig veraltet.
Ein Anwendungsprogramm kann die DirectSound-Lautsprecherkonfiguration in den Surroundmodus ändern, indem die IDirectSound::SetSpeakerConfig-Methode aufgerufen wird, wobei der Parameter speaker-configuration auf DSSPEAKER_SURROUND festgelegt ist. Dies gibt ein PCM-Format mit vier Kanälen an, in dem die Kanäle linken, rechten, mittleren und hinteren Lautsprechern zugeordnet werden.
Sobald sie wirksam wird, ist die DSSPEAKER_SURROUND Einstellung für die Lautsprecherkonfiguration global und wirkt sich auf das gesamte Audiogerät aus. Alle anschließend ausgeführten Audioanwendungen unterliegen der neuen Einstellung, bis DirectSound die Einstellung erneut ändert.
DirectSound verwendet den folgenden Algorithmus, um das Audiosystem für den Surroundmodus zu konfigurieren:
DirectSound fordert den Treiber zunächst auf, in den Surround-Lautsprechermodus zu wechseln, indem eine KSPROPERTY_AUDIO_CHANNEL_CONFIG Set-Property-Anforderung an den DAC-Knoten des Treibers (oder 3D-Knoten, wenn er keinen DAC-Knoten hat) sendet. (Siehe KSNODETYPE_DAC und KSNODETYPE_3D_EFFECTS.) Die KSAUDIO_CHANNEL_CONFIG-Struktur , die diese Eigenschaftsanforderung begleitet, gibt die KSAUDIO_SPEAKER_SURROUND Lautsprecherkonfiguration an. Wenn die Anforderung erfolgreich ist, leitet das Audiogerät die vier Kanäle an vier analoge Ausgänge weiter, die direkt mit dem linken, rechten, mittleren und hinteren Lautsprecher verbunden sind.
Wenn dies fehlschlägt, fordert DirectSound den Treiber auf, das Gerät im Stereolautsprechermodus zu konfigurieren und seinen KSNODETYPE_PROLOGIC_ENCODER Knoten zu aktivieren, falls vorhanden. Wenn dies erfolgreich ist, konvertiert das Gerät den vierkanaligen Stream aus der Anwendung in ein Surround-codiertes Stereosignal, das es in digitaler oder analoger Form ausgibt. (Die Hardware sollte die Codierung nach dem Mischen der Streams durchführen, die in die verschiedenen Mixer-Pins des Geräts fließen.) Der Benutzer kann die Stereo-Ausgänge des Geräts an einen externen Decoder anschließen, der das codierte Signal in vier Kanäle konvertiert, die an linke, rechte, mittlere und hintere Lautsprecher ausgegeben werden.
Wenn dies fehlschlägt, aktiviert DirectSound den knoten KSNODETYPE_PROLOGIC_ENCODER in KMixer. (Das Gerät befindet sich bereits im Stereomodus aus dem vorherigen Schritt.) Auch hier kann das vom Gerät ausgegebene Stereosignal an einen externen Decoder übertragen werden.
Wenn dieser Algorithmus erfolgreich ist, kann die Anwendung PCM-Puffer mit vier Kanälen erstellen und wiedergeben. In den Fällen 1 und 2 verwenden die Hardwarepuffer, aus denen das Gerät liest, vier Kanäle, aber im Fall 3 verwenden die Hardwarepuffer ein Stereoformat. Die Anwendung kann in den Fällen 1 und 2 direkt in die Hardwarepuffer schreiben, aber in Fall 3 sollte sie in einen Softwarepuffer schreiben und KMixer ermöglichen, den vierkanaligen Datenstrom der Anwendung in das für den Hardwarepuffer erforderliche Stereoformat zu konvertieren.
Im obigen Fall (3) sollte die Anwendung die Verwendung von Hardwarepuffern für einen ihrer Ausgabestreams vermeiden. Beachten Sie, dass KMixer alle Eingabestreams vor dem Codieren der Mischung mischt, um den Surround-Stereostream zu erzeugen. Jeder Stream, der in einen Hardwaremixer-Pin gelangt, wird jedoch in Hardware mit dem codierten Stereo von KMixer gemischt, was die Qualität des Surround-Audios beeinträchtigt, wenn es decodiert wird. Die Anwendung kann dies verhindern, indem nur Softwarepuffer verwendet werden.
Ein Stereostream, der von einem KSNODETYPE_PROLOGIC_ENCODER Knoten umschließend codiert wurde, kann von einem KSNODETYPE_PROLOGIC_DECODER Knoten in vier Kanäle (links, rechts, zentriert und zurück) decodiert werden.