IXAudio2Voice::SetOutputMatrix 方法 (xaudio2.h)
设置语音最终输出的每个声道的音量级别。 这些通道映射到指定目标语音的输入通道。
语法
\\HRESULT SetOutputMatrix(
[in] IXAudio2Voice *pDestinationVoice,
[in] UINT32 SourceChannels,
[in] UINT32 DestinationChannels,
[in] const float *pLevelMatrix,
[in] UINT32 OperationSet
);
参数
[in] pDestinationVoice
指向要为其设置卷级别的目标 IXAudio2Voice 的指针。
[in] SourceChannels
确认语音的输出声道计数。 这是链中最后一个效果生成的通道数。
[in] DestinationChannels
确认目标语音的输入通道计数。
[in] pLevelMatrix
发送到目标语音的 [SourceChannels × DestinationChannels] 音量级别的数组。 从源通道 S 发送到目标通道 D 的级别以 pLevelMatrix[SourceChannels × D + S] 的形式指定。
例如,将双声道立体声输入呈现到 5.1 输出中,该输出加权到前声道(但中心通道和低频通道中不存在)时,矩阵可能具有下表中显示的值。
输出 | 左输入 [数组索引] | 右输入 [数组索引] |
---|---|---|
Left | 1.0 [0] | 0.0 [1] |
Right | 0.0 [2] | 1.0 [3] |
前中心 | 0.0 [4] | 0.0 [5] |
LFE | 0.0 [6] | 0.0 [7] |
左后 | 0.8 [8] | 0.0 [9] |
向右后 | 0.0 [10] | 0.8 [11] |
[in] OperationSet
将此调用标识为延迟批处理的一部分。 有关详细信息,请参阅 XAudio2 操作集 概述。
返回值
如果成功,则返回S_OK,否则返回错误代码。 有关错误代码的说明,请参阅 XAudio2 错误代码。
注解
此方法仅对源语音和子混合语音有效,因为主语音直接写入设备,而无需混合矩阵。
音量级别表示为 -XAUDIO2_MAX_VOLUME_LEVEL 和 XAUDIO2_MAX_VOLUME_LEVEL (-2²-2²⁴ 到 2²⁴) 之间的浮点振幅乘法器,最大增益为 144.5 dB。 音量级别为 1.0 表示没有衰减或增益,0 表示静音。 负级别可用于反转音频的相位。 有关音量控制的其他信息,请参阅 XAudio2 音量和音调 控制。
X3DAudio 函数 X3DAudioCalculate 可以生成输出矩阵,以便根据声音的位置和侦听器的位置与 SetOutputMatrix 一起使用。
平台要求
Windows 10 (XAudio2.9) ;Windows 8、Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)要求
目标平台 | Windows |
标头 | xaudio2.h |