IAMStreamControl::StartAt
StartAt メソッドは、データ送信をいつ開始するかをピンに通知する。
構文
HRESULT StartAt(
const REFERENCE_TIME *ptStart,
DWORD dwCookie
);
パラメータ
ptStart
[in] ピンがいつデータ送信を開始するべきかを指定する REFERENCE_TIME 値へのポインタ。値が MAXLONGLONG (0x7FFFFFFFFFFFFFFF) の場合、このメソッドは、前回の開始要求をキャンセルする。psStart が NULL の場合、ピンは、グラフの実行と同時に開始する。
プレビュー ピンの場合は送信するサンプルにタイム スタンプを設定しないため、有効な値は NULL および MAXLONGLONG のみである。
dwCookie
[in] 開始通知と共に送信する値を指定する。「注意」を参照。
戻り値
メソッドが成功した場合は、S_OK を返す。それ以外の場合は、失敗の原因を示す HRESULT 値を返す。
注意
既定では、ピンは、フィルタ グラフの実行と同時にデータを送信する。StartAt メソッドを使うことで、グラフの実行からピンのデータ送信開始までの待機時間を指定できる。
dwCookie 引数がゼロでない場合、ピンは、データ送信を開始する際、EC_STREAM_CONTROL_STARTED イベントを送信する。先頭のイベント引数は、ピンの IPin インターフェイスへのポインタであり、2 番目の引数は、dwCookie の値である。
このメソッドは、以下の特別なケースを実装する。
- ptStart が NULL の場合、ピンは、グラフの実行と同時に開始する。イベントは送信されず、dwCookie の値は無視される。
- ptStart に値 MAXLONGLONG が含まれていて、ペンディング状態の終了要求がある場合、ピンは、グラフの実行と同時に開始する。ペンディング状態の終了要求がない場合、ピンは停止したままになる。どちらの場合も、開始イベントは送信されず、dwCookie の値は無視される。
このメソッドは、以下の境界条件も処理する。
- 開始タイムがサンプルの開始タイムと終了タイムの間にある場合、ピンはそのサンプルを送信する。
- 開始タイムと終了タイムが同じ場合、ピンは 1 つのサンプルを送信する。
MAXLONGLONG は REFERENCE_TIME の最大値である。基底クラス ライブラリでは、定数 MAX_TIME としても定義されている。
参照