CRI ADX  Last Updated: 2024-07-17 10:48 p
输出频道数量和DownMix
CRI Atom运行库支持多种音频输出频道数量,例如便携式设备的立体声输出、固定设备的5.1ch, 7.1ch环绕声输出、 游戏手柄等单声道音频输出。
预设设置的情况下,CRI Atom运行库将输出5.1ch音频。
下面介绍单声道、立体声、7.1ch音频输出所需的设置和DownMix处理动作。

7.1ch音频输出所需的运行时设置

为输出7.1ch音频,执行应用程序时必须进行以下设置。
(1) 将Atom声音渲染器(ASR)的输出频道数量设置为7.1ch
如果使用ASR,请将ASR输出频道数量 (CriAtomAsrConfig::output_channels) 设置为8,对程序库进行初始化。
(2) 将Pan扬声器类型设置为7.1ch
请在初始化程序库后,使用::criAtomExPlayer_ChangeDefaultPanSpeakerType函数设置以下其中一个值。
(3) 将Voice池的最大频道数量设置为7.1ch音频素材
使用7.1ch音频素材时,请将Voice池配置结构体的player_config.max_channels 成员设置为8。
(但是,例如将单声道音Panning输出7.1ch音频等情况下,如果不使用7.1ch音频素材则不需要设置)
补充:
CRIATOMEX_PAN_SPEAKER_TYPE_6CH, CRIATOMEX_PAN_SPEAKER_TYPE_7CH 之间的区别在于是否也从中置扬声器输出Panning结果。
如果设置::CRIATOMEX_PAN_SPEAKER_TYPE_7CH,则也从中置扬声器输出Panning结果。

立体声音输出时

应用程序端无需设置。
在CRI Atom运行库内部执行Panning计算后,自动DownMix至立体声。

单声道音频输出时

CRI Atom运行库自动DownMix至单声道。
如果要将音频输出到游戏手柄等添加设备中,根据不同平台,有时必须在应用程序端进行设置。
关于详细信息,请参照机型特定信息的 Other Sound Output Devices

关于DownMix

如果输入音频的频道数量大于“声音渲染器的输出频道数量”,则CRI Atom运行库会进行DownMix。
按照以下方式决定“声音渲染器的输出频道数量”。
  • 使用Atom声音渲染器(ASR)时
    等于用CriAtomAsrConfig::output_channels设置的频道数量。 -不使用Atom声音渲染器(ASR)时(用硬件进行信号处理时)
    等于输出目标设备的频道数量。关于详细信息,请参照机型特定信息的 Sound Output
使用 Panning 功能时,“输入音频的频道数量”等于Panning计算后的频道数量。<br 如果按照预设设置在Panning后执行立体声音输出,则输出将5.1ch音频DownMix至2ch的结果。

DownMix计算公式

按照下表的计算公式执行DownMix。
输入ch数 输出ch数 计算式 (输出扬声器) = (输入扬声器)
7.1ch 5.1ch L(mix) = L
R(mix) = R
C(mix) = C
LFE(mix) = LFE
Ls(mix) = Ls + Lb * (-3dB)
Rs(mix) = Rs + Rb * (-3dB)
5.1ch 4ch(L,R,Ls,Rs) L(mix) = L + C * (-3dB)
R(mix) = R + C * (-3dB)
Ls(mix) = Ls
Rs(mix) = Rs
4ch(L,R,Ls,Rs) 2ch L(mix) = L + Ls * (-3dB)
R(mix) = R + Rs * (-3dB)
2ch 1ch MONO(mix) = L * (-3dB) + R * (-3dB)
假如是上表中没有的组合,则分阶段DownMix。
例如,输入7.1ch->输出2ch的情况下,按照7.1ch->5.1ch->4ch->2ch的顺序DownMix。
因此,DownMix计算公式如下。
L(mix) = L + C * (-3dB) + Ls * (-3dB) + Lb * (-6dB)
R(mix) = R + C * (-3dB) + Rs * (-3dB) + Rb * (-6dB)
补充:
根据平台的不同,有时会不在CRI Atom运行库内部DownMix,而由平台的音频系统执行DownMix。 在这种情况下,DownMix结果可能与上表不同。
有关详细信息,请参照机型特定信息的 Sound Output