IMFSample 接口 (mfobjects.h)

表示媒体示例,它是媒体数据的容器对象。 对于视频,示例通常包含一个视频帧。 对于音频数据,示例通常包含多个音频样本,而不是单个音频样本。

媒体示例包含零个或多个缓冲区。 每个缓冲区管理一个内存块,并由 IMFMediaBuffer 接口表示。 一个示例可以有多个缓冲区。 缓冲区保存在有序列表中,并按索引值进行访问。 具有没有缓冲区的空样本也是有效的。

继承

IMFSample 接口继承自 IMFAttributesIMFSample 还具有以下类型的成员:

方法

IMFSample 接口具有这些方法。

 
IMFSample::AddBuffer

将缓冲区添加到示例中缓冲区列表的末尾。
IMFSample::ConvertToContiguousBuffer

将具有多个缓冲区的样本转换为具有单个缓冲区的样本。
IMFSample::CopyToBuffer

将示例数据复制到缓冲区。 此方法按顺序连接来自示例的所有缓冲区的有效数据。
IMFSample::GetBufferByIndex

按索引从样本中获取缓冲区。
IMFSample::GetBufferCount

检索示例中的缓冲区数。
IMFSample::GetSampleDuration

检索样本的持续时间。
IMFSample::GetSampleFlags

检索与示例关联的标志。目前未定义任何标志。
IMFSample::GetSampleTime

检索示例的呈现时间。
IMFSample::GetTotalLength

检索样本中所有缓冲区中有效数据的总长度。 长度计算为 IMFMediaBuffer::GetCurrentLength 方法检索到的值之和。
IMFSample::RemoveAllBuffers

从示例中删除所有缓冲区。
IMFSample::RemoveBufferByIndex

从样本中移除指定索引处的缓冲区。
IMFSample::SetSampleDuration

设置样本的持续时间。
IMFSample::SetSampleFlags

设置与示例关联的标志。目前未定义任何标志。
IMFSample::SetSampleTime

设置示例的呈现时间。

注解

若要创建新的媒体示例,请调用 MFCreateSample

注意  

IMFSample 上调用继承自 IMFAttributes 接口的 CopyAllItems 时,不会将样本时间、持续时间和标志复制到目标示例。 必须手动将这些值复制到新示例。

 
如果安装了 Windows Media Format 11 SDK 可再发行组件,则此接口在以下平台上可用:
  • Windows XP with Service Pack 2 (SP2) 及更高版本。
  • Windows XP Media Center Edition 2005 KB900325 (windows XP Media Center Edition 2005) 和KB925766 (2006 年 10 月 Windows XP Media Center Edition 更新汇总) 安装。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 mfobjects.h (包括 Mfidl.h)

另请参阅

IMFAttributes

媒体基础接口

媒体示例

示例属性