IMFMediaEngineExtension::BeginCreateObject-Methode (mfmediaengine.h)
Startet eine asynchrone Anforderung zum Erstellen eines Bytestreams oder einer Medienquelle.
Syntax
HRESULT BeginCreateObject(
[in] BSTR bstrURL,
[in] IMFByteStream *pByteStream,
[in] MF_OBJECT_TYPE type,
[out] IUnknown **ppIUnknownCancelCookie,
[in] IMFAsyncCallback *pCallback,
[in, optional] IUnknown *punkState
);
Parameter
[in] bstrURL
Die URL der Medienressource.
[in] pByteStream
Ein Zeiger auf die IMFByteStream-Schnittstelle .
Wenn der Type-Parametergleich MF_OBJECT_BYTESTREAM ist, ist dieser Parameter NULL.
Wenn type gleich MF_OBJECT_MEDIASOURCE ist, enthält dieser Parameter entweder einen Zeiger auf einen Bytedatenstrom oder ist NULL. Weitere Informationen finden Sie unter Hinweise.
[in] type
Ein Member der MF_OBJECT_TYPE-Enumeration , das angibt, welcher Objekttyp erstellt werden soll.
Wert | Bedeutung |
---|---|
|
Erstellen Sie einen Bytestream. Der Bytestream muss die IMFByteStream-Schnittstelle unterstützen. |
|
Erstellen Sie eine Medienquelle. Die Medienquelle muss die IMFMediaSource-Schnittstelle unterstützen. |
[out] ppIUnknownCancelCookie
Empfängt einen Zeiger auf die IUnknown-Schnittstelle . Dieser Zeiger kann verwendet werden, um den asynchronen Vorgang abzubrechen, indem der Zeiger an die IMFMediaEngineExtension::CancelObjectCreation-Methode übergeben wird.
Der Aufrufer muss die Schnittstelle freigeben. Dieser Parameter kann NULL sein.
[in] pCallback
Ein Zeiger auf die IMFAsyncCallback-Schnittstelle . Diese Schnittstelle wird verwendet, um den Abschluss des asynchronen Vorgangs zu signalisieren.
[in, optional] punkState
Ein Zeiger auf die IUnknown-Schnittstelle eines vom Aufrufer implementierten Objekts. Sie können dieses Objekt verwenden, um Zustandsinformationen für den Rückruf zu enthalten. Das -Objekt wird an den Aufrufer zurückgegeben, wenn der Rückruf aufgerufen wird. Dieser Parameter kann NULL sein.
Rückgabewert
Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
Hinweise
Diese Methode fordert das Objekt auf, abhängig vom Wert des type-Parameters entweder einen Bytestream oder eine Medienquelle zu erstellen:
- Wenn typeMF_OBJECT_BYTESTREAM ist, erstellt die Methode einen Bytestream für die URL, die in bstrURL angegeben ist. In diesem Fall ist der pByteStream-ParameterNULL.
- Wenn typeMF_OBJECT_MEDIASOURCE ist, erstellt die -Methode eine Medienquelle unter Verwendung des Bytestreams, der im pByteStream-Parameter angegeben ist. Beachten Sie, dass pByteStream in diesem Fall auch NULL sein kann.
Implementierungshinweise
Eine Medien-Engine-Erweiterung kann verwendet werden, um ein benutzerdefiniertes Bytestreamobjekt, eine benutzerdefinierte Medienquelle oder beides zu unterstützen. Erstellen Sie für einen Bytestream das Bytestreamobjekt, wenn der Typgleich MF_OBJECT_BYTESTREAM ist. Erstellen Sie für eine Medienquelle die Quelle, wenn der Typ gleich MF_OBJECT_MEDIASOURCE ist.Zum Laden einer URL führt die Medien-Engine die folgenden Schritte aus:
- Versuchen Sie, einen Bytestream über die URL zu erstellen.
- Wenn ein Bytestream erfolgreich erstellt wurde, versuchen Sie, eine Medienquelle aus dem Bytedatenstrom zu erstellen.
- Wenn kein Bytestream erstellt werden kann, versuchen Sie, eine Medienquelle direkt über die URL zu erstellen.
Bei jedem Schritt ruft die Medien-Engine IMFMediaEngineExtension::BeginCreateObject für das Erweiterungsobjekt auf. Wenn bei der BeginCreateObject-Methode ein Fehler auftritt, versucht die Medien-Engine den Quelllöser.
In Ihrer BeginCreateObject-Methode können Sie einen der folgenden Fälle behandeln:
- Der Type-Parameter ist MF_OBJECT_BYTESTREAM. Erstellen Sie einen Bytestream aus der URL.
- Der Type-Parameter ist MF_OBJECT_MEDIASOURCE und pByteStream zeigt auf einen Bytestream. Verwenden Sie den Bytestream, um eine Medienquelle zu erstellen.
- Der Type-Parameter ist MF_OBJECT_MEDIASOURCE und pByteStream ist NULL. Erstellen Sie eine Medienquelle aus der URL.
Gibt einen Fehlercode für alle Fälle zurück, die Sie nicht behandeln.
Beispiele:
- Um ein benutzerdefiniertes Medienformat zu unterstützen, implementieren Sie eine Medienquelle. Wenn die Medienquelle keine spezielle Bytestreamimplementierung erfordert, erstellen Sie die Medienquelle, wenn der TypMF_OBJECT_MEDIASOURCE und pByteStream nicht NULL ist. In diesem Fall wird die Standardmäßige Microsoft Media Foundation-Bytestreamimplementierung verwendet.
- Um ein benutzerdefiniertes URL-Schema zu unterstützen, behandeln Sie den Fall, in dem der TypMF_OBJECT_BYTESTREAM ist, und geben ein Bytestreamobjekt zurück, das die URL lesen kann.
Wenn die BeginCreateObject-Methode erfolgreich ist, sollte der Vorgang asynchron ausgeführt werden. Rufen Sie nach Abschluss des Vorgangs die IMFAsyncCallback::Invoke-Methode für die in pCallback angegebene Rückrufschnittstelle auf. Die Medien-Engine schließt den Vorgang durch Aufrufen von IMFMediaEngineExtension::EndCreateObject ab.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 8 [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | mfmediaengine.h |