CRIWARE Unity Plugin Manual
Last Updated: 2024-04-24
[CriAtom]Android端末の音声再生の遅延時間推測
サンプル内容
概要
サンプルアプリを実行中のAndroid端末における、音声再生遅延時間を推測するサンプルです。
本サンプルシーンは、以下のような流れになっています。
遅延推測を開始
遅延推測が非同期で実行される
遅延推測の情報を取得して画面上に表示 (実行状態、推測値の2つ)
遅延推測を終了
注意
本サンプルは 低遅延音声再生 を行うものではありません。別途
Android低遅延音声再生
を参照してください。
操作方法
[Estimator Status ]ラベル
遅延推測処理の実行状態を表示します。4種類の状態が存在し、初期状態は"Stop"です。
※ 状態についての詳細はCriWare.CriAtomExLatencyEstimator.Status 列挙体を参照してください。
[Estimated Latency[msec]]ラベル
遅延推測処理の実行結果(推測値)を表示します。単位はミリ秒です。
[Initialize Estimator ]ボタン
遅延推測機能を初期化して、推測処理を開始します。
[Finalize Estimator]ボタン
遅延推測機能を終了します。
シーン情報
ミドルウェア
CRI ADX (CRI Atom)
サンプル
Advancedサンプル
格納場所
/cri/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"状態に遷移します。
Copyright (c) CRI Middleware Co., Ltd. 1.8.10