Метод IMFMediaEngineExtension::BeginCreateObject (mfmediaengine.h)
Начинает асинхронный запрос на создание потока байтов или источника мультимедиа.
Синтаксис
HRESULT BeginCreateObject(
[in] BSTR bstrURL,
[in] IMFByteStream *pByteStream,
[in] MF_OBJECT_TYPE type,
[out] IUnknown **ppIUnknownCancelCookie,
[in] IMFAsyncCallback *pCallback,
[in, optional] IUnknown *punkState
);
Параметры
[in] bstrURL
URL-адрес ресурса мультимедиа.
[in] pByteStream
Указатель на интерфейс IMFByteStream .
Если параметр type равен MF_OBJECT_BYTESTREAM, этот параметр имеет значение NULL.
Если тип равен MF_OBJECT_MEDIASOURCE, этот параметр содержит указатель на поток байтов или имеет значение NULL. Дополнительные сведения см. в разделе "Примечания".
[in] type
Член перечисления MF_OBJECT_TYPE , указывающий тип создаваемого объекта.
Значение | Значение |
---|---|
|
Создайте поток байтов. Поток байтов должен поддерживать интерфейс IMFByteStream . |
|
Создайте источник мультимедиа. Источник средств массовой информации должен поддерживать интерфейс IMFMediaSource . |
[out] ppIUnknownCancelCookie
Получает указатель на интерфейс IUnknown . Этот указатель можно использовать для отмены асинхронной операции путем передачи указателя на метод IMFMediaEngineExtension::CancelObjectCreation .
Вызывающий объект должен освободить интерфейс . Этот параметр может принимать значение NULL.
[in] pCallback
Указатель на интерфейс IMFAsyncCallback . Этот интерфейс используется для обозначения завершения асинхронной операции.
[in, optional] punkState
Указатель на интерфейс IUnknown объекта, реализованного вызывающим объектом. Этот объект можно использовать для хранения сведений о состоянии для обратного вызова. Объект возвращается вызывающей при вызове обратного вызова. Этот параметр может принимать значение NULL.
Возвращаемое значение
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Этот метод запрашивает у объекта создание потока байтов или источника мультимедиа в зависимости от значения параметра типа :
- Если типMF_OBJECT_BYTESTREAM, метод создает поток байтов для URL-адреса, указанного в bstrURL. В этом случае параметр pByteStream имеет значение NULL.
- Если типомявляется MF_OBJECT_MEDIASOURCE, метод создает источник мультимедиа, используя поток байтов, указанный в параметре pByteStream . Обратите внимание, что в этом случае pByteStream также может иметь значение NULL .
Примечания по реализации
Расширение обработчика мультимедиа можно использовать для поддержки пользовательского объекта потока байтов, пользовательского источника мультимедиа или и того, и другого. Для потока байтов создайте объект потока байтов, если тип равен MF_OBJECT_BYTESTREAM. Для источника мультимедиа создайте источник, если тип равен MF_OBJECT_MEDIASOURCE.Чтобы загрузить URL-адрес, обработчик мультимедиа выполняет следующие действия.
- Попробуйте создать поток байтов из URL-адреса.
- Если поток байтов успешно создан, попробуйте создать источник мультимедиа из потока байтов.
- Если поток байтов не удается создать, попробуйте создать источник мультимедиа непосредственно из URL-адреса.
На каждом шаге обработчик мультимедиа вызывает IMFMediaEngineExtension::BeginCreateObject в объекте расширения. Если метод BeginCreateObject завершается сбоем, обработчик мультимедиа пытается использовать сопоставитель источника.
В методе BeginCreateObject можно выбрать обработку любого из следующих случаев:
- Параметр type имеет значение MF_OBJECT_BYTESTREAM. Создайте поток байтов из URL-адреса.
- Параметр type — MF_OBJECT_MEDIASOURCE , а pByteStream указывает на поток байтов. Используйте поток байтов для создания источника мультимедиа.
- Параметр type — MF_OBJECT_MEDIASOURCE , а pByteStream — NULL. Создайте источник мультимедиа на основе URL-адреса.
Возвращает код сбоя для всех случаев, которые не обрабатываются.
Примеры:
- Для поддержки настраиваемого формата мультимедиа реализуйте источник мультимедиа. Если источник мультимедиа не требует какой-либо специальной реализации байтового потока, создайте источник мультимедиа, если типом является MF_OBJECT_MEDIASOURCE а pByteStream имеет значение, отличное от NULL. В этом случае будет использоваться стандартная реализация потока байтов Microsoft Media Foundation.
- Для поддержки настраиваемой схемы URL-адресов обработайте случай, когда типом является MF_OBJECT_BYTESTREAM, и возвратите объект потока байтов, который может считывать URL-адрес.
Если метод BeginCreateObject завершается успешно, операция должна выполняться асинхронно. После завершения операции вызовите метод IMFAsyncCallback::Invoke в интерфейсе обратного вызова, указанном в pCallback. Обработчик мультимедиа завершает операцию, вызывая IMFMediaEngineExtension::EndCreateObject.
Требования
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | mfmediaengine.h |