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 |
---|---|
|
Cree una secuencia de bytes. La secuencia de bytes debe admitir la interfaz IMFByteStream . |
|
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.
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:
- Intente crear una secuencia de bytes a partir de la dirección URL.
- Si se crea correctamente una secuencia de bytes, intente crear un origen multimedia a partir de la secuencia de bytes.
- 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 |