このサンプルでは、CRI Movieのキューポイント機能の紹介をしています。 キューポイントに関する概要は、
キューポイントとは をご参照ください。
プログラムの流れ
キューポイント再生に必要な基本手順は下記のようになります。
- メタデータ用メモリアロケーター関数の登録
- キューポイントコールバックの登録
- 再生開始
1.メタデータ用メモリアロケーター関数の登録
CriManaPlayerHn criManaPlayer_Create(void *work, CriSint32 work_size)
Manaプレーヤーの作成(コンフィグ指定なし)
void criManaPlayer_SetMetaDataWorkAllocator(CriManaPlayerHn player, CriManaMetaMallocFunc allocfunc, CriManaMetaFreeFunc freefunc, void *obj, CriManaMetaFlag meta_flag)
メタデータ用アロケーターの登録
@ CRIMANA_META_FLAG_ALL
Definition: cri_mana.h:482
キューポイント再生を行うには、ヘッダー解析を行う前に
criManaPlayer_SetMetaDataWorkAllocator 関数でメタデータ用の アロケーターを、通常のアロケーターとは別に必ず登録します。アロケーターは
criMana_SetUserAllocator 関数で登録するアロケーターと同じ ものでも問題ありません。ただし、マルチスレッド動作時にはメタデータ用のアロケーターが別スレッドから呼び出されることに注意してください。
アロケーターを登録しない場合はキューポイント再生は行えませんの注意してください。
2.キューポイントコールバックの登録
if (app_obj->cueinf != NULL) {
user_print_cuepoint_list(app_obj->cueinf);
} else {
criFwPrt_DebugPrintf("<NO CUEPOINT INFO FOUND>");
}
CriManaCuePointInfo * criManaPlayer_GetCuePointInfo(CriManaPlayerHn player)
キューポイント情報の一覧取得
void criManaPlayer_SetCuePointCallback(CriManaPlayerHn player, CriManaPlayerCuePointCbFunc func, void *obj)
キューポイントコールバックの設定
ムービーにキューポイント情報が含まれていれば、ヘッダー解析終了後に
criManaPlayer_GetCuePointInfo 関数でキューポイント リスト情報が取得できます。キューポイントが存在することを確認したら
criManaPlayer_SetCuePointCallback 関数でイベント コールバックを登録します。
3.再生開始
以降は通常再生と同じ手順でムービー再生を開始します。ムービー再生が進み、再生時刻がキューポイント時刻に達すると
criMana_ExecuteMain 関数内からイベントコールバックがキックされます。このイベントをトリガーにして アプリケーション側で必要な処理を行います。
{
CriUint64 tcount, tunit;
AppObj *app_obj = (AppObj*)obj;
}
CriManaPlayerObj * CriManaPlayerHn
プレーヤーハンドル
Definition: cri_mana.h:841
イベントポイント情報
Definition: cri_mana.h:707