次の方法で共有


MFCreateSequencerSegmentOffset 関数 (mfidl.h)

シーケンサーソースプレゼンテーション内でシークするために使用できる PROPVARIANT を作成します。

構文

HRESULT MFCreateSequencerSegmentOffset(
  [in]  MFSequencerElementId dwId,
  [in]  MFTIME               hnsOffset,
  [out] PROPVARIANT          *pvarSegmentOffset
);

パラメーター

[in] dwId

Sequencer 要素識別子。 この値は、再生を開始するセグメントを指定します。 要素識別子は、 IMFSequencerSource::AppendTopology メソッドで返されます。

[in] hnsOffset

セグメント内の開始位置 (100 ナノ秒単位)。

[out] pvarSegmentOffset

PROPVARIANT へのポインター。 メソッドは、シーク操作を実行するために必要な情報を PROPVARIANT に入力します。 呼び出し元は PropVariantClear を呼び出して PROPVARIANT を解放する必要があります。

戻り値

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

pvarSegmentOffset で返される PROPVARIANT は、IMFMediaSession::Start メソッドの pvarStartPosition パラメーターに使用できます。 時刻形式の GUID MF_TIME_FORMAT_SEGMENT_OFFSETを使用します。

// Skips to the specified segment in the sequencer source

HRESULT CPlaylist::SkipTo(DWORD index)
{
    if (index >= m_count)
    {
        return E_INVALIDARG;
    }

    MFSequencerElementId ID = m_segments[index].SegmentID;

    PROPVARIANT var;

    HRESULT hr = MFCreateSequencerSegmentOffset(ID, NULL, &var);
    
    if (SUCCEEDED(hr))
    {
        hr = m_pSession->Start(&MF_TIME_FORMAT_SEGMENT_OFFSET, &var);
        PropVariantClear(&var);
    }
    return hr;
}

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mfidl.h
Library Mf.lib
[DLL] Mf.dll

こちらもご覧ください

MFTIME

メディア ファンデーション機能

Sequencer ソース

Sequencer ソースの使用