Поделиться через


Метод 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

Значение записи индекса, для которой требуется получить позицию. Формат этого значения зависит от типа индекса, указанного в идентификаторе индекса. Для индексирования на основе времени типом variant является VT_I8 , а значением является требуемое время поиска в 100 наносекундных единицах.

[in] pIndexIdentifier

Указатель на структуру ASF_INDEX_IDENTIFIER , определяющую номер потока и тип индекса.

[out] pcbOffsetWithinData

Получает смещение в сегменте данных объекта данных ASF. Смещение равно байтам и относительно начала пакета 0. Смещение дает начальную точку, с которой клиент должен начать чтение из потока. Это расположение может не соответствовать запрошенному времени поиска.

Для обратного воспроизведения, если после нужной позиции поиска не существует ключевого кадра, этот параметр получает значение MFASFINDEXER_READ_FOR_REVERSEPLAYBACK_OUTOFDATASEGMENT. В этом случае позиция поиска должна составлять 1 байт в конце сегмента данных.

[out] phnsApproxTime

Получает приблизительную метку времени данных, расположенных в смещении, возвращенном в параметре pcbOffsetWithinData . Точность этого значения равна интервалу индексирования индекса 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
Header wmcontainer.h
Библиотека Mfuuid.lib

См. также раздел

Объект индекса ASF

IMFASFIndexer

MFTIME