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個字節,如下表所示。
位元組 | 音訊數據 |
---|---|
0 | 左前方 (8 個 LSB) |
1 | 左前方 (8 個 MSB) |
2 | 右前方 (8 個 LSB) |
3 | 右前方 (8 個 MSB) |
4 | 前端中心 (8 個 LSB) |
5 | Front Center (8 MSB) |
6 | 低弗雷克 (8 個 LSB) |
7 | 低弗雷克 (8 毫秒) |
8 | 左側 (8 個 LSB) |
9 | 左側 (8 個 MSB) |
10 | 右側 (8 個 LSB) |
11 | 右側 (8 個 MSB) |
要求
要求 | 價值 |
---|---|
標頭 | ksmedia.h (包括 Ksmedia.h) |