Microsoft DirectX 8.0 |
Microsoft® DirectShow® 編集サービス (DES) の中心的オブジェクトであるタイムラインを操作するメソッドを提供する。タイムラインは、ビデオ クリップ、オーディオ クリップ、エフェクト、およびクリップ間のトランジションなど、時間順の要素のコレクションである。レンダリング エンジンは、タイムラインを使用してフィルタ グラフを作成する。アプリケーションは、フィルタ グラフからレンダリングされた出力を生成できる。
IAMTimeline は、3 つの基本的なサービスを行う。以下のことを行う。
要件
Qedit.h が必要である。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMTimeline メソッド 説明 CreateEmptyNode 新しいタイムライン オブジェクトを作成する。 AddGroup タイムラインにグループを追加する。 RemGroupFromList サポートされていない。 GetGroup 指定されたグループを取得する。 GetGroupCount タイムラインに含まれるグループの個数を取得する。 ClearAllGroups タイムライン内のすべてのグループ、およびそれらに含まれるすべてのオブジェクトを削除する。 GetInsertMode サポートされていない。 SetInsertMode 実装されていない。 EnableTransitions タイムライン内のすべてのトランジションを有効または無効にする。 TransitionsEnabled トランジションが有効かどうかを調べる。 EnableEffects タイムライン内のすべてのエフェクトを有効または無効にする。 EffectsEnabled エフェクトが有効かどうかを調べる。 SetInterestRange 実装されていない。 GetDuration タイムラインの時間幅を取得する。 GetDuration2 GetDuration と同じ機能だが、double 型のパラメータをとる。 SetDefaultFPS デフォルトの出力フレーム レート (毎秒のフレーム数) を設定する。 GetDefaultFPS デフォルトの出力フレーム レート (毎秒のフレーム数) を取得する。 IsDirty サポートされていない。 GetDirtyRange サポートされていない。 GetCountOfType 指定されたグループとそのすべての子に含まれる、指定されたタイプのオブジェクトの個数を取得する。 ValidateSourceNames タイムライン内のソース名を検証する。 SetDefaultTransition デフォルトのトランジションを設定する。 GetDefaultTransition デフォルトのトランジションを取得する。 SetDefaultEffect デフォルトのエフェクトを設定する。 GetDefaultEffect デフォルトのエフェクトを取得する。 SetDefaultTransitionB SetDefaultTransition と同じ機能だが、BSTR 値をパラメータにとる。 GetDefaultTransitionB GetDefaultTransition と同じ機能だが、BSTR 値をパラメータにとる。 SetDefaultEffectB SetDefaultEffect と同じ機能だが、BSTR 値をパラメータにとる。 GetDefaultEffectB GetDefaultEffect と同じ機能だが、BSTR 値をパラメータにとる。
タイムラインにグループを追加する。
構文
HRESULT AddGroup( IAMTimelineObj *pGroup );
パラメータ
- pGroup
- グループの IAMTimelineObj インターフェイスへのポインタ。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_INVALIDARG グループの最大数を超えた。 E_NOINTERFACE このオブジェクトはグループではない。
注意
現在、タイムラインがサポートするグループの最大数は 32 である。
タイムライン内のすべてのグループ、およびそれらに含まれるすべてのオブジェクトを削除する。
構文
HRESULT ClearAllGroups( void );
戻り値
S_OK を返す。
新しいタイムライン オブジェクトを作成する。
このメソッドは重要な初期化ルーチンを実行するので、タイムラインの作成にはこのメソッドを使用し、CoCreateInstance 関数は使用しない。このメソッドによって作成されるオブジェクトは、少なくとも IAMTimelineObj インターフェイスをサポートし、それと共にそのタイプのオブジェクトに特有の他のインターフェイスをサポートする。
構文
HRESULT CreateEmptyNode( IAMTimelineObj **ppObj, TIMELINE_MAJOR_TYPE Type );
パラメータ
- ppObj
- [out] 新しいオブジェクトの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
- Type
- TIMELINE_MAJOR_TYPE 列挙型のメンバ。作成するオブジェクトのタイプを指定する。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_INVALIDARG オブジェクト タイプが有効ではない。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
別のタイムライン インスタンスに新しいオブジェクトを追加しないこと。タイムラインのすべてのオブジェクトは、そのタイムラインによって作成されなくてはならない。
メソッドが成功した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。
エフェクトが有効かどうかを調べる。エフェクトが無効の場合、エフェクトはタイムライン内に存在したままだが、レンダリングはされない。
構文
HRESULT EffectsEnabled( BOOL *pfEnabled );
パラメータ
- pfEnabled
- エフェクトが有効かどうかを示すブール値を受け取る変数へのポインタ。TRUE の場合、エフェクトは有効である。FALSE の場合、エフェクトは無効である。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
タイムライン内のすべてのエフェクトを有効または無効にする。エフェクトが無効の場合、エフェクトはタイムライン内に存在したままだが、レンダリングはされない。
構文
HRESULT EnableEffects( BOOL fEnabled );
パラメータ
- fEnabled
- エフェクトを有効または無効のどちらに設定するかを示すブール値。TRUE の場合、エフェクトが有効になる。FALSE の場合、エフェクトは無効になる。
戻り値
S_OK を返す。
タイムライン内のすべてのトランジションを有効または無効にする。トランジションが無効の場合、レンダリング エンジンはトランジションをカット (直接切り替え) として扱う。すなわち、レンダリングされた出力では、トラックから次のトラックに即座に切り替わる。デフォルトのカット ポイントは、トランジションの時間幅の中間点である。カット ポイントは、そのトランジションの IAMTimelineTrans::SetCutPoint メソッドを呼び出すことにより変更できる。無効になったトランジションは、タイムラインからは削除されない。
構文
HRESULT EnableTransitions( BOOL fEnabled );
パラメータ
- fEnabled
- トランジションを有効または無効のどちらに設定するかを示すブール値。TRUE の場合、トランジションが有効になる。FALSE の場合、トランジションは無効になる。
戻り値
S_OK を返す。
指定されたグループとそのすべての子に含まれる、指定されたタイプのオブジェクトの個数を取得する。
構文
HRESULT GetCountOfType( long Group, long *pVal, long *pValWithComps, TIMELINE_MAJOR_TYPE MajorType );
パラメータ
- Group
- オブジェクトの個数を取得するグループのインデックス番号。
- pVal
- グループおよびそのすべての仮想トラックに含まれる (再帰的に内部に含まれるオブジェクトも含む)、指定されたタイプのオブジェクトの個数を受け取る変数へのポインタ。
- pValWithComps
- pVal に返された個数と、これ自体も含めて検索された合成の個数を加えた数を受け取る変数へのポインタ。
- MajorType
- TIMELINE_MAJOR_TYPE 列挙型のメンバ。個数を数えるオブジェクトのタイプを指定する。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_INVALIDARG 無効なグループ番号。 E_POINTER NULL ポインタ引数。
注意
このメソッドを呼び出すことは、指定のグループの IAMTimelineComp::GetCountOfType を呼び出すことと同等である。詳細については、そのメソッドの「注意」を参照すること。
通常、アプリケーションではこのメソッドを呼び出さない。これは、レンダリング エンジンによって内部的に呼び出される。
デフォルトのエフェクトを取得する。レンダリング エンジンがエフェクトをレンダリングできない場合、デフォルトのエフェクトが代用される。
構文
HRESULT GetDefaultEffect( GUID *pGuid );
パラメータ
- pGuid
- デフォルト エフェクトのグローバル ユニーク識別子 (GUID) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
デフォルトのエフェクトを取得する。このメソッドは GetDefaultEffect と同じ機能だが、GUID ではなく BSTR 値を受け取る。
構文
HRESULT GetDefaultEffectB( BSTR *pGuid );
パラメータ
- pGuid
- [out, retval] デフォルト エフェクトの GUID を表す BSTR 値を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY またはエラーの発生を示すその他の HRESULT 値を返す。
注意
このメソッドは、文字列に必要なメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。
デフォルトの出力フレーム レート (毎秒のフレーム数、FPS) を取得する。グループは、この値をデフォルトのフレーム レートとして使用する。グループのフレーム レートを設定するには、そのグループの IAMTimelineGroup::SetOutputFPS メソッドを呼び出す。
構文
HRESULT GetDefaultFPS( double *pFPS );
パラメータ
- pFPS
- デフォルトのフレーム レート (毎秒のフレーム数) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
デフォルトのトランジションを取得する。レンダリング エンジンがトランジションをレンダリングできない場合、デフォルトのトランジションが代用される。
構文
HRESULT GetDefaultTransition( GUID *pGuid );
パラメータ
- pGuid
- デフォルトのトランジションの GUID を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
デフォルトのトランジションを取得する。このメソッドは GetDefaultTransition と同じ機能だが、GUID ではなく BSTR 値を受け取る。
構文
HRESULT GetDefaultTransitionB( BSTR *pGuid );
パラメータ
- pGuid
- [out, retval] デフォルトのトランジションの GUID を表す BSTR 値を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY またはエラーの発生を示すその他の HRESULT 値を返す。
注意
このメソッドは、文字列に必要なメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。
サポートされていない。
構文
HRESULT GetDirtyRange( REFERENCE_TIME *pStart, REFERENCE_TIME *pStop );
タイムラインの時間幅を取得する。
構文
HRESULT GetDuration( REFERENCE_TIME *pDuration );
パラメータ
- pDuration
- タイムラインの時間幅 (100 ナノ秒単位) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
タイムラインの時間幅を取得する。このメソッドは GetDuration と同じ機能だが、double 型のパラメータをとる。
構文
HRESULT GetDuration2( double *pDuration );
パラメータ
- pDuration
- タイムラインの時間幅 (小数の秒数) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
指定されたグループを取得する。
構文
HRESULT GetGroup( IAMTimelineObj **ppGroup, long WhichGroup );
パラメータ
- ppGroup
- [out] グループの IAMTimelineObj インターフェイスを受け取るポインタのアドレス。
- WhichGroup
- 取得するグループのインデックス。このインデックスは、グループがタイムラインに追加された順序に基づく。 タイムラインに最初に追加されたグループのインデックスは 0 となる。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_INVALIDARG 無効な引数。 E_POINTER NULL ポインタ引数。
注意
メソッドが成功した場合、返される IAMTimelineObj インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。
タイムラインに含まれるグループの個数を取得する。
構文
HRESULT GetGroupCount( long *pCount );
パラメータ
- pCount
- タイムライン内のグループの個数を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
サポートされていない。
構文
HRESULT GetInsertMode( long *pMode );
サポートされていない。
構文
HRESULT IsDirty( BOOL *pDirty );
サポートされていない。
構文
HRESULT RemGroupFromList( IAMTimelineObj *pGroup );
デフォルトのエフェクトを設定する。レンダリング エンジンがエフェクトをレンダリングできない場合、デフォルトのエフェクトが代用される。
構文
HRESULT SetDefaultEffect( GUID *pGuid );
パラメータ
- pGuid
- デフォルト エフェクトの GUID を持つ変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
注意
デフォルト エフェクトを設定していない場合、またはデフォルトに指定したエフェクトがエラーを引き起こした場合、DES 自体のデフォルト エフェクトが使用される。
デフォルトのエフェクトを設定する。このメソッドは SetDefaultEffect と同じ機能だが、GUID へのポインタではなく BSTR 値をパラメータにとる。
構文
HRESULT SetDefaultEffectB( BSTR pGuid );
パラメータ
- pGuid
- デフォルト エフェクトの GUID を表す BSTR 値。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY またはエラーの発生を示すその他の HRESULT 値を返す。
デフォルトの出力フレーム レート (毎秒のフレーム数) を設定する。グループは、この値をデフォルトのフレーム レートとして使用する。グループのフレーム レートを設定するには、そのグループの IAMTimelineGroup::SetOutputFPS メソッドを呼び出す。
構文
HRESULT SetDefaultFPS( double FPS );
パラメータ
- FPS
- デフォルトのフレーム レート (毎秒のフレーム数)。
戻り値
S_OK を返す。
デフォルトのトランジションを設定する。レンダリング エンジンがトランジションをレンダリングできない場合、デフォルトのトランジションが代用される。
構文
HRESULT SetDefaultTransition( GUID *pGuid );
パラメータ
- pGuid
- デフォルトのトランジションの GUID を持つ変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
注意
デフォルトのトランジションを設定していない場合、またはデフォルトに指定したトランジションがエラーを引き起こした場合、DES 自体のデフォルトのトランジションが使用される。
デフォルトのトランジションを設定する。このメソッドは SetDefaultTransition と同じ機能だが、GUID へのポインタではなく BSTR 値をパラメータにとる。
構文
HRESULT SetDefaultTransitionB( BSTR pGuid );
パラメータ
- pGuid
- デフォルトのトランジションの GUID を表す BSTR 値。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY またはエラーの発生を示すその他の HRESULT 値を返す。
実装されていない。
構文
HRESULT SetInsertMode( long Mode );
実装されていない。
構文
HRESULT SetInterestRange( REFERENCE_TIME Start, REFERENCE_TIME Stop );
トランジションが有効かどうかを調べる。
構文
HRESULT TransitionsEnabled( BOOL *pfEnabled );
パラメータ
- pfEnabled
- ブール値を受け取る変数へのポインタ。TRUE の場合、トランジションは有効である。そうでない場合、トランジションは無効である。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
参照
メディア ロケータを使用して、タイムライン内のソース名を検証する。オプションで、このメソッドは見つかったファイルでソース オブジェクトを更新する。
構文
HRESULT ValidateSourceNames( long ValidateFlags, IMediaLocator *pOverride, long NotifyEventHandle );
パラメータ
- ValidateFlags
- メディア ロケータの動作を指定するフラグのビットごとの組み合わせ。SFN_VALIDATEF_REPLACE フラグと SFN_VALIDATEF_CHECK フラグは必ず存在していなければならない。そうでない場合、このメソッドは E_INVALIDARG を返す。
- pOverride
- デフォルトの代わりに使用するメディア ロケータの IMediaLocator インターフェイスへのオプションのポインタ。デフォルトのメディア ロケータを使用するには、このパラメータの値を NULL に設定する。詳細については、「注意」を参照すること。
- NotifyEventHandle
- イベントのハンドル。このメソッドは、検証が完了した後でこのイベントにシグナル送信する。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_INVALIDARG または他のエラー コードを返す。
注意
pOverride パラメータを使用すると、IMediaLocator インターフェイスの独自のカスタム実装を使用できる。たとえば、デフォルトのメディア ロケータは、見つかった (または見つからなかった) ファイルについてアプリケーションに通知を行わない。このような制限を回避するために、カスタム メディア ロケータを実装して、デフォルト バージョンのラッパーとすることができる。カスタム バージョンでは、デフォルト バージョンに FindMediaFile 呼び出しを直接渡して、その戻り値を調べる。