次の方法で共有


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

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
ヘッダー wmcontainer.h
Library Mfuuid.lib

こちらもご覧ください

ASF Index オブジェクト

IMFASFIndexer

MFTIME