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 的指针。

注意 如果语音发送到单个目标语音,则指定 NULL 将导致 SetOutputMatrix 在该目标语音上运行。
 

[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]
 
注意 左右输入完全映射到输出的左声道和右声道;80% 的左输入和右输入映射到后左通道和右声道。
 
有关卷级别的详细信息,请参阅备注。

[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 一起使用。

注意IXAudio2Voice::GetOutputMatrix 始终返回 IXAudio2Voice::SetOutputMatrix 最近设置的级别。 但是,它们可能实际上尚未生效:它们仅在 IXAudio2Voice::SetOutputMatrix 调用 (之后或相应 IXAudio2::CommitChanges 调用之后(如果 IXAudio2Voice::SetOutputMatrix 调用 IXAudio2Voice::SetOutputMatrix 在) 调用 IXAudio2Voice::SetOutputMatrix )之后才会生效。
 

平台要求

Windows 10 (XAudio2.9) ;Windows 8、Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)

要求

   
目标平台 Windows
标头 xaudio2.h

另请参阅

如何:更改语音音量

IXAudio2Voice