KSAUDIO_CHANNEL_CONFIG 結構 (ksmedia.h)
KSAUDIO_CHANNEL_CONFIG 結構會指定音訊數據流數據格式內的通道組態。
語法
typedef struct {
LONG ActiveSpeakerPositions;
} KSAUDIO_CHANNEL_CONFIG, *PKSAUDIO_CHANNEL_CONFIG;
成員
ActiveSpeakerPositions
指定通道數目,以及這些通道指派給說話者位置。 這個成員是位掩碼,遮罩內的每一個位都會對應至特定的說話者位置。 如果已設定遮罩位,音訊數據流會包含指派給遮罩位所代表說話者位置的通道。 數據流中的通道數目是藉由計算位掩碼中顯示的數位數目來取得。 如需詳細資訊,請參閱接下來的<備註>一節。
備註
這個結構是用來設定或取得 KSPROPERTY_AUDIO_CHANNEL_CONFIG 屬性的數據值。
下表顯示為 ActiveSpeakerPositions 成員定義的旗標位。
喇叭位置 | 旗標位 |
---|---|
SPEAKER_FRONT_LEFT | 0x1 |
SPEAKER_FRONT_RIGHT | 0x2 |
SPEAKER_FRONT_CENTER | 0x4 |
SPEAKER_LOW_FREQUENCY | 0x8 |
SPEAKER_BACK_LEFT | 0x10 |
SPEAKER_BACK_RIGHT | 0x20 |
SPEAKER_FRONT_LEFT_OF_CENTER | 0x40 |
SPEAKER_FRONT_RIGHT_OF_CENTER | 0x80 |
SPEAKER_BACK_CENTER | 0x100 |
SPEAKER_SIDE_LEFT | 0x200 |
SPEAKER_SIDE_RIGHT | 0x400 |
SPEAKER_TOP_CENTER | 0x800 |
SPEAKER_TOP_FRONT_LEFT | 0x1000 |
SPEAKER_TOP_FRONT_CENTER | 0x2000 |
SPEAKER_TOP_FRONT_RIGHT | 0x4000 |
SPEAKER_TOP_BACK_LEFT | 0x8000 |
SPEAKER_TOP_BACK_CENTER | 0x10000 |
SPEAKER_TOP_BACK_RIGHT | 0x20000 |
每個音訊數據格式都包含一或多個上述喇叭位置的通道。 通道數目只會等於 ActiveSpeakerPositions 成員中的非零旗標位數目。
每個音訊數據區塊內的通道相對位置一律會遵循與上表中旗標位相同的相對順序。 例如,如果 ActiveSpeakerPositions 包含值0x00000033,則格式會分別定義四個音訊通道,這些通道會分別指派給左、右、右、左和右後喇叭。 通道數據應該在每個區塊內依該順序交錯。 (這是出現在下列兩個數據表第二個KSAUDIO_SPEAKER_QUAD組態。)
下表顯示針對 DVD 定義的喇叭組態。
設定 | 喇叭位置 |
---|---|
KSAUDIO_SPEAKER_GROUND_FRONT_LEFT | SPEAKER_FRONT_LEFT |
KSAUDIO_SPEAKER_GROUND_FRONT_CENTER | SPEAKER_FRONT_CENTER |
KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT | SPEAKER_FRONT_RIGHT |
KSAUDIO_SPEAKER_GROUND_REAR_LEFT | SPEAKER_BACK_LEFT |
KSAUDIO_SPEAKER_GROUND_REAR_RIGHT | SPEAKER_BACK_RIGHT |
KSAUDIO_SPEAKER_TOP_MIDDLE | SPEAKER_TOP_CENTER |
KSAUDIO_SPEAKER_SUPER_WOOFER | SPEAKER_LOW_FREQUENCY |
下表顯示針對 DirectSound 定義的說話者設定。
設定 | 演講者位置 |
---|---|
KSAUDIO_SPEAKER_DIRECTOUT | 0 (沒有說話者) |
KSAUDIO_SPEAKER_MONO | SPEAKER_FRONT_CENTER |
KSAUDIO_SPEAKER_STEREO | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
KSAUDIO_SPEAKER_QUAD | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
SPEAKER_BACK_LEFT | |
SPEAKER_BACK_RIGHT | |
KSAUDIO_SPEAKER_SURROUND | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
SPEAKER_FRONT_CENTER | |
SPEAKER_BACK_CENTER | |
KSAUDIO_SPEAKER_5POINT1 | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
SPEAKER_FRONT_CENTER | |
SPEAKER_LOW_FREQUENCY | |
SPEAKER_BACK_LEFT | |
SPEAKER_BACK_RIGHT | |
KSAUDIO_SPEAKER_5POINT1_SURROUND | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
SPEAKER_FRONT_CENTER | |
SPEAKER_LOW_FREQUENCY | |
SPEAKER_SIDE_LEFT | |
SPEAKER_SIDE_RIGHT | |
KSAUDIO_SPEAKER_7POINT1 | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
SPEAKER_FRONT_CENTER | |
SPEAKER_LOW_FREQUENCY | |
SPEAKER_BACK_LEFT | |
SPEAKER_BACK_RIGHT | |
SPEAKER_FRONT_LEFT_OF_CENTER | |
SPEAKER_FRONT_RIGHT_OF_CENTER | |
KSAUDIO_SPEAKER_7POINT1_SURROUND | SPEAKER_FRONT_LEFT |
SPEAKER_FRONT_RIGHT | |
SPEAKER_FRONT_CENTER | |
SPEAKER_LOW_FREQUENCY | |
SPEAKER_BACK_LEFT | |
SPEAKER_BACK_RIGHT | |
SPEAKER_SIDE_LEFT | |
SPEAKER_SIDE_RIGHT |
KSAUDIO_SPEAKER_7POINT1喇叭設定已過時,不再支援。
在上表中,常數KSAUDIO_SPEAKER_DIRECTOUT值為零,這表示不會將喇叭位置指派給多重通道數據流中的通道。 例如,通道零可能代表擷取、通道 1 可能代表擷取、通道 2 可能代表語音等等。 在此設定中,輸入數據流中的通道會直接輸出到硬體,而不需修改,而不會解譯為喇叭位置。 如需詳細資訊,請參閱 DSSPEAKER_DIRECTOUT說話者設定。
5.1 通道環繞格式的喇叭組態是由上表中的常數KSAUDIO_SPEAKER_5POINT1_SURROUND所定義。 下圖顯示喇叭的幾何版面配置,其中顯示左、右、中、左和右方喇叭的位置。 此圖省略低頻率喇叭,因為它是非雙向的。
在這裡範例中,下列清單顯示每個音訊資料區塊內六個通道的順序:
SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_FRONT_CENTER
SPEAKER_LOW_FREQUENCY
SPEAKER_SIDE_LEFT
SPEAKER_SIDE_RIGHT
對於具有16位樣本大小的PCM格式,每個音訊數據區塊都會佔用12個字節,如下表所示。
Byte | 音訊資料 |
---|---|
0 | 左前 (8 個 LSB) |
1 | 左前 (8 個 MSB) |
2 | 右 (8 個 LSB) |
3 | 右 (8 個 MSB) |
4 | Front Center (8 個 LSB) |
5 | Front Center (8 個 MSB) |
6 | 低頻率 (8 個 LSB) |
7 | 低頻率 (8 個 MSB) |
8 | 側左 (8 個 LSB) |
9 | 側邊左 (8 個 MSB) |
10 | 右側 (8 個 LSB) |
11 | 右側 (8 個 MSB) |
規格需求
需求 | 值 |
---|---|
標頭 | ksmedia.h (包含 Ksmedia.h) |