IMFMediaEngineExtension::BeginCreateObject メソッド (mfmediaengine.h)

バイト ストリームまたはメディア ソースを作成するための非同期要求を開始します。

構文

HRESULT BeginCreateObject(
  [in]           BSTR             bstrURL,
  [in]           IMFByteStream    *pByteStream,
  [in]           MF_OBJECT_TYPE   type,
  [out]          IUnknown         **ppIUnknownCancelCookie,
  [in]           IMFAsyncCallback *pCallback,
  [in, optional] IUnknown         *punkState
);

パラメーター

[in] bstrURL

メディア リソースの URL。

[in] pByteStream

IMFByteStream インターフェイスへのポインター。

パラメーターが MF_OBJECT_BYTESTREAMと等しい場合、このパラメーターは NULL です

typeMF_OBJECT_MEDIASOURCEと等しい場合、このパラメーターにはバイト ストリームへのポインターが含まれるか、NULL になります。 詳細については、「解説」を参照してください。

[in] type

作成するオブジェクトの種類を指定する MF_OBJECT_TYPE 列挙体のメンバー。

説明
MF_OBJECT_BYTESTREAM
バイト ストリームを作成します。 バイト ストリームは 、IMFByteStream インターフェイスをサポートする必要があります。
MF_OBJECT_MEDIASOURCE
メディア ソースを作成します。 メディア ソースは 、IMFMediaSource インターフェイスをサポートする必要があります。

[out] ppIUnknownCancelCookie

IUnknown インターフェイスへのポインターを受け取ります。 このポインターは、 IMFMediaEngineExtension::CancelObjectCreation メソッドへのポインターを渡すことによって、非同期操作を取り消すために使用できます。

呼び出し元はインターフェイスを解放する必要があります。 このパラメーターは、NULL でもかまいません。

[in] pCallback

IMFAsyncCallback インターフェイスへのポインター。 このインターフェイスは、非同期操作の完了を通知するために使用されます。

[in, optional] punkState

呼び出し元によって実装されたオブジェクトの IUnknown インターフェイスへのポインター。 このオブジェクトを使用して、コールバックの状態情報を保持できます。 コールバックが呼び出されると、オブジェクトが呼び出し元に返されます。 このパラメーターは、NULL でもかまいません。

戻り値

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

解説

このメソッドは、 パラメーターの値に応じて、バイト ストリームまたはメディア ソースを作成するようにオブジェクトに要求します。

  • typeMF_OBJECT_BYTESTREAMの場合、メソッドは bstrURL で指定された URL のバイト ストリームを作成します。 この場合、 pByteStream パラメーターは NULL です
  • typeMF_OBJECT_MEDIASOURCEの場合、 メソッドは pByteStream パラメーターで指定されたバイト ストリームを使用してメディア ソースを作成します。 この場合、 pByteStreamNULL にすることもできます。
メソッドは非同期的に実行されます。 メディア エンジンは 、IMFMediaEngineExtension::EndCreateObject メソッドを呼び出して操作を完了します。

実装に関する注意事項

メディア エンジン拡張機能は、カスタム バイト ストリーム オブジェクト、カスタム メディア ソース、またはその両方をサポートするために使用できます。 バイト ストリームの場合は、 MF_OBJECT_BYTESTREAM と等しい場合にバイト ストリーム オブジェクトを作成します。 メディア ソースの場合は、型が MF_OBJECT_MEDIASOURCE と等しいときにソースを作成します。

URL を読み込むには、メディア エンジンは次の手順を実行します。

  1. URL からバイト ストリームを作成してみてください。
  2. バイト ストリームが正常に作成された場合は、バイト ストリームからメディア ソースを作成してみてください。
  3. バイト ストリームを作成できない場合は、URL から直接メディア ソースを作成してみてください。

メディア エンジンは、各ステップで、拡張オブジェクトに 対して IMFMediaEngineExtension::BeginCreateObject を呼び出します。 BeginCreateObject メソッドが失敗した場合、メディア エンジンはソース リゾルバーを試みます。

BeginCreateObject メソッドでは、次のいずれかのケースを処理できます。

  • パラメーターはMF_OBJECT_BYTESTREAM。 URL からバイト ストリームを作成します。
  • パラメーターはMF_OBJECT_MEDIASOURCEで、pByteStream はバイト ストリームを指します。 バイト ストリームを使用してメディア ソースを作成します。
  • パラメーターはMF_OBJECT_MEDIASOURCEで、pByteStreamNULL です。 URL からメディア ソースを作成します。

処理しないケースのエラー コードを返します。

例:

  • カスタム メディア形式をサポートするには、メディア ソースを実装します。 メディア ソースで特別なバイト ストリームの実装が必要ない場合は、 MF_OBJECT_MEDIASOURCEpByteStream が NULL 以外の場合は、メディア ソースを作成します。 この場合は、標準の Microsoft Media Foundation バイト ストリーム実装が使用されます。
  • カスタム URL スキームをサポートするには、 MF_OBJECT_BYTESTREAM されているケースを処理し、URL を読み取ることができるバイト ストリーム オブジェクトを返します。

BeginCreateObject メソッドが成功した場合は、操作を非同期的に実行する必要があります。 操作が完了したら、pCallback で指定されたコールバック インターフェイスで IMFAsyncCallback::Invoke メソッドを呼び出します。 メディア エンジンは、 IMFMediaEngineExtension::EndCreateObject を呼び出して操作を完了します。

要件

   
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー mfmediaengine.h

関連項目

IMFMediaEngineExtension