IMFSample 接口 (mfobjects.h)
表示媒体示例,它是媒体数据的容器对象。 对于视频,示例通常包含一个视频帧。 对于音频数据,示例通常包含多个音频样本,而不是单个音频样本。
媒体示例包含零个或多个缓冲区。 每个缓冲区管理一个内存块,并由 IMFMediaBuffer 接口表示。 一个示例可以有多个缓冲区。 缓冲区保存在有序列表中,并按索引值进行访问。 具有没有缓冲区的空样本也是有效的。
继承
IMFSample 接口继承自 IMFAttributes。 IMFSample 还具有以下类型的成员:
方法
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 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) |