Win32 API 日本語リファレンス
ホームMedia.DirectShow › IAMStreamControl

IAMStreamControl

COM
IID36b73881-c2c8-11cf-8b46-00805f6cef60継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAMStreamControl インターフェイスは、フィルター上の個々のストリームを制御します。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT StartAt(LONGLONG* ptStart, DWORD dwCookie)

StartAt メソッドは、データの配信をいつ開始するかをピンに通知します。

ptStartLONGLONG*inoptional

ピンがデータの配信を開始する時刻を指定する REFERENCE_TIME 値へのポインター。値が MAXLONGLONG (0x7FFFFFFFFFFFFFFF) の場合、このメソッドは直前の開始要求をキャンセルします。psStartNULL の場合、ピンはグラフの実行時にただちに開始します。

プレビュー ピンは配信するサンプルにタイム スタンプを付けないため、プレビュー ピンで有効な値は NULLMAXLONGLONG のみです。

dwCookieDWORDin開始通知とともに送信する値を指定します。「解説」を参照してください。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合は、失敗の原因を示す HRESULT 値を返します。

解説(Remarks)

既定では、ピンはフィルター グラフが実行されるとすぐにデータを配信します。StartAt メソッドを使用すると、ピンはグラフの実行後、指定した時刻になるまで待機してからデータの配信を開始します。

dwCookie パラメーターが 0 以外の場合、ピンはデータの配信を開始するときに EC_STREAM_CONTROL_STARTED イベントを送信します。第 1 のイベント パラメーターはピンの IPin インターフェイスへのポインターであり、第 2 のパラメーターは dwCookie の値です。

このメソッドは、次の特殊なケースを実装します。

このメソッドは、次の境界条件も処理します。 MAXLONGLONG は、指定可能な最大の REFERENCE_TIME 値です。基本クラス ライブラリでは、定数 MAX_TIME としても定義されています。
vtbl 4 HRESULT StopAt(LONGLONG* ptStop, BOOL bSendExtra, DWORD dwCookie)

StopAt メソッドは、データの配信をいつ停止するかをピンに通知します。

ptStopLONGLONG*inoptional

ピンがデータの配信を停止する時刻を指定する REFERENCE_TIME 値へのポインター。値が MAXLONGLONG (0x7FFFFFFFFFFFFFFF) の場合、このメソッドは直前の停止要求をキャンセルします。psStopNULL の場合、ピンはただちに停止します。

プレビュー ピンは配信するサンプルにタイム スタンプを付けないため、プレビュー ピンで有効な値は NULLMAXLONGLONG のみです。

bSendExtraBOOLin予定された停止時刻の後に追加のサンプルを送信するかどうかを示すブール値を指定します。TRUE の場合、ピンは 1 つの追加サンプルを送信します。
dwCookieDWORDin開始通知とともに送信する値を指定します。「解説」を参照してください。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合は、失敗の原因を示す HRESULT 値を返します。

解説(Remarks)

dwCookie パラメーターが 0 以外の場合、ピンはデータの配信を停止するときに EC_STREAM_CONTROL_STOPPED イベントを送信します。第 1 のイベント パラメーターはピンの IPin インターフェイスへのポインターであり、第 2 のパラメーターは dwCookie の値です。ptStopNULL または MAXLONGLONG の場合、イベントは送信されず、dwCookie の値は無視されます。

ビデオ キャプチャでは、通常、このメソッドをキャプチャ フィルターの出力ピンとマルチプレクサーの入力ピンに対して呼び出します。アプリケーションは、マルチプレクサーからの停止イベントを待機する必要があります。これにより、キャプチャ フィルターが適切な数のフレームを送信すると同時に、すべてのフレームがマルチプレクサーに到達することが保証されます。また、bSendExtra パラメーターは、キャプチャ ピンに対しては TRUE に、マルチプレクサー ピンに対しては FALSE に設定します。これにより、キャプチャ フィルターは 1 つの追加フレームを送信します。マルチプレクサーはキャプチャ ピンからのタイム スタンプに依存するため、追加フレームが送信されないと、マルチプレクサーは停止時刻を無期限に待機します。マルチプレクサーは追加フレームを受信すると、それを破棄します。

このメソッドは、次の境界条件を処理します。

MAXLONGLONG は、指定可能な最大の REFERENCE_TIME 値です。基本クラス ライブラリでは、定数 MAX_TIME としても定義されています。
vtbl 5 HRESULT GetInfo(AM_STREAM_INFO* pInfo)

GetInfo メソッドは、開始時刻や停止時刻を含む、現在のストリーム制御設定に関する情報を取得します。

pInfoAM_STREAM_INFO*out現在のストリーム制御設定を受け取る、呼び出し元によって割り当てられた AM_STREAM_INFO 構造体へのポインター。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターン コード 説明
S_OK
成功。
E_POINTER
NULL ポインター値。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAMStreamControl "{36B73881-C2C8-11CF-8B46-00805F6CEF60}"
#usecom global IAMStreamControl IID_IAMStreamControl "{}"
#comfunc global IAMStreamControl_StartAt  3 var,int
#comfunc global IAMStreamControl_StopAt   4 var,int,int
#comfunc global IAMStreamControl_GetInfo  5 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。