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
MF_OBJECT_BYTESTREAM
Erstellen Sie einen Bytestream. Der Bytestream muss die IMFByteStream-Schnittstelle unterstützen.
MF_OBJECT_MEDIASOURCE
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.
Die Methode wird asynchron ausgeführt. Die Medien-Engine ruft die METHODE IMFMediaEngineExtension::EndCreateObject auf, um den Vorgang abzuschließen.

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:

  1. Versuchen Sie, einen Bytestream über die URL zu erstellen.
  2. Wenn ein Bytestream erfolgreich erstellt wurde, versuchen Sie, eine Medienquelle aus dem Bytedatenstrom zu erstellen.
  3. 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

Weitere Informationen

IMFMediaEngineExtension