フレームフィルタパラメータウィザード
ここではウィザードを使って新しいパラメータをフレームフィルタクラスに追加する方法について説明します。
概 要
フレームフィルタパラメータはフレームフィルタのふるまいを制御する包括的手段となります。 フレームフィルタが作成された後、フレームフィルタモジュールウィザードプロジェクトウィザード>レームフィルタモジュールウィザードを使うことで追加することができます。フレームフィルタパラメータウィザードによってメンバ変数と2つのアクセスメソッドをフィルタクラスが追加されます。アクセスメソッドはフィルタのコンストラクタ内に登録され、フレームフィルタを使用するコードからアクセスが可能となります。
使い方

IC Frame Filter Parameterアイコンを選択しOpenボタンをクリックしてください。これで新しいメンバ変数のプロパティの入力ができるようになります。

入力フィールドの解説
- Class name
新しいメンバ変数が挿入されるクラスの名前です。コンボボックス内にはそのプロジェクトの全フレームフィルタクラスが含まれており、そこから選択できるようになっています。
- Display name
これはアプリケーションがIFrameFilter::setParameterクラスライブラリリファレンス>クラス>IFrameFilter>IFrameFilter::setParameter Method や IFrameFilter::getParameterクラスライブラリリファレンス>クラス>IFrameFilter>IFrameFilter::setParameter Methodを使用してパラメータにアクセスする際に使用するパラメータ名です。
- Variable name
フレームフィルタクラスにおけるメンバ変数の名前です。
- Type
ここではメンバ変数の型を選択します。
- Access
ここではメンバ変数のアクセス修飾子 (public, private, protected)を選択します。
- Parameter limits
新しいメンバ変数がlongやfloatなどの数値型である場合、最小と最大の値を設定することができます。セットメソッドにおいてこのリミットが適用され、設定される値がその範囲外であった場合にはeINVALID_PARAM_VALUEが返されます。
tFilterError CMyFilter::setTheVariable(long Value) { if( Value >= 0 && Value <= 255) m_TheVariable = Value; else return eINVALID_PARAM_VALUE; return eNO_ERROR; }
- Can only be set, if live video is not running
パラメータの中にははライブ表示中には設定できないものがあります。このボックスがチェックされている場合、フレームフィルタクラスにはライブ表示中かどうかをチェックする機能が挿入されます。notifyStartクラスライブラリリファレンス>クラス>FrameFilterImpl>FrameFilterImpl::notifyStart Method や notifyStopクラスライブラリリファレンス>クラス>FrameFilterImpl>FrameFilterImpl::notifyStop Method メソッドがまだ実装されていなければ、フレームフィルタウィザードによって自動的にクラスに実装されます。これらのメソッドによってフレームフィルタクラスはライブ表示中かそうでないかをチェックします。
内部のメンバ変数m_bLiveVideoRunningがクラスに挿入され、ライブ表示が開始されるとtrueに設定されます。この変数は新しいパラメータのセットメソッドでチェックされます。
ライブ表示中にsetTheVariableメソッドがコールされた場合、メンバ変数m_TheVariableは設定することはできず eINVALID_FILTER_STATEが返されます。tFilterError CMyFilter::setTheVariable(long Value) { if( m_bLiveVideoRunning == true ) return eINVALID_FILTER_STATE; else m_TheVariable = Value; return eNO_ERROR; }
ここまでの手順を全て終えましたら、Finishボタンを押してください。ウィザードによって新しいメンバ変数と関連メソッドが実装されます。プロパティダイアログがフレームフィルタクラスと関連している場合、フレームフィルタクラスウィザードでは変更されません。