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 です。
type が MF_OBJECT_MEDIASOURCEと等しい場合、このパラメーターにはバイト ストリームへのポインターが含まれるか、NULL になります。 詳細については、「解説」を参照してください。
[in] type
作成するオブジェクトの種類を指定する MF_OBJECT_TYPE 列挙体のメンバー。
値 | 説明 |
---|---|
|
バイト ストリームを作成します。 バイト ストリームは 、IMFByteStream インターフェイスをサポートする必要があります。 |
|
メディア ソースを作成します。 メディア ソースは 、IMFMediaSource インターフェイスをサポートする必要があります。 |
[out] ppIUnknownCancelCookie
IUnknown インターフェイスへのポインターを受け取ります。 このポインターは、 IMFMediaEngineExtension::CancelObjectCreation メソッドへのポインターを渡すことによって、非同期操作を取り消すために使用できます。
呼び出し元はインターフェイスを解放する必要があります。 このパラメーターは、NULL でもかまいません。
[in] pCallback
IMFAsyncCallback インターフェイスへのポインター。 このインターフェイスは、非同期操作の完了を通知するために使用されます。
[in, optional] punkState
呼び出し元によって実装されたオブジェクトの IUnknown インターフェイスへのポインター。 このオブジェクトを使用して、コールバックの状態情報を保持できます。 コールバックが呼び出されると、オブジェクトが呼び出し元に返されます。 このパラメーターは、NULL でもかまいません。
戻り値
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
解説
このメソッドは、 型 パラメーターの値に応じて、バイト ストリームまたはメディア ソースを作成するようにオブジェクトに要求します。
- type がMF_OBJECT_BYTESTREAMの場合、メソッドは bstrURL で指定された URL のバイト ストリームを作成します。 この場合、 pByteStream パラメーターは NULL です。
- type がMF_OBJECT_MEDIASOURCEの場合、 メソッドは pByteStream パラメーターで指定されたバイト ストリームを使用してメディア ソースを作成します。 この場合、 pByteStream は NULL にすることもできます。
実装に関する注意事項
メディア エンジン拡張機能は、カスタム バイト ストリーム オブジェクト、カスタム メディア ソース、またはその両方をサポートするために使用できます。 バイト ストリームの場合は、 型 が MF_OBJECT_BYTESTREAM と等しい場合にバイト ストリーム オブジェクトを作成します。 メディア ソースの場合は、型が MF_OBJECT_MEDIASOURCE と等しいときにソースを作成します。URL を読み込むには、メディア エンジンは次の手順を実行します。
- URL からバイト ストリームを作成してみてください。
- バイト ストリームが正常に作成された場合は、バイト ストリームからメディア ソースを作成してみてください。
- バイト ストリームを作成できない場合は、URL から直接メディア ソースを作成してみてください。
メディア エンジンは、各ステップで、拡張オブジェクトに 対して IMFMediaEngineExtension::BeginCreateObject を呼び出します。 BeginCreateObject メソッドが失敗した場合、メディア エンジンはソース リゾルバーを試みます。
BeginCreateObject メソッドでは、次のいずれかのケースを処理できます。
- 型パラメーターはMF_OBJECT_BYTESTREAM。 URL からバイト ストリームを作成します。
- 型パラメーターはMF_OBJECT_MEDIASOURCEで、pByteStream はバイト ストリームを指します。 バイト ストリームを使用してメディア ソースを作成します。
- 型パラメーターはMF_OBJECT_MEDIASOURCEで、pByteStream は NULL です。 URL からメディア ソースを作成します。
処理しないケースのエラー コードを返します。
例:
- カスタム メディア形式をサポートするには、メディア ソースを実装します。 メディア ソースで特別なバイト ストリームの実装が必要ない場合は、 型 が MF_OBJECT_MEDIASOURCE で pByteStream が 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 |