Microsoft DirectX 8.0 |
Microsoft® DirectShow® 編集サービス (DES) のエフェクトまたはトランジションのプロパティを設定する。
このインターフェイスを使用するには、プロパティ セッター オブジェクト (CLSID_PropertySetter) のインスタンスを作成し、IAMTimelineObj::SetPropertySetter メソッドを呼び出すことにより、そのインスタンスにエフェクトまたはトランジションを関連付ける。詳細については、「エフェクトとトランジションの操作」を参照すること。
通常、アプリケーションでは ClearProps メソッドを呼び出して既存のプロパティをクリアし、AddProp メソッドを呼び出して新しいプロパティを追加するだけでよい。このインターフェイスの他のメソッドは、他の DES コンポーネントによって呼び出される。
要件
Qedit.h が必要である。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IPropertySetter メソッド 説明 LoadXML 拡張可能マークアップ言語 (XML) で表現されたプロパティ データをロードする。 PrintXML プロパティ データを XML 文字列に変換する。 CloneProps このプロパティ セッターからプロパティのセットの複製を作成し、新しいプロパティ セッターに追加する。 AddProp プロパティが適用される時間の範囲を定義するタイム値ペアの配列と共に、プロパティをプロパティ セッターに追加する。 GetProps このオブジェクトのプロパティ セットを、対応する値と共に取得する。 FreeProps GetProps メソッドによって割り当てられたリソースを解放する。 ClearProps プロパティ セッターから、すべてのプロパティ データをクリアする。 SaveToBlob プロパティ データを永続性フォーマットに保存する。 LoadFromBlob 永続性フォーマットからプロパティ データをロードする。 SetProps ターゲット オブジェクトのプロパティを、指定された時間の適切な状態に設定する。
プロパティが適用される時間の範囲を定義するタイム値ペアの配列と共に、プロパティをプロパティ セッターに追加する。
構文
HRESULT AddProp( DEXTER_PARAM Param, DEXTER_VALUE *paValue );
パラメータ
- Param
- [in] プロパティを指定する DEXTER_PARAM 構造体。この構造体の nValues メンバは、paValue パラメータで渡される配列のサイズと等しくなければならない。
- paValue
- [in] タイム値ペアを保持する DEXTER_VALUE 構造体の配列へのポインタ。この配列内の時間は、昇順で並んでいなければならない。この時間は、エフェクトまたはトランジションの開始タイム相対である。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_INVALIDARG 無効な引数。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
最初の DEXTER_VALUE 構造体は、ゼロの基準タイムおよび DEXTERF_JUMP の補間フラグ (dwInterp) を指定しなければならない。そうでない場合、メソッドはエラーを返す。
プロパティ セッターから、すべてのプロパティ データをクリアする。アプリケーションでは、この関数の呼び出し後に、新しいプロパティ データを設定できる。
構文
HRESULT ClearProps( void );
戻り値
S_OK を返す。
このプロパティ セッターからプロパティのセットの複製を作成し、新しいプロパティ セッターに追加する。
構文
HRESULT CloneProps( IPropertySetter **ppSetter, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop );
パラメータ
- ppSetter
- [out] 新しいプロパティ セッターの IPropertySetter インターフェイスを受け取るポインタのアドレス。
- rtStart
- 複製する値の範囲の開始タイム (100 ナノ秒単位)。
- rtStop
- [in] 予約済み。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。可能なエラー コードは次のとおりである。
E_INVALIDARG 無効な引数。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
指定された開始タイムより後の値だけが複製される。複製された値の時間は、開始タイム相対に調整される。たとえば、rtStart が 20000000 (2 秒) の場合、タイム 30000000 (3 秒) の値は、複製されるとタイム 10000000 (1 秒) となる。最後に、複製された各プロパティには、開始タイムの元のプロパティの値に等しい初期値が与えられる (必要であれば適切な補間が行われる)。実質的に、プロパティ データは指定された開始タイムで分割される。
メソッドが成功した場合、返される IPropertySetter インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。
GetProps メソッドによって割り当てられたリソースを解放する。GetProps を呼び出した後でこのメソッドを呼び出し、GetProps によって返された構造体を渡す。
構文
HRESULT FreeProps( LONG cParams, DEXTER_PARAM *paParam, DEXTER_VALUE *paValue );
パラメータ
- cParams
- [in] paParam パラメータで与えられる配列のサイズを指定する値。
- paParam
- [in] DEXTER_PARAM 構造体の配列へのポインタ。
- paValue
- [in] DEXTER_VALUE 構造体の配列へのポインタ。
戻り値
S_OK を返す。
このオブジェクトのプロパティ セットを、対応する値と共に取得する。
構文
HRESULT GetProps( LONG *pcParams, DEXTER_PARAM **paParam, DEXTER_VALUE **paValue );
パラメータ
- pcParams
- [out] paParam に返される構造体の個数を受け取る変数へのポインタ。
- paParam
- [in] DEXTER_PARAM 構造体の配列へのポインタのアドレス。
- paValue
- [in] DEXTER_VALUE 構造体の配列へのポインタのアドレス。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
paParam に返される各プロパティごとに、nValues メンバはそのプロパティに関連付けられている DEXTER_VALUE 構造体の個数を示す。これらのペアは、各プロパティごとに時間の昇順で返される。
たとえば、次のサンプル コードは、すべての値を繰り返し処理する方法を示している。
DEXTER_PARAM *pParam; DEXTER_VALUE *pValue; LONG count; hr = pSetter->GetProps(&count, &pParam, &pValue); LONG num = 0; for (LONG i = 0; i < count; i++) { for (LONG j = 0; j < pParam[i].nValues; j++) { // pValue[num] は、pParam[i] のシーケンス内の次の値である。 } num += pParam[i].nValues; }返された構造体の使用が終わったら、FreeProps を呼び出して、このメソッドによって割り当てられていたリソースを解放する。
永続性フォーマットからプロパティ データをロードする。
構文
HRESULT LoadFromBlob( LONG cSize, BYTE *pb );
パラメータ
- cSize
- [in] データのサイズ (バイト単位)。
- pb
- [in] データを保持するバイトの配列へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY または他のエラー コードを返す。
拡張可能マークアップ言語 (XML) で表現されたプロパティ データをロードする。
構文
HRESULT LoadXML( IUnknown *pxml );
パラメータ
- pxml
- [in] Microsoft XML パーサによって作成された XML 要素の IUnknown インターフェイスへのポインタ。
戻り値
HRESULT 値を返す。 可能な値は次のとおりである。
S_FALSE プロパティ データなし。 S_OK 成功。 E_OUTOFMEMORY メモリ不足。 VFW_E_INVALID_FILE_FORMAT 無効なフォーマット。
注意
通常、アプリケーションはこのメソッドを使用しない。DES では、このメソッドを内部的に使って XTL ファイルからプロパティをロードする。
このメソッドを使用するには、IXMLDocument オブジェクトを作成し、このオブジェクトを使って XML ファイルを解析する。次に、IXMLDocument オブジェクトを使って IXMLElement オブジェクトを取得する。このオブジェクトにプロパティがある場合は、IXMLElement ポインタを LoadXML メソッドに渡すことができる。このメソッドは、プロパティ セッターにプロパティをロードする。
プロパティ データを拡張可能マークアップ言語 (XML) 文字列に変換する。
構文
HRESULT PrintXML( char *pszXML, int cbXML, int *pcbPrinted, int indent );
パラメータ
- pszXML
- [out] XML 文字列を受け取るバッファへのポインタ。
- cbXML
- [in] pszXML が指すバッファのサイズ (バイト単位)。
- pcbPrinted
- [out] XML 文字列の長さを受け取る変数へのポインタ。NULL の場合がある。
- indent
- [in] 最も外側のタグのインデント レベル数。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。XML 文字列がバッファより長かった場合、このメソッドは E_OUTOFMEMORY を返す。
プロパティ データを永続性フォーマットに保存する。
構文
HRESULT SaveToBlob( LONG *pcSize, BYTE **ppb );
パラメータ
- pcSize
- [out] データのサイズ (バイト単位) を受け取る変数へのポインタ。
- ppb
- [in] データを受け取るバイトの配列へのポインタのアドレス。
戻り値
HRESULT 値を返す。可能な値は次のとおりである。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
このメソッドは、バイト配列に必要なメモリを割り当てる。呼び出し元は CoTaskMemFree 関数を使って、メモリを解放しなければならない。
ターゲット オブジェクトのプロパティを、指定された時間の適切な状態に設定する。
構文
HRESULT SetProps( IUnknown *pTarget, REFERENCE_TIME rtNow );
パラメータ
- pTarget
- [in] プロパティを設定するターゲット オブジェクトへのポインタ。
- rtNow
- [in] プロパティを設定するタイム (100 ナノ秒単位)。スタティック プロパティ (時間の経過によって変化しないプロパティ) を設定する場合は -1。
戻り値
HRESULT 値を返す。
注意
このメソッドは、DES によって呼び出され、トランジションまたはエフェクトのプロパティを設定する。通常、アプリケーションではこのメソッドを呼び出さない。
pTarget で指定されるオブジェクトは、IDispatch インターフェイスを実装していなければならない。