Microsoft DirectX 8.0 |
Microsoft® DirectShow® 編集サービス (DES) のトラック オブジェクトを操作するメソッドを提供する。
トラックには、最終出力でレンダリングされるソースのリストが入る。同じトラック内のソースは、オーバーラップできない。ビデオ トラックは、エフェクトとトランジションの両方を持つことができる。レンダリング エンジンは、トランジションを適用する前にエフェクトを適用する。オーディオ トラックは、エフェクトを持つことはできるが、トランジションを持つことはできない。
詳細については、「タイムライン モデル」を参照すること。
要件
Qedit.h が必要である。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMTimelineTrack メソッド 説明 SrcAdd トラックにソースを追加する。 GetNextSrc 指定された時間以降に始まる次のソースのトラックを検索する。 GetNextSrc2 GetNextSrc と同じ機能だが、REFTIME 値をパラメータにとる。 MoveEverythingBy 指定された時間以降に始まるすべてのオブジェクトを、タイムライン上で指定された距離だけ移動する。 MoveEverythingBy2 MoveEverythingBy と同じ機能だが、REFTIME 値をパラメータにとる。 GetSourcesCount トラック内のソースの個数を取得する。 AreYouBlank トラックが空白 (ソース オブジェクトが入っていない) かどうか調べる。 GetSrcAtTime 指定された境界条件に従って、指定された時間に最も近いソース オブジェクトを取得する。 GetSrcAtTime2 GetSrcAtTime と同じ機能だが、REFTIME 値をパラメータにとる。 InsertSpace 指定された時間に存在するすべてのオブジェクトを分割し、その間にスペースを挿入する。 InsertSpace2 InsertSpace と同じ機能だが、REFTIME 値をパラメータにとる。 ZeroBetween トラックから、指定された時間の間にあるすべてを削除する。 ZeroBetween2 ZeroBetween と同じ機能だが、REFTIME 値をパラメータにとる。 GetNextSrcEx 指定されたソースに続く次のソースを取得する。
トラックが空白 (ソース オブジェクトが入っていない) かどうか調べる。
構文
HRESULT AreYouBlank( long *pVal );
パラメータ
- pVal
- トラックがブランクかどうかを指定するブール値を受け取る変数へのポインタ。この値が TRUE の場合、オブジェクトは空白であり、ソース オブジェクトは入っていない。FALSE の場合、トラックは空白ではない。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
指定された時間以降に始まる次のソースのトラックを検索する。
構文
HRESULT GetNextSrc( IAMTimelineObj **ppSrc, REFERENCE_TIME *pInOut );
パラメータ
- ppSrc
- [out] ソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
- pInOut
- 検索する開始タイム (100 ナノ秒単位) を保持する変数へのポインタ。このメソッドは、ソースを取得した場合、この値をソースの終了タイムに設定する。ソースを取得しなかった場合、この値は無効になり、アプリケーションで使用してはならない。
戻り値
このメソッドは、ソースを取得した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。
注意
pInOut に指定された値がソースの開始タイムと終了タイムの間にあれば、メソッドはそのソースを取得する。
メソッドが S_OK を返した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。
指定された時間以降に始まる次のソースのトラックを検索する。このメソッドは GetNextSrc と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT GetNextSrc2( IAMTimelineObj **ppSrc, REFTIME *pInOut );
パラメータ
- ppSrc
- [out] ソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
- pInOut
- 検索の開始タイム (秒単位) を保持する変数へのポインタ。このメソッドは、ソースを取得した場合、この値をソースの終了タイムに設定する。ソースを取得しなかった場合、この値は無効になり、アプリケーションで使用してはならない。
戻り値
このメソッドは、ソースを取得した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。
指定されたソースに続く次のソースを取得する。
構文
HRESULT GetNextSrcEx( IAMTimelineObj *pLast, IAMTimelineObj **ppNext );
パラメータ
- pLast
- 前のソース オブジェクトへのポインタ。トラック内の最初のソースを取得する場合は NULL。
- ppNext
- [out] 次のソース オブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
戻り値
このメソッドは、ソースを取得した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。
注意
メソッドが S_OK を返した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。
トラック内のソースの個数を取得する。
構文
HRESULT GetSourcesCount( long *pVal );
パラメータ
- pVal
- トラック内のソースの個数を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
指定された境界条件に従って、指定された時間に最も近いソース オブジェクトを取得する。
構文
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_POINTER NULL ポインタ引数。
注意
メソッドが S_OK を返した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。
指定された境界条件に従って、指定された時間に最も近いソース オブジェクトを取得する。このメソッドは 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_POINTER NULL ポインタ引数。
指定された時間に存在するすべてのオブジェクトを分割し、その間にスペースを挿入する。
構文
HRESULT InsertSpace( REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd );
パラメータ
- rtStart
- 分割を行う時間、また挿入されるスペースの始点 (100 ナノ秒単位)。
- rtEnd
- 挿入されるスペースの終点 (100 ナノ秒単位)。
戻り値
HRESULT 値を返す。可能な戻り値は次のとおりである。
S_FALSE 指定された時間にオブジェクトはない。 S_OK 成功。 E_INVALIDARG 無効な引数。 E_OUTOFMEMORY メモリ不足。
指定された時間に存在するすべてのオブジェクトを分割し、その間にスペースを挿入する。このメソッドは InsertSpace と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT InsertSpace2( REFTIME rtStart, REFTIME rtEnd );
パラメータ
- rtStart
- 分割を行う時間、また挿入されるスペースの始点 (秒単位)。
- rtEnd
- 挿入されるスペースの終点 (秒単位)。
戻り値
HRESULT 値を返す。可能な戻り値は次のとおりである。
S_FALSE 指定された時間にオブジェクトはない。 S_OK 成功。 E_INVALIDARG 無効な引数。 E_OUTOFMEMORY メモリ不足。
指定された時間以降に始まるすべてのオブジェクトを、タイムライン上で指定された距離だけ移動する。
構文
HRESULT MoveEverythingBy( REFERENCE_TIME Start, REFERENCE_TIME MoveBy );
パラメータ
- Start
- 移動の開始タイム (100 ナノ秒単位)。この時間以降に開始するオブジェクトだけが移動される。
- MoveBy
- タイムライン上でオブジェクトを移動する時間の量 (100 ナノ秒単位)。
戻り値
オブジェクトが移動された場合、S_OK を返す。オブジェクトが移動されなかった場合は、S_FALSE を返す。
指定された時間以降に始まるすべてのオブジェクトを、タイムライン上で指定された距離だけ移動する。このメソッドは MoveEverythingBy と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT MoveEverythingBy2( REFTIME Start, REFTIME MoveBy );
パラメータ
- Start
- 移動の開始タイム (秒単位)。この時間以降に開始するオブジェクトだけが移動される。
- MoveBy
- タイムライン上でオブジェクトを移動する時間の量 (秒単位)。
戻り値
オブジェクトが移動された場合、S_OK を返す。オブジェクトが移動されなかった場合は、S_FALSE を返す。
トラックにソースを追加する。
構文
HRESULT SrcAdd( IAMTimelineObj *pSrc );
パラメータ
- pSrc
- ソース オブジェクトの IAMTimelineObj インターフェイスへのポインタ。
戻り値
成功した場合は、S_OK を返す。オブジェクトがソース オブジェクトでない場合、E_NOINTERFACE を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。
注意
このメソッドを呼び出す前に、ソースの開始タイムと終了タイムを設定する (IAMTimelineObj::SetStartStop を呼び出す)。
現在 DES は、ビデオ圧縮マネージャ (VCM) CODEC で圧縮されたソースは、同時に 75 個までしかレンダリングできない。また、そのようなソースがプロジェクト全体で 75 個を超える場合は、動的な再接続を使わなければ、DES はプロジェクトをプレビューできない。詳細については、「IRenderEngine::SetDynamicReconnectLevel」を参照すること。
トラックから、指定された時間の間にあるすべてを削除する。このメソッドは、指定された時間範囲にかかっているすべてのオブジェクトを分割し、その範囲内にある部分を削除する。
構文
HRESULT ZeroBetween( REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd );
パラメータ
- rtStart
- クリアする範囲の始点 (100 ナノ秒単位)。
- rtEnd
- クリアする範囲の終点 (100 ナノ秒単位)。
戻り値
HRESULT 値を返す。可能な値は次のとおりである。
S_FALSE 時間範囲が、トラック内のすべてのものを超えている。 S_OK 成功。
トラックから、指定された時間の間にあるすべてを削除する。このメソッドは ZeroBetween と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT ZeroBetween2( REFTIME rtStart, REFTIME rtEnd );
パラメータ
- rtStart
- クリアする範囲の始点 (秒単位)。
- rtEnd
- クリアする範囲の終点 (秒単位)。
戻り値
HRESULT 値を返す。可能な値は次のとおりである。
S_FALSE 時間範囲が、トラック内のすべてのものを超えている。 S_OK 成功。