视频示例

视频示例对象是 IMFSample 接口的专用实现,可与 增强的视频呈现器 (EVR) 配合使用。 若要创建此对象的实例,请调用 MFCreateVideoSampleFromSurface 函数。 函数采用指向 Direct3D 图面的指针,并返回指向 IMFSample 接口的指针。 以下类型的对象应使用此函数分配示例:

视频示例对象实现以下接口:

如果 MFCreateVideoSampleFromSurfacepUnkSurface 参数为非 NULL,则生成的视频示例包含封装 Direct3D 图面的单个媒体缓冲区。 此缓冲区对象的功能有限:

从缓冲区访问图面的唯一方法是使用服务标识符MR_BUFFER_SERVICE调用 IMFGetService::GetService

如果 pUnkSurface 参数为 NULL,则会使用零个媒体缓冲区创建视频示例。 若要添加示例缓冲区,请执行以下操作:

  1. 创建 Direct3D 图面。

  2. 通过调用 MFCreateDXSurfaceBuffer 创建图面缓冲区。 有关详细信息,请参阅 DirectX Surface Buffer

  3. 通过调用 IMFSample::AddBuffer 将缓冲区添加到示例。

如果需要通过 IMF2DBuffer 接口访问 Surface 内存,请使用此方法。

媒体缓冲区

媒体示例