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。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
标头已完全分析和验证。 |
|
输入缓冲区不包含有效的 ASF 数据。 |
|
输入缓冲区太小。 |
|
方法成功,但传递的标头不完整。 这是所有调用的成功返回代码,但最后一个代码在分块传递标头时。 |
注解
如果分片传递标头,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 |