DSSPEAKER_SURROUND說話者設定

注意 此資訊適用于 Windows XP 和舊版作業系統。 從 Windows Vista 開始, IDirectSound::GetSpeakerConfigIDirectSound::SetSpeakerConfig 已被取代。

應用程式可以藉由呼叫 IDirectSound::SetSpeakerConfig 方法,並將 speaker-configuration 參數設為 DSSPEAKER_SURROUND,將 DirectSound 喇叭設定變更為環繞模式。 這會指定四個通道 PCM 格式,其中通道會對應至左、右、置中和背面喇叭。

一旦生效,DSSPEAKER_SURROUND喇叭組態設定會是全域的,而且會影響整個音訊裝置。 後續執行的所有音訊應用程式都會受限於新的設定,直到 DirectSound 再次變更設定為止。

DirectSound 會使用下列演算法來設定音訊系統進行環繞模式:

  1. DirectSound 會先要求驅動程式進入環繞喇叭模式,方法是將 KSPROPERTY_AUDIO_CHANNEL_CONFIG set-property 要求傳送至驅動程式的 DAC 節點 (或 3D 節點,如果沒有 DAC 節點) 。 (請參閱 KSNODETYPE_DACKSNODETYPE_3D_EFFECTS.) 此屬性要求隨附 的 KSAUDIO_CHANNEL_CONFIG 結構會指定KSAUDIO_SPEAKER_SURROUND喇叭組態。 如果要求成功,音訊裝置會將四個通道路由傳送至四個直接連線到左、右、置中和背面喇叭的類比輸出。

  2. 如果失敗,DirectSound 會要求驅動程式以身歷聲喇叭模式設定裝置,並在有裝置時啟用其 KSNODETYPE_PROLOGIC_ENCODER 節點。 如果成功,裝置會將四通道串流從應用程式轉換成以數位或類比形式輸出的周遭編碼身歷聲訊號。 (硬體應該在混合流向裝置的各種混音器針腳之後進行編碼。) 使用者可以將裝置的身歷聲輸出連接到外部解碼器,將編碼訊號轉換成輸出至左、右、置中和後喇叭的四個通道。

  3. 如果失敗,DirectSound 會在 KMixer 中啟用KSNODETYPE_PROLOGIC_ENCODER節點。 (裝置已在上一個步驟中的身歷聲模式。) 同樣地,裝置所輸出的身歷聲訊號可以饋送至外部解碼器。

如果此演算法成功,應用程式可以建立並播放四通道 PCM 緩衝區。 在上述案例 1 和 2 中,裝置讀取的硬體緩衝區會使用四個通道,但在 3 個情況下,硬體緩衝區會使用身歷聲格式。 應用程式可以在 1 和 2 的情況下直接寫入硬體緩衝區,但在案例 3 中,它應該寫入軟體緩衝區,並允許 KMixer 將應用程式的四通道串流轉換為硬體緩衝區所需的周遭範圍編碼身歷聲格式。

如果上述 (3) ,應用程式應該避免針對其任何輸出資料流程使用硬體緩衝區。 請注意,KMixer 會先混合所有輸入資料流程,再編碼混合以產生環繞身歷聲串流。 不過,任何輸入硬體混音器針腳的串流會混合在硬體中,且具有 KMixer 編碼的身歷聲,這會在解碼時降低環繞音訊的品質。 應用程式只能使用軟體緩衝區來防止這種情況。

KSNODETYPE_PROLOGIC_ENCODER節點所編碼的身歷聲資料流程可以解碼為四個通道, (左、右、置中和後) KSNODETYPE_PROLOGIC_DECODER節點。