CRI Sofdec  Last Updated: 2024-04-17 11:21 p
ムービー再生用のリソース消費タイミングについて
複数同時ムービー再生 にて、ムービー再生に必要なリソースを紹介しました。
本ページでは実際にリソースの確保や解放が行われるタイミングについて説明します。
デコーダーリソースの確保・解放タイミング
  <確保タイミング>
CriManaLibConfig.max_decoder_handles で指定しているリソースは、具体的には以下のタイミングで確保されます。
  • 再生準備状態(CRIMANAPLAYER_STATUS_PREP)になる瞬間
より厳密には、CRIMANAPLAYER_STATUS_WAIT_PREP状態のプレーヤーに対し、::criMana_ExecuteMain /criManaPlayer_ExecuteMain 関数を呼び出したタイミングです。
ヘッダー解析だけを行った場合には消費されません。
  <解放タイミング>
以下のタイミングのいずれかです。
  • criManaPlayer_Destroy 関数でハンドルを破棄した場合
  • criManaPlayer_FreePlaybackWork 関数で明示的に再生リソースを解放した場合
  • プレーヤーハンドルを使いまわし、次のムービーの再生準備が始まるタイミング
デコーダー内部でデコード結果のバッファーを保持しています。再生終了後もデコードバッファー (最終フレーム)へのアクセスを許すため、再生終了のタイミングではデコーダーを破棄しない仕様となっています。
CriFsLoaderの確保・解放タイミング
CriFsLoaderリソースと CriManaPlayerHn の生存期間は一緒です。
CriManaPlayerHn を一つ生成すると内部でCriFsLoaderが一つ作成されます。
ファイルオープン・クロースのタイミング
ムービー再生においてファイルディスクリプタが消費されるのは、ストリーミング再生を行っている間です。
再生が終わるとファイルはクローズされます。