Compartir a través de


Método IMFMediaEngineExtension::BeginCreateObject (mfmediaengine.h)

Comienza una solicitud asincrónica para crear una secuencia de bytes o un origen multimedia.

Sintaxis

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

Parámetros

[in] bstrURL

Dirección URL del recurso multimedia.

[in] pByteStream

Puntero a la interfaz IMFByteStream .

Si el parámetro de tipo es igual a MF_OBJECT_BYTESTREAM, este parámetro es NULL.

Si el tipo es igual a MF_OBJECT_MEDIASOURCE, este parámetro contiene un puntero a una secuencia de bytes o es NULL. Vea Comentarios para obtener más información.

[in] type

Miembro de la enumeración MF_OBJECT_TYPE que especifica qué tipo de objeto se va a crear.

Valor Significado
MF_OBJECT_BYTESTREAM
Cree una secuencia de bytes. La secuencia de bytes debe admitir la interfaz IMFByteStream .
MF_OBJECT_MEDIASOURCE
Cree un origen multimedia. La fuente de medios debe apoyar la interfaz IMFMediaSource .

[out] ppIUnknownCancelCookie

Recibe un puntero a la interfaz IUnknown . Este puntero se puede usar para cancelar la operación asincrónica pasando el puntero al método IMFMediaEngineExtension::CancelObjectCreation .

El autor de la llamada debe liberar la interfaz . Este parámetro puede ser NULL.

[in] pCallback

Puntero a la interfaz IMFAsyncCallback . Esta interfaz se usa para indicar la finalización de la operación asincrónica.

[in, optional] punkState

Puntero a la interfaz IUnknown de un objeto implementado por el autor de la llamada. Puede usar este objeto para contener información de estado para la devolución de llamada. El objeto se devuelve al autor de la llamada cuando se invoca la devolución de llamada. Este parámetro puede ser NULL.

Valor devuelto

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Este método solicita al objeto que cree una secuencia de bytes o un origen multimedia, según el valor del parámetro de tipo :

  • Si el tipo es MF_OBJECT_BYTESTREAM, el método crea una secuencia de bytes para la dirección URL especificada en bstrURL. En este caso, el parámetro pByteStream es NULL.
  • Si el tipo es MF_OBJECT_MEDIASOURCE, el método crea un origen multimedia, utilizando la secuencia de bytes especificada en el parámetro pByteStream . Tenga en cuenta que pByteStream también puede ser NULL en este caso.
El método se realiza de forma asincrónica. El motor multimedia llama al método IMFMediaEngineExtension::EndCreateObject para completar la operación.

Notas de implementación

Una extensión media Engine se puede usar para admitir un objeto de secuencia de bytes personalizado, un origen multimedia personalizado o ambos. Para una secuencia de bytes, cree el objeto de secuencia de bytes cuando el tipo sea igual a MF_OBJECT_BYTESTREAM. Para un origen multimedia, cree el origen cuando el tipo sea igual a MF_OBJECT_MEDIASOURCE.

Para cargar una dirección URL, el motor de medios realiza los pasos siguientes:

  1. Intente crear una secuencia de bytes a partir de la dirección URL.
  2. Si se crea correctamente una secuencia de bytes, intente crear un origen multimedia a partir de la secuencia de bytes.
  3. Si no se puede crear una secuencia de bytes, intente crear un origen multimedia directamente desde la dirección URL.

En cada paso, el motor multimedia llama a IMFMediaEngineExtension::BeginCreateObject en el objeto de extensión. Si se produce un error en el método BeginCreateObject , el motor multimedia prueba el solucionador de origen.

En el método BeginCreateObject , puede elegir controlar cualquiera de los siguientes casos:

  • El parámetro type es MF_OBJECT_BYTESTREAM. Cree una secuencia de bytes a partir de la dirección URL.
  • El parámetro type es MF_OBJECT_MEDIASOURCE y pByteStream apunta a una secuencia de bytes. Use la secuencia de bytes para crear un origen multimedia.
  • El parámetro type es MF_OBJECT_MEDIASOURCE y pByteStream es NULL. Cree un origen multimedia a partir de la dirección URL.

Devuelve un código de error para los casos que no controle.

Ejemplos:

  • Para admitir un formato multimedia personalizado, implemente un origen multimedia. Si el origen multimedia no requiere ninguna implementación especial de secuencia de bytes, cree el origen multimedia cuando el tipo sea MF_OBJECT_MEDIASOURCE y pByteStream no sea NULL. En este caso, se usará la implementación de secuencia de bytes estándar de Microsoft Media Foundation.
  • Para admitir un esquema de dirección URL personalizado, controle el caso en el que el tipo es MF_OBJECT_BYTESTREAM y devuelva un objeto de secuencia de bytes que sea capaz de leer la dirección URL.

Si el método BeginCreateObject se realiza correctamente, la operación se debe realizar de forma asincrónica. Cuando se complete la operación, llame al método IMFAsyncCallback::Invoke en la interfaz de devolución de llamada especificada en pCallback. El motor multimedia completa la operación llamando a IMFMediaEngineExtension::EndCreateObject.

Requisitos

   
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfmediaengine.h

Consulte también

IMFMediaEngineExtension