CRI Sofdec
Last Updated: 2024-09-25 20:36 p
|
キューポイント機能について説明します。
「キューポイント」とは、ムービーファイルにタイミング情報を埋め込む機能です。
機能全体のことを「キューポイント」、ひとつひとつのタイミング情報のことを「イベントポイント」と呼びます。
ムービーファイルにキューポイント情報を埋め込むには、エンコード時に「キューポイント情報ファイル」を指定してください。
タイミング情報の利用方法としては、例えば以下のようなものが考えられます。
キューポイントで埋め込んだイベントポイント情報は次の2種類の方法で取得することができます。
(1) ヘッダー解析終了後、キューポイント情報取得関数で「全てのイベントポイント」の一覧を取得できます。
(2) 再生中に再生時刻がイベントポイントで指定した時刻になると呼び出されるコールバック関数を登録することができます。
CriManaPlayerHn のハンドル状態が CRIMANAPLAYER_STATUS_WAIT_PREP になったあと、 criManaPlayer_GetCuePointInfo() でキューポイント情報を取得できます。
キューポイント情報には、全イベントポイントの一覧とイベントポイント総数が含まれます。
「イベントポイント」とは、個々のタイミング情報のことです。キューポイントは1個以上のイベントポイントから構成されます。
各イベントポイントには以下のパラメーターが存在します。
パラメーター | 内容 |
---|---|
名前文字列 | アプリーケーションがイベントポイントを区別するための名前です。 |
時刻 | ライブラリがキューポイントコールバック関数の呼び出し判定に使用します。 |
タイプ変数 | 任意の整数値です。 アプリケーションがイベントポイントの種類を簡単に区別したい場合などに使用してください。 |
パラメーター文字列 | 任意の文字列です。 特別なパラメーターを埋めたい場合は、パラメーター文字列に記述してアプリケーションで文字列を解釈してください。 |
「名前文字列」と「パラメーター文字列」のキャラクターコードはエンコード時に指定したキューポイント情報ファイルに従います。
キューポイントコールバック関数を登録すると、再生中に再生時刻がイベントポイントに到達した際にコールバック関数が呼び出されます。 コールバック関数の引数には、イベントポイント情報が渡されます。
キューポイントコールバック関数は criManaPlayer_SetCuePointCallback() で登録します。
キューポイントコールバック型は次の通りです。
キューポイントコールバック関数内では、Sofdec ライブラリの関数呼び出しは行わないでください。
コールバックをきっかけにして再生制御や情報取得を行いたい場合は、コールバック関数内で処理内容だけを記録し、 実際のSofdecライブラリの関数呼び出しはメインスレッドから行うようにしてください。
キューポイントコールバック関数の呼び出し判定は criMana_ExecuteMain() で行っています (Sofdecのフレームワークでは、アプリケーションはメインループで criMana_ExecuteMain() を毎回呼び出すようになっています)。
コールバック関数で記録したパラメーターに応じてメインスレッドで処理を行う場合は、 criMana_ExecuteMain() の後でアプリケーションの処理判定をすると遅延を最小限に抑えることが出来ます。
キューポイント情報からシーク位置(フレーム番号)を計算することができます。
シークしたいイベントポイントの時刻を使って、 criManaPlayer_CalcFrameNoFromTime() を呼び出してください。
なお、 criManaPlayer_CalcFrameNoFromTime() が有効なのはヘッダー解析終了後です。
また、時刻を指定してその前後のイベントポイントを検索する関数もあります。
これらの関数は検索対象とするタイプ変数を指定することができます。タイプ変数に-1を指定すると全イベントポイントが対象となります。
キューポイント情報からシーク位置を決定する方法を使った応用例として、チャプタースキップ再生を紹介します。
キューポイントが有効になるのは単純再生・ループ再生の場合のみです。
連結再生の場合は1個目のムービー再生のみ、キューポイントが有効です。