Поделиться через


Метод 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 , указывающий тип создаваемого объекта.

Значение Значение
MF_OBJECT_BYTESTREAM
Создайте поток байтов. Поток байтов должен поддерживать интерфейс IMFByteStream .
MF_OBJECT_MEDIASOURCE
Создайте источник мультимедиа. Источник средств массовой информации должен поддерживать интерфейс 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 .
Метод выполняется асинхронно. Обработчик мультимедиа вызывает метод IMFMediaEngineExtension::EndCreateObject для завершения операции.

Примечания по реализации

Расширение обработчика мультимедиа можно использовать для поддержки пользовательского объекта потока байтов, пользовательского источника мультимедиа или и того, и другого. Для потока байтов создайте объект потока байтов, если тип равен MF_OBJECT_BYTESTREAM. Для источника мультимедиа создайте источник, если тип равен MF_OBJECT_MEDIASOURCE.

Чтобы загрузить URL-адрес, обработчик мультимедиа выполняет следующие действия.

  1. Попробуйте создать поток байтов из URL-адреса.
  2. Если поток байтов успешно создан, попробуйте создать источник мультимедиа из потока байтов.
  3. Если поток байтов не удается создать, попробуйте создать источник мультимедиа непосредственно из URL-адреса.

На каждом шаге обработчик мультимедиа вызывает IMFMediaEngineExtension::BeginCreateObject в объекте расширения. Если метод BeginCreateObject завершается сбоем, обработчик мультимедиа пытается использовать сопоставитель источника.

В методе BeginCreateObject можно выбрать обработку любого из следующих случаев:

  • Параметр type имеет значение MF_OBJECT_BYTESTREAM. Создайте поток байтов из URL-адреса.
  • Параметр typeMF_OBJECT_MEDIASOURCE , а pByteStream указывает на поток байтов. Используйте поток байтов для создания источника мультимедиа.
  • Параметр typeMF_OBJECT_MEDIASOURCE , а pByteStreamNULL. Создайте источник мультимедиа на основе 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

См. также раздел

IMFMediaEngineExtension