IMFASFIndexer::GetSeekPositionForValue 方法 (wmcontainer.h)

给定所需的查找时间,获取客户端应从中开始读取数据的偏移量。

语法

HRESULT GetSeekPositionForValue(
  [in]  const PROPVARIANT    *pvarValue,
  [in]  ASF_INDEX_IDENTIFIER *pIndexIdentifier,
  [out] QWORD                *pcbOffsetWithinData,
  [out] MFTIME               *phnsApproxTime,
  [out] DWORD                *pdwPayloadNumberOfStreamWithinPacket
);

参数

[in] pvarValue

要获取其位置的索引项的值。 此值的格式因索引标识符中指定的索引类型而异。 对于基于时间的索引,变体类型 为VT_I8 值是所需的搜寻时间(以 100 纳秒为单位)。

[in] pIndexIdentifier

指向标识流编号和索引类型的 ASF_INDEX_IDENTIFIER 结构的指针。

[out] pcbOffsetWithinData

接收 ASF 数据对象的数据段内的偏移量。 偏移量以字节为单位,相对于数据包 0 的开头。 偏移量提供客户端应从流中开始读取的起始位置。 此位置可能与请求的查找时间不完全对应。

对于反向播放,如果所需查找位置后不存在关键帧,此参数将接收 值MFASFINDEXER_READ_FOR_REVERSEPLAYBACK_OUTOFDATASEGMENT。 在这种情况下,搜寻位置应为数据段末尾的 1 个字节。

[out] phnsApproxTime

接收位于返回的偏移量处的大致数据时间戳,该偏移量返回在 参数中 。 此值的准确性等于 ASF 索引的索引间隔,通常约为 1 秒。

  • 如果在 pIndexIdentifier 中指定的索引类型 ( 时间索引) GUID_NULL,则此参数可以为 NULL
  • 对于所有其他索引类型,此参数必须为 NULL
如果无法确定近似时间戳,此参数将接收 值MFASFINDEXER_APPROX_SEEK_TIME_UNKNOWN

[out] pdwPayloadNumberOfStreamWithinPacket

接收有效负载的有效负载号,该有效负载包含指定流的信息。 数据包可以包含多个有效负载,每个有效负载都包含不同流的数据。 此参数可以为 NULL。

返回值

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

返回代码 说明
S_OK
方法成功。
MF_E_ASF_OUTOFRANGE
请求的查找时间超出范围。
MF_E_NO_INDEX
指定的流不存在指定类型的索引。

要求

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

另请参阅

ASF 索引对象

IMFASFIndexer

MFTIME