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


Примеры видео

Пример объекта video представляет собой специализированную реализацию интерфейса IMFSample для использования с расширенным отрисовщиком видео (EVR). Чтобы создать экземпляр этого объекта, вызовите функцию MFCreateVideoSampleFromSurface . Функция принимает указатель на поверхность Direct3D и возвращает указатель на интерфейс IMFSample . Следующие типы объектов должны выделять примеры с помощью этой функции:

  • Пользовательские выступающие EVR. Выступающий выделяет примеры видео и отправляет их в метод IMFTransform::P rocessOutput микшера. Дополнительные сведения см. в разделе How to Write an EVR Presenter.

  • Декодеры видео, поддерживающие ускорение видео. Дополнительные сведения см. в статье Поддержка DXVA 2.0 в Media Foundation.

Пример объекта video реализует следующие интерфейсы:

Если параметр pUnkSurfaceдля MFCreateVideoSampleFromSurface не равен NULL, полученный пример видео содержит один буфер мультимедиа, который инкапсулирует поверхность Direct3D. Этот объект буфера имеет ограниченную функциональность:

Единственный способ получить доступ к поверхности из буфера — вызвать IMFGetService::GetService, используя идентификатор службы MR_BUFFER_SERVICE.

Если параметр pUnkSurface имеет значение NULL, образец видео создается с нулевыми буферами мультимедиа. Чтобы добавить буфер в пример, сделайте следующее:

  1. Создайте поверхность Direct3D.

  2. Создайте буфер поверхности, вызвав MFCreateDXSurfaceBuffer. Дополнительные сведения см. в разделе DirectX Surface Buffer.

  3. Добавьте буфер в пример, вызвав IMFSample::AddBuffer.

Используйте этот подход, если требуется доступ к контактной памяти через интерфейс IMF2DBuffer .

Буферы мультимедиа

Примеры мультимедиа