CRI ADX  Last Updated: 2024-03-21 14:32 p
ADXとSofdecを併用する際の注意点は?

ライブラリ初期化時の注意点

(1) エラーコールバック

エラーコールバック関数は全てのライブラリについて1つです。
criErr_SetCallback 関数を複数回実行すると、先に登録したコールバック関数が後から登録するコールバック関数により上書きされてしまいます。
(先に登録したコールバック関数はエラーが発生しても呼ばれなくなってしまいます。)

(2) 初期化順序

以下の順序でライブラリを初期化する必要があります。

  • (1) CRI File Systemライブラリの初期化処理 ( criFs_InitializeLibrary )
  • (2) CRI Atomライブラリの初期化処理 ( criAtomEx_Initialize_~ )
  • (3) CRI Manaライブラリの初期化処理 ( criMana_Initialize_~ )
終了処理は初期化処理とは逆の順序で行う必要があります。

  • (1) CRI Manaライブラリの終了処理 ( criMana_Finalize_~ )
  • (2) CRI Atomライブラリの終了処理 ( criAtomEx_Finalize_~ )
  • (3) CRI File Systemライブラリの終了処理 ( criFs_FinalizeLibrary )
[備考]
CRI Atomライブラリを使用する場合、CRI File Systemライブラリの初期化/終了処理は省略することも可能です。
CRI File Systemライブラリの初期化を省いた場合は、CRI File Systemライブラリの初期化処理をCRI Atomライブラリ側で行います。

(3) スレッドフレームワーク

CRI AtomライブラリとCRI File Systemライブラリには、同じスレッドフレームワークを指定する必要があります。
具体的には、各ライブラリを初期化する際、以下の構造体メンバーに同じスレッドフレームワークタイプ(スレッドモデル)を設定する必要があります。
  • CriFsConfig 構造体の thread_model メンバー
  • CriAtomExConfig 構造体の thread_model メンバー
[備考]
CRI Manaライブラリのスレッドフレームワークは、CRI AtomライブラリやCRI File Systemライブラリとは異なるスレッドモデルを設定可能です。
  • LibConfig 構造体の thread_model メンバー

ライブラリ間で共有されるリソース

(1) スレッド

CRI Atomライブラリのサーバ処理スレッドと、CRI File Systemライブラリのサーバ処理スレッドは、同一のスレッドです。
CRI Atomライブラリのスレッドプライオリティやアフィニティマスクなどのパラメーターを変更した場合、CRI File Systemライブラリのサーバー処理スレッドのパラメーターも変更されます。

(2) バインダ

AWBファイルをロードする際、CRI Atomライブラリはバインダーを使用します。
AWBファイルをロードする場合、AWBファイル数分のバインダーが確保できる設定でCRI File Systemライブラリを初期化する必要があります。
[注意]
criAtomAwb_LoadToc 関数等でAWBファイルをロードするケース以外に、 criAtomExAcb_LoadAcbFile 関数等でストリーム再生用のACBファイルをロードする場合もバインダーが必要となります。
(ストリーム再生用のACBファイルをロードする際、対になるAWBファイルが合わせてロードされます。)

(3) ローダ

CRI AtomライブラリやCRI Manaライブラリは、CRI File Systemライブラリのローダーを使用してストリーム再生を行います。
ストリーム再生を行う場合には、ファイルの読み込みに使用するローダーの数に加え、ボイスプール内のボイス数や、Manaプレーヤ数分のローダーを余分に確保しておく必要があります。
以下の API は、関数実行時に一時的にローダー( CriFsLoaderHn )を使用します。
(関数実行開始時に criFsLoader_Create 関数でローダーが確保されます。)

- criAtomEx_RegisterAcfFile
- criAtomEx_RegisterAcfFileById
- criAtomEx_GetAcfVersionFromFile
- criAtomEx_GetAcfVersionFromFileById
- criAtomExAcb_LoadAcbFile
- criAtomExAcb_LoadAcbFileById
- criAtomExStreamingCache_LoadWaveformByNameAsync
- criAtomExStreamingCache_LoadWaveformByIdAsync
.
上記関数を実行する際には、空きローダーハンドルが1つ以上ある状態になるよう、ローダー数を調整してください。
[注意]
上記 API のうち、 criAtomExStreamingCache_LoadWaveformByNameAsync 関数と criAtomExStreamingCache_LoadWaveformByIdAsync 関数については、 関数が返すローダーハンドルを別途ユーザが破棄する必要があります。
その他の API については、関数終了時点で criFsLoader_Destroy 関数でローダーが破棄されます。

(4) サーバー処理

CRI Atomライブラリのサーバー処理 ( criAtomEx_ExecuteMain 関数 ) と、CRI File Systemライブラリのサーバー処理 ( criFs_ExecuteMain関数 ) は、同一の実体を持つ関数です。
そのため、CRI AtomライブラリとCRI File Systemライブラリを併用する場合、どちらか一方のサーバー処理のみを実行してください。
(両方のサーバー処理を実行すると、処理が二重に行われます。)
[注意]
CRI Manaライブラリを併用する場合、CRI Atomライブラリのサーバー処理(またはCRI File Systemライブラリのサーバー処理)とは別に、CRI Manaライブラリのサーバー処理( criMana_ExecuteMain 関数)を実行する必要があります。

ストリーミング再生の注意点

(1) D-BAS

音声のストリーム再生とムービのストリーム再生を同時に行う場合、D-BASに指定するストリーム数と最大ビットレートには、両者を足し合わせた数を指定する必要があります。
[備考]
音声/ムービーのストリーミング以外のデータの読み込みについては、D-BAS作成時のパラメーターに加える必要はありません。
ローダー等によるデータの裏読みは、ストリーミングの空き時間にバッファリングなしに行われるため、D-BAS作成時に考慮する必要はありません。

(2) プライオリティ

音声やムービーのストリーミングは、ローダーに設定可能な最高プライオリティ ( CRIFSLOADER_PRIORITY_HIGHEST ) よりも高いプライオリティで実行されます。
そのため、ストリーム再生中に巨大なデータをローダーで読み込んだとしても、ストリーム再生中の音声やムービーが途切れることはありません。
[注意]
データの読み込みは、ストリーミングデータの読み込みに頻繁に割り込まれるため、ストリーミング中のデータ読み込みの速度は低下します。