IMFMediaStream::RequestSample メソッド (mfidl.h)
メディア ソースからサンプルを要求します。
構文
HRESULT RequestSample(
[in] IUnknown *pToken
);
パラメーター
[in] pToken
要求のトークンとして使用されるオブジェクトへの IUnknown インターフェイスへのポインター。 呼び出し元は、このオブジェクトを実装する必要があります。 このパラメーターは、NULL でもかまいません。 「解説」を参照してください。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
ストリームの末尾に達しました。 |
|
メディア ソースが停止しています。 |
|
ソースの Shutdown メソッドが呼び出されました。 |
注釈
pToken が NULL でない場合、メディア ストリームは pToken で AddRef を呼び出し、トークンを先入れ先出しキューに配置します。
次のサンプルを使用できる場合、メディア ストリーム ストリームは次の処理を行います。
- キューから最初のトークンをプルします。
- メディア サンプルの MFSampleExtension_Token 属性を設定します。 属性データは、トークン オブジェクトへのポインターです。
- MEMediaSample イベントを送信します。 イベント データは、メディア サンプルの IMFSample インターフェイスへのポインターです。
- トークンで Release を呼び出します。
呼び出し元は、要求トークンの参照カウントを監視する必要があります。 メディア ストリームが MEMediaSample イベントを送信する場合は、サンプルから MFSampleExtension_Token 属性を取得し、属性値とトークンを照合します。 トークンの参照カウントが 0 に落ち、MEMediaSample イベントを受信しなかった場合は、要求が削除されたことを意味します。
Media Foundation パイプラインはマルチスレッドであるため、ソースが停止した後にソースの RequestSample メソッドが呼び出される場合があります。 メディア ソースが停止している場合、 メソッドは MF_E_MEDIA_SOURCE_WRONGSTATEを返す必要があります。 パイプラインでは、このリターン コードはエラー条件として扱われません。 ソースから他のエラー コードが返された場合、パイプラインはそれを致命的なエラーとして扱い、セッションを停止します。
メディア ソースが一時停止されている場合、メソッドは成功しますが、ソースが再度開始されるまでストリームはサンプルを配信しません。
メディア ソースでデータの処理中に非同期的にエラーが発生した場合は、次のいずれかの方法でエラーを通知する必要があります (両方は通知しません)。
- 次の RequestSample 呼び出しからエラー コードを返します。
- MEError イベントを送信します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | mfidl.h |
Library | Mfuuid.lib |