IMFASFContentInfo::P arseHeader 方法 (wmcontainer.h)

分析 ASF 标头中的信息,并使用该信息在 ContentInfo 对象中设置值。 可以在单个缓冲区中传递整个标头,也可以分多个部分发送。

语法

HRESULT ParseHeader(
  [in] IMFMediaBuffer *pIHeaderBuffer,
  [in] QWORD          cbOffsetWithinHeader
);

参数

[in] pIHeaderBuffer

指向包含部分或全部标头的缓冲区对象的 IMFMediaBuffer 接口的指针。 缓冲区必须包含至少 30 个字节,即 Header 对象的大小,不包括 Header 对象 (中包含的对象,即标头对象) 中包括 Reserved2 字段的所有内容。

[in] cbOffsetWithinHeader

缓冲区中第一个字节相对于标头开头的偏移量(以字节为单位)。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
标头已完全分析和验证。
MF_E_ASF_INVALIDDATA
输入缓冲区不包含有效的 ASF 数据。
MF_E_BUFFERTOOSMALL
输入缓冲区太小。
MF_S_ASF_PARSEINPROGRESS
方法成功,但传递的标头不完整。 这是所有调用的成功返回代码,但最后一个代码在分块传递标头时。

注解

如果分片传递标头,ContentInfo 对象将保留对缓冲区对象的引用,直到分析整个标头。 因此,不要写入传入此方法的缓冲区。

Header 对象的开头在内存中具有以下布局:

字段名称 大小(以字节为单位)
对象 ID 16
对象大小 8
标头对象数 4
Reserved1 1
Reserved2 1
 

第一次调用 ParseHeader 将读取包括 Rerserved2 在内的所有内容,因此至少需要 30 个字节。 (请注意, IMFASFContentInfo::GetHeaderSize 方法仅读取“对象 ID”和“对象大小”字段,因此该方法至少需要 24 个字节。)

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wmcontainer.h
Library Mfuuid.lib

另请参阅

IMFASFContentInfo

初始化新 ASF 文件的 ContentInfo 对象