Microsoft DirectX 8.0

IAMTimelineTrack インターフェイス

Microsoft® DirectShow® 編集サービス (DES) のトラック オブジェクトを操作するメソッドを提供する。

トラックには、最終出力でレンダリングされるソースのリストが入る。同じトラック内のソースは、オーバーラップできない。ビデオ トラックは、エフェクトとトランジションの両方を持つことができる。レンダリング エンジンは、トランジションを適用する前にエフェクトを適用する。オーディオ トラックは、エフェクトを持つことはできるが、トランジションを持つことはできない。

詳細については、「タイムライン モデル」を参照すること。

要件

Qedit.h が必要である。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスへのポインタを取得する。
AddRef参照カウントをインクリメントする。
Release参照カウントをデクリメントする。
IAMTimelineTrack メソッド説明
SrcAddトラックにソースを追加する。
GetNextSrc指定された時間以降に始まる次のソースのトラックを検索する。
GetNextSrc2GetNextSrc と同じ機能だが、REFTIME 値をパラメータにとる。
MoveEverythingBy指定された時間以降に始まるすべてのオブジェクトを、タイムライン上で指定された距離だけ移動する。
MoveEverythingBy2MoveEverythingBy と同じ機能だが、REFTIME 値をパラメータにとる。
GetSourcesCountトラック内のソースの個数を取得する。
AreYouBlankトラックが空白 (ソース オブジェクトが入っていない) かどうか調べる。
GetSrcAtTime指定された境界条件に従って、指定された時間に最も近いソース オブジェクトを取得する。
GetSrcAtTime2GetSrcAtTime と同じ機能だが、REFTIME 値をパラメータにとる。
InsertSpace指定された時間に存在するすべてのオブジェクトを分割し、その間にスペースを挿入する。
InsertSpace2InsertSpace と同じ機能だが、REFTIME 値をパラメータにとる。
ZeroBetweenトラックから、指定された時間の間にあるすべてを削除する。
ZeroBetween2ZeroBetween と同じ機能だが、REFTIME 値をパラメータにとる。
GetNextSrcEx指定されたソースに続く次のソースを取得する。

IAMTimelineTrack::AreYouBlank

IAMTimelineTrack インターフェイス

トラックが空白 (ソース オブジェクトが入っていない) かどうか調べる。

構文

HRESULT AreYouBlank(
    long *pVal
);

パラメータ

pVal
トラックがブランクかどうかを指定するブール値を受け取る変数へのポインタ。この値が TRUE の場合、オブジェクトは空白であり、ソース オブジェクトは入っていない。FALSE の場合、トラックは空白ではない。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

IAMTimelineTrack::GetNextSrc

IAMTimelineTrack インターフェイス

指定された時間以降に始まる次のソースのトラックを検索する。

構文

HRESULT GetNextSrc(
    IAMTimelineObj **ppSrc,
    REFERENCE_TIME *pInOut
);

パラメータ

ppSrc
[out] ソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
pInOut
検索する開始タイム (100 ナノ秒単位) を保持する変数へのポインタ。このメソッドは、ソースを取得した場合、この値をソースの終了タイムに設定する。ソースを取得しなかった場合、この値は無効になり、アプリケーションで使用してはならない。

戻り値

このメソッドは、ソースを取得した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。

注意

pInOut に指定された値がソースの開始タイムと終了タイムの間にあれば、メソッドはそのソースを取得する。

メソッドが S_OK を返した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。

IAMTimelineTrack::GetNextSrc2

IAMTimelineTrack インターフェイス

指定された時間以降に始まる次のソースのトラックを検索する。このメソッドは GetNextSrc と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT GetNextSrc2(
    IAMTimelineObj **ppSrc,
    REFTIME *pInOut
);

パラメータ

ppSrc
[out] ソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
pInOut
検索の開始タイム (秒単位) を保持する変数へのポインタ。このメソッドは、ソースを取得した場合、この値をソースの終了タイムに設定する。ソースを取得しなかった場合、この値は無効になり、アプリケーションで使用してはならない。

