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 | 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) |