IAMStreamControl::StopAt
StopAt メソッドは、データ送信をいつ終了するかをピンに通知する。
構文
HRESULT StopAt(
const REFERENCE_TIME *ptStop,
BOOL bSendExtra,
DWORD dwCookie
);
パラメータ
ptStop
[in] ピンがいつデータ送信を終了するべきかを指定する REFERENCE_TIME 値へのポインタ。値が MAXLONGLONG (0x7FFFFFFFFFFFFFFF) の場合、このメソッドは、以前のすべての終了要求をキャンセルする。psStop が NULL の場合、ピンは、即座に終了する。
プレビュー ピンの場合は送信するサンプルにタイム スタンプを設定しないため、有効な値は NULL および MAXLONGLONG のみである。
bSendExtra
[in] スケジュールされている終了タイムを過ぎてから追加サンプルを送信するかどうかを示すブール値を指定する。TRUE の場合、ピンは、1 つの追加サンプルを送信する。
dwCookie
[in] 開始通知と共に送信する値を指定する。「注意」を参照。
戻り値
メソッドが成功した場合は、S_OK を返す。それ以外の場合は、失敗の原因を示す HRESULT 値を返す。
注意
dwCookie 引数がゼロでない場合、ピンは、データ送信を終了する際、EC_STREAM_CONTROL_STOPPED イベントを送信する。先頭のイベント引数は、ピンの IPin インターフェイスへのポインタであり、2 番目の引数は、dwCookie の値である。ptStop が NULL または MAXLONGLONG の場合、イベントは送信されず、dwCookie の値は無視される。
ビデオ キャプチャの場合は、通常、キャプチャ フィルタの出力ピンおよびマルチプレクサの入力ピン上でこのメソッドを呼び出す。アプリケーションは、マルチプレクサからの終了イベントを待たなければならない。これによりキャプチャ フィルタは、正しい数のフレームを送信でき、またすべてのフレームがマルチプレクサに到達することを保証できる。また bSendExtra 引数は、キャプチャ ピンの場合は TRUE に設定し、マルチプレクサ ピンの場合は FALSE に設定すること。これにより、キャプチャ フィルタは、1 つの追加フレームを送信する。マルチプレクサは、キャプチャ ピンからのタイム スタンプに依存するため、追加フレームが送信されない場合、マルチプレクサは終了タイムをいつまでも待つ。マルチプレクサは、追加フレームを受け取ると、そのフレームを破棄する。
このメソッドは、以下の境界条件を処理する。
- 終了タイムがサンプルの開始タイムと終了タイムの間にある場合、ピンはそのサンプルを送信する。
- 開始タイムと終了タイムが同じ場合、ピンは 1 つのサンプルを送信する。
MAXLONGLONG は REFERENCE_TIME の最大値である。基底クラス ライブラリでは、定数 MAX_TIME としても定義されている。
参照