CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
[CriAtom] 估算Android设备的声音播放的延迟时间

范例内容

概述

cri4u_samples_criatom_adv05_game_mini.png

此范例演示了如何估算在Android设备运行中的应用程序,其声音播放的延迟时间。
该范例场景的步骤如下。
  1. 开始延迟估算
  2. 延迟估算将异步执行
  3. 获取延迟估算的信息并将其显示在屏幕上(执行状态以及估计数值)
  4. 结束延迟估算
注意
该范例并不是为了提供低延迟声音播放而设计的。请同时参照 安卓的低延迟声音回放

操作方法

  • [Estimator Status ] 标签
    显示了延迟估算的执行状态。一共有四种状态。初始状态为"Stop"。
    如需了解关于状态的详细信息,请参照 CriWare.CriAtomExLatencyEstimator.Status 枚举符。

  • [Estimated Latency [msec]] 标签
    显示延迟估算的结果(估计数值)。单位为毫秒。

  • [Initialize Estimator ] 按钮
    初始化并开始延迟估算。

  • [Finalize Estimator] 按钮
    结束延迟估算。

场景信息


中间件 CRI ADX (CRI Atom)
范例 进阶范例
存储路径 /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/criatom/advanced/
场景文件 Scene_05_EstimateSoundLatency.unity


程序说明

获取执行结果的方法

CriWare.CriAtomExLatencyEstimator.GetCurrentInfo 函数用于获取结果。
该范例使用以下代码来获取这些数值。
void Update()
{
info = CriAtomExLatencyEstimator.GetCurrentInfo();
}
info是 CriWare.CriAtomExLatencyEstimator.EstimatorInfo 结构体变量。它被保持为该范例场景类的private成员,并使用以下代码在标签中显示。
GUILayout.Label("Estimator Status : " + info.status); // 显示延迟估算的执行状态的成员
GUILayout.Space(16);
GUILayout.Label("Estimated Latency[msec]: " + info.estimated_latency); // 显示延迟估算结果(毫秒)的成员
GUILayout.Space(16);
当估算完成时,状态将变成 "Done",可以获取执行结果的估算数值(大于0)。
当状态不是"Done"时,估算数值则为0。
注意
估算数值将根据Atom文件库的初始设定而产生变化。
您可以更改配置于该范例场景的 CriWare.CriWareInitializer 组件的初始设定,并且重新加载场景来确认变化。

初始化

使用 CriWare.CriAtomExLatencyEstimator.InitializeModule 函数来初始化。
该范例使用以下代码来初始化。
if (Scene_00_GUI.Button("Initialize Estimator", option)) {
if (!is_initialized) {
// 开始延迟估算
CriAtomExLatencyEstimator.InitializeModule();
is_initialized = true;
}
}
该范例包含阻止多次初始化的is_initialized标记。
调用InitializeModule函数时,将初始化并开始延迟估算。
开始执行延迟估算时,状态将变为"Processing"。延迟将被异步估算。

结束

使用 CriWare.CriAtomExLatencyEstimator.FinalizeModule 函数来结束。
该范例使用以下代码来结束。
if (Scene_00_GUI.Button("Finalize Estimator", option)) {
if (is_initialized) {
// 结束延迟估算
CriAtomExLatencyEstimator.FinalizeModule();
is_initialized = false;
}
}
FinalizeModule函数是同步函数。
当调用该函数时,延迟估算将停止异步处理并且移至"Stop"状态。