Metodo IMFMediaEngineExtension::BeginCreateObject (mfmediaengine.h)

Avvia una richiesta asincrona per creare un flusso di byte o un'origine multimediale.

Sintassi

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

Parametri

[in] bstrURL

URL della risorsa multimediale.

[in] pByteStream

Puntatore all'interfaccia IMFByteStream .

Se il parametro di tipo è uguale a MF_OBJECT_BYTESTREAM, questo parametro è NULL.

Se il tipo è uguale a MF_OBJECT_MEDIASOURCE, questo parametro contiene un puntatore a un flusso di byte o è NULL. Per ulteriori informazioni, vedere la sezione Osservazioni.

[in] type

Membro dell'enumerazione MF_OBJECT_TYPE che specifica il tipo di oggetto da creare.

Valore Significato
MF_OBJECT_BYTESTREAM
Creare un flusso di byte. Il flusso di byte deve supportare l'interfaccia IMFByteStream .
MF_OBJECT_MEDIASOURCE
Creare un'origine multimediale. L'origine multimediale deve supportare l'interfaccia IMFMediaSource .

[out] ppIUnknownCancelCookie

Riceve un puntatore all'interfaccia IUnknown . Questo puntatore può essere utilizzato per annullare l'operazione asincrona passando il puntatore al metodo IMFMediaEngineExtension::CancelObjectCreation .

Il chiamante deve rilasciare l'interfaccia. Questo parametro può essere NULL.

[in] pCallback

Puntatore all'interfaccia IMFAsyncCallback . Questa interfaccia viene usata per segnalare il completamento dell'operazione asincrona.

[in, optional] punkState

Puntatore all'interfaccia IUnknown di un oggetto implementato dal chiamante. È possibile utilizzare questo oggetto per contenere le informazioni sullo stato per il callback. L'oggetto viene restituito al chiamante quando viene richiamato il callback. Questo parametro può essere NULL.

Valore restituito

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Questo metodo richiede all'oggetto di creare un flusso di byte o un'origine multimediale, a seconda del valore del parametro di tipo :

  • Se il tipo è MF_OBJECT_BYTESTREAM, il metodo crea un flusso di byte per l'URL specificato in bstrURL. In questo caso, il parametro pByteStream è NULL.
  • Se il tipo è MF_OBJECT_MEDIASOURCE, il metodo crea un'origine multimediale, usando il flusso di byte specificato nel parametro pByteStream . Si noti che pByteStream può anche essere NULL in questo caso.
Il metodo viene eseguito in modo asincrono. Il motore multimediale chiama il metodo IMFMediaEngineExtension::EndCreateObject per completare l'operazione.

Note sull'implementazione

Un'estensione del motore multimediale può essere usata per supportare un oggetto flusso di byte personalizzato, un'origine multimediale personalizzata o entrambi. Per un flusso di byte, creare l'oggetto flusso di byte quando il tipo è uguale a MF_OBJECT_BYTESTREAM. Per un'origine multimediale, creare l'origine quando il tipo è uguale a MF_OBJECT_MEDIASOURCE.

Per caricare un URL, il motore multimediale esegue la procedura seguente:

  1. Provare a creare un flusso di byte dall'URL.
  2. Se viene creato correttamente un flusso di byte, provare a creare un'origine multimediale dal flusso di byte.
  3. Se non è possibile creare un flusso di byte, provare a creare un'origine multimediale direttamente dall'URL.

A ogni passaggio, il motore multimediale chiama IMFMediaEngineExtension::BeginCreateObject sull'oggetto di estensione. Se il metodo BeginCreateObject ha esito negativo, il motore multimediale prova il resolver di origine.

Nel metodo BeginCreateObject è possibile scegliere di gestire uno dei casi seguenti:

  • Il parametro di tipo è MF_OBJECT_BYTESTREAM. Creare un flusso di byte dall'URL.
  • Il parametro di tipo è MF_OBJECT_MEDIASOURCE e pByteStream punta a un flusso di byte. Usare il flusso di byte per creare un'origine multimediale.
  • Il parametro di tipo è MF_OBJECT_MEDIASOURCE e pByteStream è NULL. Creare un'origine multimediale dall'URL.

Restituisce un codice di errore per tutti i casi non gestiti.

Esempi:

  • Per supportare un formato multimediale personalizzato, implementare un'origine multimediale. Se l'origine multimediale non richiede alcuna implementazione speciale del flusso di byte, creare l'origine multimediale quando il tipo è MF_OBJECT_MEDIASOURCE e pByteStream non è NULL. In questo caso verrà usata l'implementazione standard del flusso di byte di Microsoft Media Foundation.
  • Per supportare uno schema URL personalizzato, gestire il caso in cui il tipo è MF_OBJECT_BYTESTREAM e restituire un oggetto flusso di byte in grado di leggere l'URL.

Se il metodo BeginCreateObject ha esito positivo, l'operazione deve essere eseguita in modo asincrono. Al termine dell'operazione, chiamare il metodo IMFAsyncCallback::Invoke sull'interfaccia di callback specificata in pCallback. Il motore multimediale completa l'operazione chiamando IMFMediaEngineExtension::EndCreateObject.

Requisiti

   
Client minimo supportato Windows 8 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione mfmediaengine.h

Vedi anche

IMFMediaEngineExtension