Método IMFMediaEngineExtension::BeginCreateObject (mfmediaengine.h)
Inicia uma solicitação assíncrona para criar um fluxo de bytes ou uma fonte de mídia.
Sintaxe
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
A URL do recurso de mídia.
[in] pByteStream
Um ponteiro para a interface IMFByteStream .
Se o parâmetro de tipo for igual a MF_OBJECT_BYTESTREAM, esse parâmetro será NULL.
Se o tipo for igual a MF_OBJECT_MEDIASOURCE, esse parâmetro conterá um ponteiro para um fluxo de bytes ou será NULL. Confira Comentários para obter mais informações.
[in] type
Um membro da enumeração MF_OBJECT_TYPE que especifica qual tipo de objeto criar.
Valor | Significado |
---|---|
|
Criar um fluxo de bytes. O fluxo de bytes deve dar suporte à interface IMFByteStream . |
|
Crie uma fonte de mídia. A fonte de mídia deve dar suporte à interface IMFMediaSource . |
[out] ppIUnknownCancelCookie
Recebe um ponteiro para a interface IUnknown . Esse ponteiro pode ser usado para cancelar a operação assíncrona, passando o ponteiro para o método IMFMediaEngineExtension::CancelObjectCreation .
O chamador deve liberar a interface . Este parâmetro pode ser NULL.
[in] pCallback
Um ponteiro para a interface IMFAsyncCallback . Essa interface é usada para sinalizar a conclusão da operação assíncrona.
[in, optional] punkState
Um ponteiro para a interface IUnknown de um objeto implementado pelo chamador. Você pode usar esse objeto para armazenar informações de estado para o retorno de chamada. O objeto é retornado ao chamador quando o retorno de chamada é invocado. Este parâmetro pode ser NULL.
Retornar valor
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Esse método solicita que o objeto crie um fluxo de bytes ou uma fonte de mídia, dependendo do valor do parâmetro de tipo :
- Se o tipo for MF_OBJECT_BYTESTREAM, o método criará um fluxo de bytes para a URL especificada em bstrURL. Nesse caso, o parâmetro pByteStream é NULL.
- Se o tipo for MF_OBJECT_MEDIASOURCE, o método criará uma fonte de mídia, usando o fluxo de bytes especificado no parâmetro pByteStream . Observe que pByteStream também pode ser NULL nesse caso.
Notas de implementação
Uma extensão do Mecanismo de Mídia pode ser usada para dar suporte a um objeto de fluxo de bytes personalizado, uma fonte de mídia personalizada ou ambos. Para um fluxo de bytes, crie o objeto de fluxo de bytes quando o tipo for igual a MF_OBJECT_BYTESTREAM. Para uma fonte de mídia, crie a origem quando o tipo for igual a MF_OBJECT_MEDIASOURCE.Para carregar uma URL, o Mecanismo de Mídia executa as seguintes etapas:
- Tente criar um fluxo de bytes da URL.
- Se um fluxo de bytes for criado com êxito, tente criar uma fonte de mídia do fluxo de bytes.
- Se um fluxo de bytes não puder ser criado, tente criar uma fonte de mídia diretamente da URL.
Em cada etapa, o Mecanismo de Mídia chama IMFMediaEngineExtension::BeginCreateObject no objeto de extensão. Se o método BeginCreateObject falhar, o Mecanismo de Mídia tentará o Resolvedor de Origem.
No método BeginCreateObject , você pode optar por manipular qualquer um dos seguintes casos:
- O parâmetro de tipo é MF_OBJECT_BYTESTREAM. Crie um fluxo de bytes da URL.
- O parâmetro de tipo é MF_OBJECT_MEDIASOURCE e pByteStream aponta para um fluxo de bytes. Use o fluxo de bytes para criar uma fonte de mídia.
- O parâmetro de tipo é MF_OBJECT_MEDIASOURCE e pByteStream é NULL. Crie uma fonte de mídia com base na URL.
Retornar um código de falha para todos os casos que você não manipular.
Exemplos:
- Para dar suporte a um formato de mídia personalizado, implemente uma fonte de mídia. Se a fonte de mídia não exigir nenhuma implementação especial de fluxo de bytes, crie a fonte de mídia quando o tipo for MF_OBJECT_MEDIASOURCE e pByteStream não for NULL. A implementação padrão do fluxo de bytes do Microsoft Media Foundation será usada nesse caso.
- Para dar suporte a um esquema de URL personalizado, manipule o caso em que o tipo é MF_OBJECT_BYTESTREAM e retorne um objeto de fluxo de bytes capaz de ler a URL.
Se o método BeginCreateObject for bem-sucedido, a operação deverá ser executada de forma assíncrona. Quando a operação for concluída, chame o método IMFAsyncCallback::Invoke na interface de retorno de chamada especificada em pCallback. O Mecanismo de Mídia conclui a operação chamando IMFMediaEngineExtension::EndCreateObject.
Requisitos
Cliente mínimo com suporte | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | mfmediaengine.h |