IMFMediaStream::RequestSample メソッド (mfidl.h)

メディア ソースからサンプルを要求します。

構文

HRESULT RequestSample(
  [in] IUnknown *pToken
);

パラメーター

[in] pToken

要求のトークンとして使用されるオブジェクトへの IUnknown インターフェイスへのポインター。 呼び出し元は、このオブジェクトを実装する必要があります。 このパラメーターは、NULL でもかまいません。 「解説」を参照してください。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。
MF_E_END_OF_STREAM
ストリームの末尾に達しました。
MF_E_MEDIA_SOURCE_WRONGSTATE
メディア ソースが停止しています。
MF_E_SHUTDOWN
ソースの Shutdown メソッドが呼び出されました。

注釈

pTokenNULL でない場合、メディア ストリームは pTokenAddRef を呼び出し、トークンを先入れ先出しキューに配置します。

次のサンプルを使用できる場合、メディア ストリーム ストリームは次の処理を行います。

  1. キューから最初のトークンをプルします。
  2. メディア サンプルの MFSampleExtension_Token 属性を設定します。 属性データは、トークン オブジェクトへのポインターです。
  3. MEMediaSample イベントを送信します。 イベント データは、メディア サンプルの IMFSample インターフェイスへのポインターです。
  4. トークンで Release を呼び出します。
メディア ストリームがサンプルの呼び出し元の要求を満たすことができない場合は、単にトークン オブジェクトを解放し、手順 2 と 3 をスキップします。

呼び出し元は、要求トークンの参照カウントを監視する必要があります。 メディア ストリームが 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

こちらもご覧ください

IMFMediaStream

メディア ソース