戻り値

このメソッドは、ソースを取得した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。

IAMTimelineTrack::GetNextSrcEx

IAMTimelineTrack インターフェイス

指定されたソースに続く次のソースを取得する。

構文

HRESULT GetNextSrcEx(
    IAMTimelineObj *pLast, 
    IAMTimelineObj **ppNext
);

パラメータ

pLast
前のソース オブジェクトへのポインタ。トラック内の最初のソースを取得する場合は NULL。
ppNext
[out] 次のソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。

戻り値

このメソッドは、ソースを取得した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。

注意

メソッドが S_OK を返した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。

IAMTimelineTrack::GetSourcesCount

IAMTimelineTrack インターフェイス

トラック内のソースの個数を取得する。

構文

HRESULT GetSourcesCount(
    long *pVal
);

パラメータ

pVal
トラック内のソースの個数を受け取る変数へのポインタ。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

IAMTimelineTrack::GetSrcAtTime

IAMTimelineTrack インターフェイス

指定された境界条件に従って、指定された時間に最も近いソース オブジェクトを取得する。

構文

HRESULT GetSrcAtTime(
    IAMTimelineObj **ppSrc,
    REFERENCE_TIME Time,
    long SearchDirection
);

パラメータ

ppSrc
[out] ソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
Time
検索の開始タイム (100 ナノ秒単位)。
SearchDirection
DEXTERF_TRACK_SEARCH_FLAGS 列挙型のメンバ。検索の境界条件を指定する。

戻り値

次のいずれかの HRESULT 値を返す。

S_FALSEソース オブジェクトが見つからなかった。
S_OKソース オブジェクトが見つかった。
E_INVALIDARG無効な引数。
E_POINTERNULL ポインタ引数。

注意

メソッドが S_OK を返した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。

IAMTimelineTrack::GetSrcAtTime2

IAMTimelineTrack インターフェイス

指定された境界条件に従って、指定された時間に最も近いソース オブジェクトを取得する。このメソッドは GetSrcAtTime と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT GetSrcAtTime2(
    IAMTimelineObj **ppSrc,
    REFTIME Time,
    long SearchDirection
);

パラメータ

ppSrc
[out] ソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
Time
検索の開始タイム (秒単位)。
SearchDirection
DEXTERF_TRACK_SEARCH_FLAGS 列挙型のメンバ。検索の境界条件を指定する。

戻り値

次のいずれかの HRESULT 値を返す。

S_FALSEソース オブジェクトが見つからなかった。
S_OKソース オブジェクトが見つかった。
E_INVALIDARG無効な引数。
E_POINTERNULL ポインタ引数。

IAMTimelineTrack::InsertSpace

IAMTimelineTrack インターフェイス

指定された時間に存在するすべてのオブジェクトを分割し、その間にスペースを挿入する。

構文

HRESULT InsertSpace(
    REFERENCE_TIME rtStart,
    REFERENCE_TIME rtEnd
);

パラメータ

rtStart
分割を行う時間、また挿入されるスペースの始点 (100 ナノ秒単位)。
rtEnd
挿入されるスペースの終点 (100 ナノ秒単位)。

戻り値

HRESULT 値を返す。可能な戻り値は次のとおりである。

S_FALSE指定された時間にオブジェクトはない。
S_OK成功。
E_INVALIDARG無効な引数。
E_OUTOFMEMORYメモリ不足。

IAMTimelineTrack::InsertSpace2

IAMTimelineTrack インターフェイス

指定された時間に存在するすべてのオブジェクトを分割し、その間にスペースを挿入する。このメソッドは InsertSpace と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT InsertSpace2(
    REFTIME rtStart,
    REFTIME rtEnd
);

パラメータ

rtStart
分割を行う時間、また挿入されるスペースの始点 (秒単位)。
rtEnd
挿入されるスペースの終点 (秒単位)。

戻り値

HRESULT 値を返す。可能な戻り値は次のとおりである。

S_FALSE指定された時間にオブジェクトはない。
S_OK成功。
E_INVALIDARG無効な引数。
E_OUTOFMEMORYメモリ不足。

IAMTimelineTrack::MoveEverythingBy

IAMTimelineTrack インターフェイス

指定された時間以降に始まるすべてのオブジェクトを、タイムライン上で指定された距離だけ移動する。

構文

HRESULT MoveEverythingBy(
    REFERENCE_TIME Start,
    REFERENCE_TIME MoveBy
);

パラメータ

Start
移動の開始タイム (100 ナノ秒単位)。この時間以降に開始するオブジェクトだけが移動される。
MoveBy
タイムライン上でオブジェクトを移動する時間の量 (100 ナノ秒単位)。

戻り値

オブジェクトが移動された場合、S_OK を返す。オブジェクトが移動されなかった場合は、S_FALSE を返す。

IAMTimelineTrack::MoveEverythingBy2

IAMTimelineTrack インターフェイス

指定された時間以降に始まるすべてのオブジェクトを、タイムライン上で指定された距離だけ移動する。このメソッドは MoveEverythingBy と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT MoveEverythingBy2(
    REFTIME Start,
    REFTIME MoveBy
);

パラメータ

Start
移動の開始タイム (秒単位)。この時間以降に開始するオブジェクトだけが移動される。
MoveBy
タイムライン上でオブジェクトを移動する時間の量 (秒単位)。

戻り値

オブジェクトが移動された場合、S_OK を返す。オブジェクトが移動されなかった場合は、S_FALSE を返す。

IAMTimelineTrack::SrcAdd

IAMTimelineTrack インターフェイス

トラックにソースを追加する。

構文

HRESULT SrcAdd(
    IAMTimelineObj *pSrc
);

パラメータ

pSrc
ソース オブジェクトの IAMTimelineObj インターフェイスへのポインタ。

戻り値

成功した場合は、S_OK を返す。オブジェクトがソース オブジェクトでない場合、E_NOINTERFACE を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。

注意

このメソッドを呼び出す前に、ソースの開始タイムと終了タイムを設定する (IAMTimelineObj::SetStartStop を呼び出す)。

現在 DES は、ビデオ圧縮マネージャ (VCM) CODEC で圧縮されたソースは、同時に 75 個までしかレンダリングできない。また、そのようなソースがプロジェクト全体で 75 個を超える場合は、動的な再接続を使わなければ、DES はプロジェクトをプレビューできない。詳細については、「IRenderEngine::SetDynamicReconnectLevel」を参照すること。

IAMTimelineTrack::ZeroBetween

IAMTimelineTrack インターフェイス

トラックから、指定された時間の間にあるすべてを削除する。このメソッドは、指定された時間範囲にかかっているすべてのオブジェクトを分割し、その範囲内にある部分を削除する。

構文

HRESULT ZeroBetween(
    REFERENCE_TIME rtStart,
    REFERENCE_TIME rtEnd
);

パラメータ

rtStart
クリアする範囲の始点 (100 ナノ秒単位)。
rtEnd
クリアする範囲の終点 (100 ナノ秒単位)。

戻り値

HRESULT 値を返す。可能な値は次のとおりである。

S_FALSE時間範囲が、トラック内のすべてのものを超えている。
S_OK成功。

IAMTimelineTrack::ZeroBetween2

IAMTimelineTrack インターフェイス

トラックから、指定された時間の間にあるすべてを削除する。このメソッドは ZeroBetween と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT ZeroBetween2(
    REFTIME rtStart,
    REFTIME rtEnd
);

パラメータ

rtStart
クリアする範囲の始点 (秒単位)。
rtEnd
クリアする範囲の終点 (秒単位)。

戻り値

HRESULT 値を返す。可能な値は次のとおりである。

S_FALSE時間範囲が、トラック内のすべてのものを超えている。
S_OK成功。