MultiCam for Picolo

MultiCam for Picoloから
MultiCamへの移植
アプリケーションノート
Rev 2.1: April 29, 2005
Copyright Euresys s.a. 2005
Author: TSD Dept.
注意:
このアプリケーションノートで使用されている国内外で認知されてい
るすべての商標およびその他の登録名は各企業の所有になるものです。
このアプリケーションに脱落や誤記があってもEURESYSは一切責任
を負いません。
このアプリケーションノートは、無料で「現状のまま」提供するもので
す。EURESYSは、契約、不法行為、あるいはこのアプリケーションノ
ートに記載された手順の実行に起因するか、または手順の実行に関して
発生する損失、損害、費用、負担、その他の補償について、第三者によ
って申し立てられたものも含むクレームに対して一切責任を負いませ
ん。
Copyright Euresys s.a. 2004
MultiCam for PicoloからMultiCamへの移植
目次
1 このアプリケーションノートの目的........................................................................................................5
1.1 MultiCam for Picolo................................................................................................................................5
1.2 MultiCam................................................................................................................................................5
1.3 EasyMultiCam 2.....................................................................................................................................6
1.4 エラーリポートの相違点.......................................................................................................................6
2 ドライバーの初期化と終了.......................................................................................................................7
2.1 初期化....................................................................................................................................................7
2.2 終了.......................................................................................................................................................7
3 ドライバーでのパラメーターの設定と取得.............................................................................................8
3.1整数タイプのパラメーターの設定..........................................................................................................8
3.2整数タイプのパラメーターの取得..........................................................................................................8
3.3 ストリングタイプのパラメーターの設定..............................................................................................9
3.4 ストリングタイプのパラメーターの取得............................................................................................10
4 ボードの管理..........................................................................................................................................12
4.1 ボード情報...........................................................................................................................................12
4.2 MIOモジュールの存在のチェック........................................................................................................13
4.3 I/Oラインの設定...................................................................................................................................14
4.3.1入力として使用されるI/Oラインの設定.............................................................................................14
4.3.2出力として使用されるI/Oラインの設定.............................................................................................14
4.4 I/Oラインの状態の変更........................................................................................................................15
4.4.1入力I/Oラインの論理状態のリポート.................................................................................................15
4.4.2出力I/Oラインの論理状態のリポート.................................................................................................15
4.4.3出力I/Oラインの論理状態の発行........................................................................................................15
4.5 OEMキーのチェックと設定.................................................................................................................16
4.5.1 OEMキーの設定................................................................................................................................16
4.5.2 OEMキーのチェック.........................................................................................................................16
5 チャンネル管理.......................................................................................................................................18
5.1 チャンネルの作成................................................................................................................................18
5.1.1 方法1: 準拠ボードのリスト内のインデックス.................................................................................18
5.1.2 方法2: ボードタイプとシリアルナンバー........................................................................................19
5.1.3 方法3: 内部名...................................................................................................................................20
5.1.4 方法4: PCIの位置..............................................................................................................................21
5.1.5 コネクタ変換表.................................................................................................................................22
5.2 チャンネルの削除................................................................................................................................22
5.3 チャンネルパラメーター.....................................................................................................................23
5.3.1 ビデオ規格の選択.............................................................................................................................23
5.3.2 カラーフォーマットの選択...............................................................................................................23
5.3.3 プレーナフォーマットからの情報の取得.........................................................................................24
5.3.4 フィールドモードの選択..................................................................................................................25
5.3.5 ゲインとオフセットの設定...............................................................................................................25
5.3.6 取り込みフィルターの設定...............................................................................................................27
5.3.7 トリガーによる取り込み..................................................................................................................28
5.3.8 チャンネルステート.........................................................................................................................30
5.3.9 画像のスケーリング.........................................................................................................................30
Copyright Euresys s.a. 2005
ページ 3
MultiCam for PicoloからMultiCamへの移植
5.3.10 画像の切り取り............................................................................................................................ 31
5.3.11 画像の鏡像反転............................................................................................................................ 32
6 サーフェイスの管理............................................................................................................................. 33
6.1 サーフェイスの作成.......................................................................................................................... 33
6.2 クラスターへのサーフェイスの追加................................................................................................ 33
6.3 サーフェイスの削除.......................................................................................................................... 34
6.4 サーフェイスパラメーター............................................................................................................... 34
6.4.1 タイムスタンプ.............................................................................................................................. 34
7 シグナルの管理.................................................................................................................................... 36
7.1 シグナルの扱い方の相違点............................................................................................................... 36
7.2 コールバックシグナルの登録........................................................................................................... 36
7.3 コールバック情報............................................................................................................................. 38
7.4 待機シグナル.................................................................................................................................... 39
8 MultiCamのオペレーション.................................................................................................................. 40
8.1 取り込みの開始................................................................................................................................. 40
8.2 取り込みの停止................................................................................................................................. 40
8.3 取り込み数の設定............................................................................................................................. 41
8.4 取り込みレートのコントロール........................................................................................................ 41
ページ 4
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
1 このアプリケーションノートの目的
従来よりPicoloシリーズの取り込みボード(Picolo、Picolo Pro2、Picolo Pro3、
Picolo Tetra、Picolo Tetra X)に対応したドライバーはMultiCam for Picoloド
ライバーです。
また、2004年以来、Picoloシリーズのすべての取り込みボードはMultiCamド
ライバーによっても対応されるようになりました。
2005年以来、すべてのEuresysフレームグラバーと画像コンディショナーは、
代わりにEasyMultiCam2 APIを通じてコントロールできるようになりまし
た。
このドキュメントは、Picoloシリーズの取り込みボードのユーザーが
MultiCam for PicoloからMultiCamへアプリケーションを移植したい場合や
MultiCamドライバーを使用して新しいアプリケーションを開発したい場合
に役立つように作成したものです。
このドキュメントは、Picoloシリーズボードを使用する新たなユーザーへ完
全な説明を提供するものではありません。初めてPicoloシリーズを使用する
ユーザーは、MultiCamドライバーのコンセプトとMultiCamの取り込み原則
を理解するために「Euresys Hardware Documentation」を参照してください。
1.1 MultiCam for Picolo
MultiCam for Picoloは、PicoloシリーズのEuresys取り込みボードのオペレ
ーションを可能にするソフトウェアレイヤーです。MultiCam for Picoloの最
後に改良されたヴァージョンは3.8.3です。
見やすくするために、MultiCam for Picolo(MfP)ドライバーに関連するすべ
てのコードとパラメーターは緑色で書くことにします。
1.2 MultiCam
Unified MultiCamまたは単にMultiCamは、すべてのEuresysフレームグラ
バーまたは画像コンディショナーのオペレーションを可能にするソフト
ウェアレイヤーです。これは標準のC言語に準拠するアプリケーション・
プログラミング・インターフェース(API)の組です。MultiCamはハードウ
ェア機能の効率的で使いやすい抽象化レイヤーを提供しています。したが
ってMultiCamは、ボードのハイレベルのドライバーとみなすことができま
す。このドライバーは、すべてのEuresysボードに最新の対応をし、
MultiCam仕様に準拠する次世代ハードウェア製品にも使用されるもので
す。
見やすくするために、Unified MultiCam API (UM)ドライバーに関連する
すべてのコードとパラメーターは青色で書くことにします。
Copyright Euresys s.a. 2005
ページ 5
MultiCam for PicoloからMultiCamへの移植
1.3 EasyMultiCam 2
EasyMultiCam2C++クラスは、MultiCamドライバーの機能へアクセス
するための使いやすいツールです。これは、C言語MultiCam APIでの
ネイティブアクセスモードの代替インターフェースとして使用でき
るC++規格準拠のオブジェクト指向クラスの組です。
EasyMultiCam2のコンセプトとオペレーションはMultiCam仕様に準
拠します。EasyMultiCam2でのMultiCamパラメーターの使用法は
MultiCamドライバーの場合とまったく同じです。
見やすくするために、EasyMultiCam2 (EMC2)クラスに関連するすべ
てのコードはピンク色で書くことにします。
1.4 エラーリポートの相違点
MultiCam for PicoloとMultiCamドライバーのエラーリポートはエラー
コードに基づいています。EasyMultiCam2のエラーリポートは現在、
例外に基づいています。
ページ 6
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
2 ドライバーの初期化と終了
2.1 初期化
MultiCamファンクションを使用する前に、アプリケーションプロ
セスとMultiCamドライバーとの通信を確立するために、ドライバ
ーを初期化しなければなりません。
MfPでは、これは以下の呼び出しによって行われます:
ECSTATUS MultiCamSystemInitialize ();
UMでは、これは以下の呼び出しによって行われます:
MCSTATUS McOpenDriver (NULL);
EMC2では、ドライバーの初期化は自動的に行われます。ユーザ
ーは、このためのコードも書く必要はありません。
2.2 終了
アプリケーションを終了する前に、アプリケーションプロセスと
MultiCamドライバーとの通信を終了させるために、ドライバーを
終了させなければなりません。
MfPでは、これは以下の呼び出しによって行われます:
ECSTATUS MultiCamSystemTerminate ();
UMでは、これは以下の呼び出しによって行われます:
MCSTATUS McCloseDriver ();
UMでは、ドライバーの通信を終了させる前に、すべてのチャン
ネルとサーフェイスを削除しなければなりません。ドライバーが
閉じた後は、UMファンクションはどれもうまく復帰しなくなり
ます。
EMC2では、ドライバーの終了は自動的に行われます。ユーザー
は、このためのコードも書く必要はありません。
Copyright Euresys s.a. 2005
ページ 7
MultiCam for PicoloからMultiCamへの移植
3
ドライバーでのパラメーターの設定と取得
MfPには2つのタイプのパラメーターがあり、1つは整数タイプで、も
う1つはストリングタイプです。これらのパラメーターにアクセスす
るのは簡単で、1つのファンクションコールだけが必要です。
3.1 整数タイプのパラメーターの設定
MfPでは、整数MfPパラメーターの設定は、以下の呼び出しによって
行われます:
MultiCamSystemSetBoardParam( ECHANDLE hBoard,
ECPARAMID ParamID,
UINT32 Value);
hBoardはボードの識別子です。
MultiCamChannelSetParameterInt ( ECHANDLE hChannel,
ECPARAMID ParamID,
INT32 Value);
hChannelはチャンネルへのハンドルです。
UMでは、整数MultiCamパラメーターの設定は、以下のメソッドのど
れかの呼び出しによって行われます:
McSetParamInt ( MCHANDLE hInstance, MCPARAMID ParamID,
INT32 Value);
このファンクションは、MultiCamパラメーターに整数変数を割り当てま
す。パラメーターは、識別子によって示され、整数または列挙タイプが
望まれます。
McSetParamNmInt (
MCHANDLE hInstance, PCHAR ParamName,
INT32 Value);
このファンクションは、MultiCamパラメーターに整数変数を割り当
てる別の方法です。パラメーターは、ネームによって示され、整数また
は列挙タイプが望まれます。
上の両方のメソッドで、hInstanceは設定するパラメーターを所有し
ているインスタンスを指定するハンドルです。
EMC2では、オブジェクトに属する整数MultiCamパラメーターの設
定は、オブジェクトのメンバーファンクションを呼び出すことによ
って行われます:
SetParam (MCPARAMID ParamID, int Value);
3.2 整数タイプのパラメーターの取得
MfPでは、整数MfPパラメーターの取得は、以下のメソッドのどれか
の呼び出しによって行われます:
ページ 8
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
MultiCamSystemGetBoardParam (
ECHANDLE hBoard,
ECPARAMID ParamID,
PUINT32 pValue );
hBoardはボードの識別子です。
MultiCamChannelGetParameterInt ( ECHANDLE hBoard,
ECPARAMID ParamID,
PINT32 pValue);
hChannelはチャンネルへのハンドルです。
MultiCamSurfaceGetParameterInt (
ECHANDLE hSurface
ECPARAMID ParamID,
PINT32 pValue);
MultiCamSurfaceGetParameterInt64 ( ECHANDLE hSurface,
ECPARAMID ParamID,
PINT64 pValue);
hSurfaceはサーフェイスへのハンドルです。
UMでは、整数MultiCamパラメーターの取得は、以下のメソッドのど
れかの呼び出しによって行われます:
McGetParamInt ( MCHANDLE hInstance, MCPARAMID ParamID,
PINT32 pValue);
このファンクションは、MultiCamパラメーターの現在の値を整数変数
として取得します。パラメーターは、識別子によって示され、整数また
は列挙タイプが望まれます。
McGetParamNmInt ( MCHANDLE hInstance, PCHAR ParamName,
PINT32 pValue);
このファンクションは、MultiCamパラメーターの現在の値を整数変数
として取得する別の方法です。パラメーターは、ネームによって示さ
れ、整数または列挙タイプが望まれます。
上の両方のメソッドで、hInstanceは取得するパラメーターを所有して
いるインスタンスを指定するハンドルです。
EMC2では、オブジェクトに属する整数MultiCamパラメーターの取得は、
オブジェクトのメンバーファンクションを呼び出すことによって行われ
ます:
GetParam (MCPARAMID ParamID, int &Value);
3.3 ストリングタイプのパラメーターの設定
MfPでは、ストリングMfPパラメーターの設定は、以下の呼び出しに
よって行われます:
MultiCamChannelSetParameterString (ECHANDLE hChannel,
ECPARAMID ParamID,
PCCHAR String);
hChannelはチャンネルへのハンドルです。
Copyright Euresys s.a. 2005
ページ 9
MultiCam for PicoloからMultiCamへの移植
UMでは、ストリングMultiCamパラメーターの設定は、以下のメソッド
のどれかの呼び出しによって行われます:
McSetParamStr ( MCHANDLE hInstance, MCPARAMID
ParamID, PCHAR String);
このファンクションは、MultiCamパラメーターにストリング変数を割り当
てます。パラメーターは、識別子によって示され、ストリングまたは列挙
タイプが望まれます。
McSetParamNmStr ( MCHANDLE hInstance, PCHAR ParamName,
PCHAR String);
このファンクションは、MultiCamパラメーターにストリング変数を割
り当てる別の方法です。パラメーターは、ネームによって示され、ストリ
ングまたは列挙タイプが望まれます。
上の両方のメソッドで、hInstanceは設定するパラメーターを所有して
いるインスタンスを指定するハンドルです。
EMC2では、オブジェクトに属するストリングMultiCamパラメーター
の設定は、オブジェクトのメンバーファンクションを呼び出すことに
よって行われます:
SetParam (MCPARAMID Param, const char *String);
3.4 ストリングタイプのパラメーターの取得
MfPでは、ストリングMfPパラメーターの取得は、以下のメソッドの
どれかの呼び出しによって行われます:
MultiCamChannelGetParameterString ( ECHANDLE hChannel,
ECPARAMID ParamID,
PCHAR pString,
UINT32 MaxLength);
hChannelはチャンネルへのハンドルです。
UMでは、ストリングMultiCamパラメーターの取得は、以下のメソッドの
どれかの呼び出しによって行われます:
McGetParamStr ( MCHANDLE hInstance, MCPARAMID ParamID,
PCHAR pString, UINT32 MaxLength);
このファンクションは、MultiCamパラメーターの現在の値をストリング
変数として取得します。パラメーターは、識別子によって示され、ストリ
ングまたは列挙タイプが望まれます。
McGetParamNmStr (
MCHANDLE hInstance, PCHAR ParamName,
PCHAR pString, UINT32 MaxLength);
このファンクションは、MultiCamパラメーターの現在の値をストリング
変数として取得する別の方法です。パラメーターは、ネームによって示
され、ストリングまたは列挙タイプが望まれます。
上の両方のメソッドで、hInstanceは取得するパラメーターを所有してい
るインスタンスを指定するハンドルです。
ページ 10
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
EMC2では、オブジェクトに属するストリングMultiCamパラメーター
の取得は、オブジェクトのメンバーファンクションを呼び出すことに
よって行われます:
GetParam (MCPARAMID ParamID, char *String, int MaxLength);
Copyright Euresys s.a. 2005
ページ 11
MultiCam for PicoloからMultiCamへの移植
4
ボードの管理
MfPは、特定のボードパラメーターを取得または設定するために使用
できる一連のファンクションを備えています。UMの場合は、これら
のファンクションはBoardオブジェクトクラスに整理統合されていま
す。
4.1 ボード情報
ドライバーは、ドライバーによって検出された互換性のあるすべての
ボードに関連する情報を取得する方法を備えています。これは、ボー
ドに関するシステム情報(ファームウェア改正番号、シリアルナンバー
ネーム…)とこれらのボードに関して利用可能なソースについて役立
つ情報を提供します。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemGetBoardInfo ( PECBOARDINFO BoardList,
UINT32 ListCount,
PUINT32 ReturnedCount);
または
MultiCamSystemGetBoardInfoEx(
PECBOARDINFOEX BoardList,
UINT32LlistCount,
PUINT32 ReturnedCount);
BoardListは、ユーザーが格納を用意するECBOARDINFOストラクチ
ャのテーブルのアドレスです。呼び出しの後で、MultiCamはシステ
ム内で検出されたMultiCam互換ボードに関する情報でこのストラク
チャを充填します。パラメーターLIstCountは、ユーザー割り当てテ
ーブルで利用可能なECBOARDINFOの数です。パラメーター
ReturnedCountは、ドライバーによって検出された別々のボードの数
です。
UMでは、これは以下の呼び出しによって行われます:
MULTICAM_BOARDINFO BoardInfo[10];
INT32 BoardCount, i;
//ボードの数を取得
McGetParamInt (MC_CONFIGURATION, MC_BoardCount, &BoardCount);
//検出するすべてのMultiCamボードをスキャン
for (i=0; i<BoardCount; i++)
{
//ボードネームを取得(ストリングMultiCamパラメーター)
McGetParamStr (MC_BOARD+i, MC_BoardName,
BoardInfo[i].BoardName, 17);
//ボードのシリアルナンバーを取得(整数MultiCamパラメーター)
McGetParamInt (MC_BOARD+i, MC_SerialNumber,
&BoardInfo[i].SerialNumber);
//ボードタイプを取得(列挙MultiCamパラメーター)
ページ 12
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
McGetParamInt (MC_BOARD+i, MC_BoardType,
&BoardInfo[i].BoardType);
//ボードのPCI位置を取得
McGetParamInt (MC_BOARD+i, MC_PciPosition,
&BoardInfo[i].PciPosition);
//ボードのコネクタ数を取得
McGetParamInt (MC_BOARD+i, MC_ConnectorCount,
&BoardInfo[i].ConnectorCount);
}
EMC2では、これは以下の呼び出しによって行われます:
INT32 BoardCount, i;
CString Name;
//ボードの数を取得、Configはコンフィギュレーションオブジェクト
//アプリケーションでこのオブジェクトを宣言する必要はありません
Config.GetParam(MC_BoardCount, &BoardCount);
//検出するすべてのMultiCamボードをスキャン
for (i=0; i<BoardCount; i++)
{
//ボードネームを取得(ストリングMultiCamパラメーター)
Board[i].GetParam( MC_BoardName, &Name);
…
}
4.2 MIOモジュールの存在のチェック
MIOは「Module Input Output」の略称です。このI/Oモジュールは4
つの入力と4つの出力を備えています。このモジュールは、Picolo
Pro3、Picolo Tetra、 Picolo Tetra-Xボードに接続可能です。ドライ
バーには、このモジュールが存在しているかどうかチェックする方
法が備わっています。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemGetBoardParam (hBoard,
EC_PARAM_ModuleCheck + ModuleID, *result);
ModuleIDは、チェックするモジュールを表します。これは以下の値
のどれかになります:
MODULE_CHECK_MIO_0: MIO # 0の存在をチェックします。
MODULE_CHECK_MIO_1: MIO # 1の存在をチェックします。
MODULE_CHECK_MIO_2: MIO # 2の存在をチェックします。
MODULE_CHECK_MIO_3: MIO # 3の存在をチェックします。
MODULE_CHECK_MIO_4: MIO # 4の存在をチェックします。
返り値は整数です: チェックしたモジュールが存在しない場合は0
に、チェックしたモジュールが存在する場合はほかの値になります。
Copyright Euresys s.a. 2005
ページ 13
MultiCam for PicoloからMultiCamへの移植
UMでは、これは以下の呼び出しによって行われます:
McGetParamInt (MC_BOARD + BoardID, MC_OutputFunction + LineIndex,
*Result);
または
McGetParamInt (MC_BOARD + BoardID, MC_InputFunction + LineIndex,
*Result);
BoardIDはドライバーによって与えられるドライバーインデックスで、
LineIndexはモジュールの所定のIOラインに関連するネーム識別子または
インデックスナンバーです。
適用可能なI/Oラインインデックスのリストについて詳しくは「MultiCam
User's Guide ¥ Board Object User's Notes
¥ How_to_work_with_input_output_lines」を参照してください。
返り値は整数です: チェックしたモジュールが存在する場合は
MC_InputFunction_UNKNOWNまたはMC_OutputFuntion_UNKNOWN、チ
ェックしたモジュールが存在しない場合はMC_InputFunction_NONEまた
はMC_OutputFunction_NONEです。
4.3 I/Oラインの設定
ドライバーは、汎用I/Oラインの機能を設定する方法を備えています。
4.3.1 入力として使用されるI/Oラインの設定
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemlSetBoardParam (hBoard,
EC_PARAM_InputConfig + LineIndex, INPUT_CONFIG_SOFT);
LineIndexは、ボードまたはモジュールの所定のIOラインに関連する識
別子ネームまたはインデックスナンバーです。
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hBoard, MC_InputConfig + LineIndex, InputConfig);
LineIndexは、ボードまたはモジュールの所定のIOラインに関連する識別
子ネームまたはインデックスナンバーです。
InputConfigは以下の値のどれかになります: MC_InputConfig_SOFTまた
はMC_InputConfig_FREE。
4.3.2 出力として使用されるI/Oラインの設定
MfPでは、これは以下の呼び出しによって行われます:
ページ 14
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
MultiCamSystemSetBoardParam (hBoard,
EC_PARAM_OutputConfig + LineIndex, OutputConfig);
LineIndexはボードまたはモジュールの所定のIOラインに関連するネーム
識別子またはインデックスナンバーです。
OutputConfigは以下の値のどれかになります: OUTPUT_CONFIG_SOFT、
OUTPUT_CONFIG_WATCHDOG、OUTPUT_CONFIG_ALARM。
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hBoard, MC_OutputConfig + LineIndex, OutputConfig);
LineIndexは、ボードまたはモジュールの所定のIOラインに関連する識別
子ネームまたはインデックスナンバーです。
OutputConfigは以下の値のどれかになります: MC_OutputConfig_SOFT
またはMC_OutputConfig_FREE。
4.4 I/Oラインの状態の変更
ドライバーは、入力として使用されるI/Oラインの論理状態を取得する方
法と、出力として使用されるI/Oラインの論理状態を取得または設定する
方法を備えています。
4.4.1 入力I/Oラインの論理状態のリポート
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemGetBoardParam (hBoard, EC_PARAM_InputState,
*State);
UMでは、これは以下の呼び出しによって行われます:
McGetParamInt (hBoard, MC_InputState, *State);
4.4.2 出力I/Oラインの論理状態のリポート
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemGetBoardParam (hBoard, EC_PARAM_OuputState,
*State);
UMでは、これは以下の呼び出しによって行われます:
McGetParamInt (hBoard, MC_OuputState, *State);
4.4.3 出力I/Oラインの論理状態の発行
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemSetBoardParam (hBoard, EC_PARAM_OuputState,
State);
Copyright Euresys s.a. 2005
ページ 15
MultiCam for PicoloからMultiCamへの移植
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hBoard, MC_OuputState, State);
4.5 OEMキーのチェックと設定
すべてのMultiCam準拠ボードにはセキュリティ機能が組み込まれていま
す。一般的な考えは、OEMアプリケーションプログラマーがボードに秘密
の独占キーを埋め込めるようにするということです。セキュリティキーは、
ボードの不揮発性メモリに格納されて、読み返すことはできません。けれ
ども、所定のボードが現在、所定のものと等しいセキュリティキーを持っ
ているかどうか確認することは可能です。この簡単なメカニズムを使用し
て、ボードまたは1組のボードにアプリケーションをロックすることが容易
にできます。
4.5.1 OEMキーの設定
MfPでは、OEMキーは以下のように書き込みます:
MultiCamSystemSetOemKey (BoardID, key);
BoardIDはボードのドライバーインデックスでkeyは8バイトのストリング
です。
UMでは、OEMキーは以下のように書き込みます:
McSetParamStr (MC_BOARD + BoardID, MC_OemSafetyLock, key);
BoardIDはボードのドライバーインデックスでkeyは8バイトのストリング
です。
4.5.2 OEMキーのチェック
MfPでは、OEMキーは以下のようにチェックします:
MultiCamSystemCheckOemKey (BoardID, key);
BoardIDはボードのドライバーインデックスでkeyは8バイトのストリング
です。ユーザーのキーがOEMキーに一致すると、返り値はEC_OKになりま
す。
UMでは、OEMキーは以下のようにチェックします:
//変数の宣言
char Match[6];
//参照キーナンバーの入力
McSetParamStr (MC_BOARD + BoardID, MC_OemSafetyKey, key);
//一致のチェック
McGetParamStr (MC_BOARD + BoardID, MC_OemSafetyLock, &Match,
6);
if (Match=="FALSE")
{
// 拒絶のコード…
ページ 16
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
//...
}
BoardIDはボードのドライバーインデックスでkeyは8バイトの
ストリングです。
Copyright Euresys s.a. 2005
ページ 17
MultiCam for PicoloからMultiCamへの移植
5 チャンネル管理
チャンネルは、ビデオソースとPCのメモリバッファー(クラスターにグル
ープ化されたサーフェイス)とのリンクです。これは、カメラの画像取り込
みに使用されるすべてのパラメーターを保持します。
5.1 チャンネルの作成
MfPまたはUMでチャンネルを作成するにはボードとコネクタの情報が必
要です。
ボードとチャンネルの結合を指定するには、特定のボードを示すために4
種類の方法があります。
5.1.1 方法1: 準拠ボードのリスト内のインデックス
このメソッドは、ドライバーによって返されるリスト内のボード位置に基
づいてチャンネルが作成される特定のボードを指定します。リストは、ド
ライバーに準拠する各ボードに与えられたインデックスゼロから開始す
る1組の連続した整数です。インデックスの順序はシステムによって決ま
ります。けれども、所定のホストコンピュータでPCIスロットに同じよう
にボードを取り付けると、順序は一貫して同じようになります。
MfPでは、このメソッドは以下の呼び出しによって行われます:
MultiCamChannelCreate (NULL, “#XXX”, ConnectorID);
XXXはMfPによって与えられるリスト内のBoardIDナンバーです。
UMでは、このメソッドは以下の呼び出しによって行われます:
McCreate (MC_CHANNEL, &hChannel);
McSetParamInt (hChannel, MC_DriverIndex, XXX);
McSetParamInt (hChannel, MC_Connector, Connector);
XXXはUMによって与えられるリスト内のDriverIndexナンバー1 です。
EMC2では、このメソッドはチャンネルオブジェクトのコンストラクタの
呼び出しによって行われます:
Channel (Boards[XXX], Connector);
MfPのConnectorIDとUMのConnectorの互換性について詳しくはコネクタ
変換表(セクション5.1.5)を参照してください。
1
インデックスナンバーはMfPとUMで同じにならないことがあります。MfPのリストは、ドライバーがサポートし
ているPicoloシリーズの取り込みボードからだけになります。UMのリストは、ドライバーに準拠するすべての
Euresysフレームグラバーが含まれます。
ページ 18
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
5.1.1.1 例
この例は、システム内でドライバーインデックス0で検出された取
り込みボードの最初のコネクタにチャンネルを作成する方法を示
しています。
MfPの場合:
ECHANDLE hChannel = MultiCamChannelCreate (NULL, “#0”,
PICOLO_VID1);
UMの場合:
MCHANDLE hChannel;
McCreate (MC_CHANNEL, &hChannel);
McSetParamStr (hChannel, MC_DriverIndex, 0);
McSetParamInt (hChannel, MC_Connector,
MC_Connector_VID1);
EMC2の場合:
Channel *channel = new Channel (Boards[0],
MC_Connector_VID1);
5.1.2 方法2: ボードタイプとシリアルナンバー
このメソッドは、ボードのタイプとシリアルナンバー使用して、
チャンネルが作成される特定のボードを指定します。識別子は、
ボードタイプとシリアルナンバーを下線で結んだASCII文字列
です。シリアルナンバーは0から9までの数字で作成された6桁の
ストリングです。
MfPでは、このメソッドは以下の呼び出しによって行われます:
MultiCamChannelCreate (NULL, “@XXX”, ConnectorID);
UMでは、このメソッドは以下の呼び出しによって行われます:
McCreate (MC_CHANNEL, &hChannel);
McSetParamStr (hChannel, MC_BoardIdentifier, “XXX”);
McSetParamInt (hChannel, MC_Connector, Connector);
EMC2では、このメソッドはチャンネルオブジェクトのコンスト
ラクタの呼び出しによって行われます:
Channel (Boards.GetBoardByBoardIdentifier(“XXX”),
Connector);
MfPのConnectorIDとUMのConnectorの互換性について詳しく
はコネクタ変換表(セクション5.1.5)を参照してください。
Copyright Euresys s.a. 2005
ページ 19
MultiCam for PicoloからMultiCamへの移植
5.1.2.1 例
この例は、シリアルナンバー007293のPicolo Pro2取り込みボードの2
番目のコネクタにチャンネルを作成する方法を示しています。
MfPの場合:
ECHANDLE hChannel = MultiCamChannelCreate (NULL,
“#PICOLO_PRO2_007293”, PICOLO_VID2);
UMの場合:
MCHANDLE hChannel;
McCreate (MC_CHANNEL, &hChannel);
McSetParamStr (hChannel, MC_BoardIdentifier,
“PICOLO_PRO2_007293”);
McSetParamInt (hChannel, MC_Connector, MC_Connector_VID2);
EMC2の場合:
Board *b1 = Boards.GetBoardByBoardIdentifier(“PICOLO_007293”);
Channel *channel = new Channel (b1, MC_Connector_VID2);
5.1.3 方法3: 内部名
このメソッドは、ボードに与えられた内部名に基づいて、チャンネルが
作成される特定のボードを指定します。名前は最大16文字のASCII文字
です。必要な場合はユーザーが変更でき、システムの各ボードについて
独自のものを作成することができます。名前はボード内の不揮発性メモ
リに書き込まれます。
MfPでは、このメソッドは以下の呼び出しによって行われます:
MultiCamChannelCreate (NULL, “&XXX”, ConnectorID);
UMでは、このメソッドは以下の呼び出しによって行われます:
McCreate (MC_CHANNEL, &hChannel);
McSetParamStr (hChannel, MC_BoardName, “XXX”);
McSetParamInt (hChannel, MC_Connector, Connector);
EMC2では、このメソッドはチャンネルオブジェクトのコンストラクタの呼
び出しによって行われます:
Channel (Boards.GetBoardByBoardName(“XXX”), Connector);
MfPのConnectorIDとUMのConnectorの互換性について詳しくはコネク
タ変換表(セクション5.1.5)を参照してください。
ページ 20
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
5.1.3.1 例
この例は、MyPicoloProという名前の取り込みボードの最初のコネクタ
にチャンネルを作成する方法を示しています。
MfPの場合:
ECHANDLE hChannel = MultiCamChannelCreate (NULL,
“&MyPicoloPro”, PICOLO_VID1);
UMの場合:
MCHANDLE hChannel;
McCreate (MC_CHANNEL, &hChannel);
McSetParamStr (hChannel, MC_BoardName, “MyPicoloPro”);
McSetParamInt (hChannel, MC_Connector, MC_Connector_VID1);
EMC2の場合:
Board *b1 = Boards.GetBoardByBoardName(“MyPicoloPro”);
Channel *channel = new Channel (b1, MC_Connector_VID1);
5.1.4 方法4: PCIの位置
このメソッドは、PCIスロットに関連付けられる数に基づいてチャン
ネルが作成される特定のボードを指定します。この数は、オペレーテ
ィングシステムによって予測がつかないように割り当てられますが、
所定のシステムにおける所定のコンフィギュレーションでは一定のま
まになります。
MfPでは、このメソッドは以下の呼び出しによって行われます:
MultiCamChannelCreate (NULL, “%XXX”, ConnectorID);
UMでは、このメソッドは以下の呼び出しによって行われます:
McCreate (MC_CHANNEL, &hChannel);
McSetParamInt (hChannel, MC_PciPosition, XXX);
McSetParamInt (hChannel, MC_Connector, Connector);
EMC2では、このメソッドはチャンネルオブジェクトのコンストラク
タの呼び出しによって行われます:
Channel (Boards.GetBoardByPciPosition(XXX), Connector);
MfPのConnectorIDとUMのConnectorの互換性について詳しくは
コネクタ変換表(セクション5.1.5)を参照してください。
Copyright Euresys s.a. 2005
ページ 21
MultiCam for PicoloからMultiCamへの移植
5.1.4.1 例
この例は、システム内のPCI位置0x10038にある取り込みボードの最初のコ
ネクタにチャンネルを作成する方法を示しています。
MfPの場合:
ECHANDLE hChannel = MultiCamChannelCreate (NULL,
“%0x10038”, PICOLO_VID1);
UMの場合:
MCHANDLE hChannel;
McCreate (MC_CHANNEL, &hChannel);
McSetParamStr (hChannel, MC_PciPosition, 0x10038”);
McSetParamInt (hChannel, MC_Connector, MC_Connector_VID1);
EMC2の場合:
Board *b1 = Boards.GetBoardByPciPosition(0x10038);
Channel *channel = new Channel (b1, MC_Connector_VID1);
5.1.5 コネクタ変換表
ボード
ConnectorID
(MfP)
Connector (UM)
備考
Picolo
PICOLO_VID(X)
MC_Connector_VID(X)
Picolo
PICOLO_YC
MC_Connector_YC
Picolo Pro2,
Junior
PICOLO_VID(X)
MC_Connector_VID(X)
(X) = 1から4
Picolo Pro3,
Tetra, Tetra-X
PICOLO_VID(X)
MC_Connector_VID(X)
(X) = 1から16
(X) = 1から3
5.2 チャンネルの削除
MfPでは、これは以下の呼び出しによって行われます:
MultiCamChannelDelete (hChannel);
hChannelはMfPチャンネルへのハンドルです。
UMでは、これは以下の呼び出しによって行われます:
McDelete (hChannel);
hChannelはMultiCamチャンネルへのハンドルです。
ページ 22
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
EMC2では、チャンネルの削除はデストラクタファンクションでチャン
ネルオブジェクトを削除することによって行われます。
delete channel;
channelはMultiCamチャンネルクラスのインスタンスです。
5.3 チャンネルパラメーター
ドライバーには、チャンネルの機能とコントロールに関連する一連のパ
ラメーターが備わっています。
以下のセクションでは、MultiCamパラメーターの適用はUMの場合も
EMC2の場合もまったく同じです。
5.3.1 ビデオ規格の選択
チャンネルの作成後に、ユーザーはビデオシグナル規格のタイプを指定
しなければなりません。
MfPでは、ビデオシグナル規格のタイプはStandardパラメーターによって
指定されます。
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_Standard,
Standard);
hChannelはMfPチャンネルへのハンドルです。
UMでは、ビデオシグナル規格のタイプはCameraパラメーターによって
指定されます。
McSetParamInt(hChannel, MC_Camera, Camera);
hChannelはMultiCamチャンネルへのハンドルです。
規格変換表:
Standard (MfP)
Camera (UM)
EC_STANDARD_CCIR
MC_Camera_CAMERA_CCIR
EC_STANDARD_EIA
MC_Camera_CAMERA_EIA
EC_STANDARD_PAL
MC_Camera_CAMERA_PAL
EC_STANDARD_NTSC
MC_Camera_CAMERA_NTSC
EC_STANDARD_SECAM
未対応
5.3.2 カラーフォーマットの選択
チャンネルを作成した後に、ユーザーはチャンネルの各取り込みデータのカラー
フォーマットを指定することができます。
Copyright Euresys s.a. 2005
ページ 23
MultiCam for PicoloからMultiCamへの移植
MfPでは、取り込みデータのカラーフォーマットはAcqColFmtパラメーター
によって指定されます。
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_AcqColFmt,
AcqColFmt);
hChannelはMfPチャンネルへのハンドルです。
UMでは、取り込みデータのカラーフォーマットはColorFormatによって指
定されます。
McSetParamInt (hChannel, MC_ColorFormat, ColorFormat);
hChannelはMultiCamチャンネルへのハンドルです。
カラーフォーマット変換表:
AcqColFmt (MfP)
ColorFormat (UM)
MC_COLORFORMAT_Y8
MC_ColorFormat_Y8
MC_COLORFORMAT_RGB32
MC_ColorFormat_ARGB32
MC_COLORFORMAT_RGB24
MC_ColorFormat_RGB24
MC_COLORFORMAT_RGB16
MC_ColorFormat_RGB16
MC_COLORFORMAT_RGB15
MC_ColorFormat_RGB15
MC_COLORFORMAT_YUV422
MC_ColorFormat_YUV422
MC_COLORFORMAT_YUV411
MC_ColorFormat_YUV411
MC_COLORFORMAT_PLANAR_YUV422 MC_ColorFormat_YUV422PL
MC_COLORFORMAT_PLANAR_YUV411 MC_ColorFormat_YUV411PL
MC_COLORFORMAT_PLANAR_YUV420 MC_ColorFormat_I420
MC_COLORFORMAT_PLANAR_YUV410 まだ未対応
MC_COLORFORMAT_PLANAR_YVU420 まだ未対応
MC_COLORFORMAT_PLANAR_YVU410 まだ未対応
5.3.3 プレーナフォーマットからの情報の取得
プレーナフォーマットでは、MfPに格納される各画像データは、同じメモリ
バッファー内の3つのプレーンを含む1つのMultiCamサーフェイスにまとめ
られます。UMでは、各画像データは3つのプレーンを含む1つのMultiCamサ
ーフェイスにまとめられ、各プレーンは別々の画像バッファーに格納されま
す。
UMでは、1つのサーフェイス内のプレーンの数は以下のようにして取得
されます:
McGetParamInt (hChannel, MC_PlaneCount, *Planes);
結果はプレーナフォーマットの場合に3プレーンで、さもなければ1です。
各プレーンの個々のアドレスは以下のようにして取得されます:
McGetParamInt (hChannel, MC_SurfaceAddr, *ImageBuffer0);
McGetParamInt (hChannel, MC_SurfaceAddr+1, *ImageBuffer1);
McGetParamInt (hChannel, MC_SurfaceAddr+2, *ImageBuffer2);
ページ 24
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
5.3.4 フィールドモードの選択
Picoloシリーズの取り込みボードは、1つのフィールドを取り込むか両方
のフィールドを取り込むかを選択することができます。また、両方のフィ
ールドの場合は取り込む順序も選択できます。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_InitGrabSync, GrabSync);
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_RepeatGrabSync, GrabSync);
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_FieldMode
FieldMode);
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt(hChannel, MC_GrabField, GrabField);
McSetParamInt(hChannel, MC_NextGrabField, GrabField);
フィールドモード変換表:
MfP
Field Mode
GrabSync
1
GRABSYNC_NEXT
1
GRABSYNC_NEXT_UP
1
GRABSYNC_NEXT_DOWN
2
GRABSYNC_NEXT
2
GRABSYNC_NEXT_UP
2
GRABSYNC_NEXT_DOWN
MU
Grabfield
MC_GrabField_FLD
MC_GrabField_UP
MC_GrabField_DOWN
MC_GrabField_FRAME
MC_GrabField_UPDW
MC_GrabField_DWUP
5.3.5 ゲインとオフセットの設定
Picoloシリーズの取り込みボードは、コントラストの調整をするゲインと
輝度の調整をするオフセットを適用することができます。
MfPでは、ゲイン調整は以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_VideoGain,
Value);
Valueは32ビット固定小数点値(16:16)です。ビット[31-16]は有符号整数
部分で、 ビット[15-0]は無符号端数部分です。
UMでは、ゲイン調整は以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_GainCtl, MC_GainCtl_LIN);
McSetParamInt (hChannel, MC_Gain, Value);
Valueは1/1000で表されて、GainCtlがLINに設定されると適用されます。
Copyright Euresys s.a. 2005
ページ 25
MultiCam for PicoloからMultiCamへの移植
MfPでは、オフセット調整は以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_VideoOffset,
Value);
Valueは32ビット固定小数点値(16:16)です。ビット[31-16]は有符号整数部
分で、 ビット[15-0]は無符号端数部分です。
UMでは、オフセット調整は以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_Offset, Value);
Valueは1/1000で表されます。
MfPでは、クロミナンスUゲインは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_VideoUGain,
Value );
Valueは32ビット固定小数点値(16:16)です。ビット[31-16]は有符号整数部
分で、 ビット[15-0]は無符号端数部分です。
UMでは、クロミナンスUゲインは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ColorGainTrimU, Value);
Valueは1/1000で表されます。
MfPでは、クロミナンスVゲインは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_VideoVGain,
Value);
Valueは32ビット固定小数点値(16:16)です。ビット[31-16]は有符号整数部
分で、 ビット[15-0]は無符号端数部分です。
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ColorGainTrimV, Value);
Valueは1/1000で表されます。
MfPでは、NTSC色相調整は以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_VideoNtscHue,
Value);
Valueは32ビット固定小数点値(16:16)です。ビット[31-16]は有符号整数部分
で、 ビット[15-0]は無符号端数部分です。
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ColorGainTrimHue, Value);
Valueは度で表されます。
UMには、ほかにもゲインおよびオフセットコントロールパラメーターがあ
ります;
MC_GainTrim1; MC_OffsetTrim1; MC_ColorGain;
ページ 26
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
5.3.6 取り込みフィルターの設定
Picoloシリーズの取り込みボードは、高品質の画像データを提供するため
にフィルターパラメーターを適用することができます。
MfPでは、カラーサブキャリア除去フィルターの選択は以下の呼び出しに
よって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_ColorTrap,
ColorTrap);
ColorTrapは以下の値のどれかをとることができます:
EC_COLORTRAP_NONE, EC_COLORTRAP_PAL,
EC_COLORTRAP_NTSC。
UMでは、カラーサブキャリア除去フィルターの選択は以下の呼び出しに
よって行われます:
McSetParamInt (hChannel, MC_ ColorTrap, ColorTrap);
ColorTrapは以下の値のどれかをとることができます:
MC_ColorTrap_ENABLE, MC_ColorTrap_DISABLE。
MfPでは、コアリングオプションの選択は以下の呼び出しによって行わ
れます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_Coring,
Coring);
Coringは以下の値のどれかをとることができます:
EC_CORING_NONE, EC_CORING_8, EC_CORING_16,
EC_CORING_32。
UMでは、コアリングオプションの選択は以下の呼び出しによって行わ
れます:
McSetParamInt (hChannel, MC_ DataCoring, DataCoring);
DataCoringは以下の値のどれかをとることができます:
MC_DataCoring_NONE, MC_DataCoring_CORING8,
MC_DataCoring_CORING16, MC_DataCoring_CORING32。
MfPでは、低カラー画像からのクロミナンス除去の選択は以下の呼び出しに
よって行われます:
MultiCamChannelSetParameterInt(hChannel, EC_PARAM_CKILL, Value);
Valueは以下のどれかに設定できます: 0, 1。
UMでは、低カラー画像からのクロミナンス除去の選択は以下の呼び出
しによって行われます:
McSetParamInt (hChannel, MC_ ColorKiller, ColorKiller);
ColorKillerは以下の値のどれかをとることができます:
MC_ColorKiller_ENABLE, MC_ColorKiller_DISABLE。
MfPでは、ガンマ除去の選択は以下の呼び出しによって行われます:
Copyright Euresys s.a. 2005
ページ 27
MultiCam for PicoloからMultiCamへの移植
MultiCamChannelSetParameterInt(hChannel,
EC_PARAM_Gamma, Value);
Valueは以下のどれかに設定できます: 0, 1。
UMでは、ガンマ除去の選択は以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ GammaRemoval,
GammaRemoval);
GammaRemovalは以下の値のどれかをとることができます:
MC_GammaRemoval_ENABLE, MC_GammaRemoval_DISABLE。
5.3.7 トリガーによる取り込み
Picoloシリーズの取り込みボードは、外部イベント(トリガー)によって開始
される取り込みに対応しています。
MfPでは、システムトリガーの動作はTriggerModeパラメーターによって指定
されます。チャンネルのトリガーラインは、文字列パラメーター
DigitalIoConfigパラメーターで選択されます。トリガーラインの属性は
InitTriggerおよびRepeatTriggerパラメーターによって指定されます。
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_TriggerMode, TRIGGERMODE_SYSTEM);
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_InitTrigger,
InitTrigger);
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_RepeatTrigger, RepeatTrigger);
MultiCamChannelSetParameterString (hChannel,
EC_PARAM_DigitalIoConfig, TriggerPattern);
TriggerPatternは、デジタルI/Oラインの設定に使用される文字列パラメー
ターです。
ページ 28
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
MfPのInitTriggerとRepeatTriggerパラメーターの可能な組み合わせは以下
の表のようになります。
RepeatTrigger
InitTrigger
TRIGGER_
PAUSE
TRIGGER_
EXT_HIGH
TRIGGER_
EXT_LOW
TRIGGER_
EXT_GOIN
G_HI
TRIGGER_
EXT_GOIN
G_LOW
TRIGGER_
EXT_GOIN
G_ANY
TRIGG TRIG
TRIGG TRIGG
ER_P GER_
ER_EX ER_EX
AUSE EXT_HI T_LOW T_GOI
GH
NG_HI
TRIGGE
R__EXT
_GOIN
G_LOW
TRIGGE
R_EXT_
GOING
_ ANY
V
V
V
V
V
V
V
V
V
V
V
UMでは、システムトリガーの動作はTrigModeおよびNextTrigModeパラメ
ーターによって指定されます。チャンネルのトリガーラインは
TrigLineIndexパラメーターによって指定されます。トリガーラインの属性
はTrigEdgeパラメーターによって指定されます。
McSetParamInt(hChannel, MC_TrigMode, TrigMode);
McSetParamInt(hChannel, MC_NextTrigMode, NextTrigMode);
McSetParamInt (hChannel, MC_TrigLineIndex, TrigLineIndex);
McSetParamInt (hChannel, MC_TrigEdge, TrigEdge);
TrigModeパラメーターは以下の値のどれかをとることができます:
MC_TrigMode_COMBINED, MC_TrigMode_HARD,
MC_TrigMode_SOFT, MC_TrigMode_IMMEDIATE。
NextTrigModeパラメーターは以下の値のどれかをとることができま
す:
MC_NextTrigMode_REPEAT, MC_NextTrigMode_PERIODIC,
MC_NextTrigMode_SAME。
TrigLineIndexは、チャンネルによって感応されてトリガーイベントを
発生させることを目的とするハードウェアラインです。適用可能なI/O
ラインインデックスのリストについて詳しくは「MultiCam User's
Guide ¥ Board Object User's
Notes¥ How_to_work_with_input_output_lines」を参照してください。
TrigEdgeパラメーターは以下の値のどれかをとることができます:
MC_TrigEdge_GOLOW, MC_TrigEdge_GOHIGH。
Copyright Euresys s.a. 2005
ページ 29
MultiCam for PicoloからMultiCamへの移植
5.3.8 チャンネルステート
チャンネルステートパラメーターはチャンネルの動作をコントロールしま
す。ステート値を変更すると、チャンネルの動作は開始するか、または停
止します。
MfPの場合:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ChannelState, ChannelState);
ChannelStateは以下の値のどれかをとることができます:
CHANNEL_STATE_ACTIVE, CHANNEL_STATE_IDLE。
UMの場合:
McSetParamInt(hChannel, MC_ChannelState, ChannelState);
ChannelStateは以下の値のどれかをとることができます:
MC_ChannelState_ACTIVE, MC_ChannelState_IDLE。
UMには、チャンネル用のMfPによってサポートされない追加ステートも
あるので注意してください。
5.3.9 画像のスケーリング
Picoloシリーズの取り込みボードは、ビデオストリームの取り込み中に画
像の倍率を変更することができます。これによって、縮小されたビデオ画
像を得ることができます。
MfPでは、水平倍率は以下の呼び出しによって適用されます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ImageScaleX, ScaleX);
MfPでは、垂直倍率は以下の呼び出しによって適用されます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ImageScaleY, ScaleY);
ScaleXおよびScaleYは32ビット固定小数点値(16:16)です。ビット[31-16]
は有符号整数部分で、 ビット[15-0]は無符号端数部分です。
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_Scaling, MC_Scalling_ENABLE);
McSetParamInt (hChannel, MC_ImageSizeX, SizeX);
McSetParamInt (hChannel, MC_ImageSizeY, SizeY);
SizeXおよびSizeYは、取り込まれた画像の行と列の数で表されます。
ページ 30
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
Scale (X¥Y)とSize(X/Y)の変換式は以下のようになります。
Size(X/Y) =
Acquire(X/ Y) *65536
Scale(X/Y)
CCIR / PALの場合はAcquireX = 768およびAcquireY = 576で、EIA /
NTSCの場合はAcquireX = 640およびAcquireY = 480です。
注意:MfPで使用できるPicTmgXXX幾何学的パラメーターはUMでは
サポートされていません。
5.3.10 画像の切り取り
Picoloシリーズの取り込みボードは、ビデオストリームの取り込み中
に画像の切り取りを行うことができます。これによってCamera Active
Window内の取り込みウィンドウを調整するいくつかの優れた方法が
提供されています。
MfPでは、水平オフセット係数は以下の呼び出しによって適用されます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ImageOffsetX, OffsetX);
MfPでは、垂直オフセット係数は以下の呼び出しによって適用されます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ImageOffsetY, OffsetY);
MfPでは、水平サイズは以下の呼び出しによって適用されます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ImageSizeX, SizeX);
MfPでは、垂直サイズは以下の呼び出しによって適用されます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ImageSizeY, SizeY);
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_GrabWindow,
MC_GrabWindow_MAN);
// 画像の水平オフセットの適用
McSetParamInt (hChannel, MC_OffsetX_Px, OffsetX);
// 画像の垂直オフセットの適用
McSetParamInt (hChannel, MC_OffsetY_Ln, OffsetY);
// 画像の水平サイズの適用
McSetParamInt (hChannel, MC_WindowX_Px, SizeX);
// 画像の垂直サイズの適用
McSetParamInt (hChannel, MC_WindowY_Ln, SizeY);
SizeXおよびSizeYは、取り込まれた画像の行と列の数で表されます。
Copyright Euresys s.a. 2005
ページ 31
MultiCam for PicoloからMultiCamへの移植
5.3.11 画像の鏡像反転
Picoloシリーズの取り込みボードは垂直鏡像変換が可能です。画像をY方
向に鏡像反転することができます。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel, EC_PARAM_ImageFlipY,
Flip);
Flipは以下の値のどれかをとることができます: 0は反転なし; 1は反転。
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ImageFlipY, Flip);
Flipは以下の値のどれかをとることができます:
MC_ImageFlipY_OFFは反転なし; MC_ImageFlipY_ONは反転。
ページ 32
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
6 サーフェイスの管理
サーフェイスは、2D画像を格納できる容器のようなものです。取り
込みプロセスでは、サーフェイスはカメラから取り込まれた画像を保
持するホストコンピュータメモリ内の目的バッファーです。クラスタ
ーは、互換性があるが場所が異なっている1組のサーフェイスです。
1つのクラスターに属するすべてのサーフェイスは、所定のチャンネ
ルを介して同じソースから送られる画像を受け入れなければなりま
せん。
6.1 サーフェイスの作成
MfPの場合
MultiCamSurfaceCreate (&SurfaceInfo);
SurfaceInfoは、作成されるサーフェイスに関する情報を保持します。
MultiCam4.5以来、UMは、アプリケーションが行わない場合は、自動的
にサーフェイスを作成して自動的にメモリバッファーを割り当てます。1
つのチャンネルで作成されるサーフェイスの数が指定されない場合は、
UMは各チャンネルあたり3つのサーフェイスを自動的に作成します。
SurfaceCountは、1つのチャンネル内のサーフェイスの数を示す新規
パラメーターです。ユーザーはチャンネルが起動する前に
SurfaceCountを別の値に変更することができます。
McSetParamInt (hChannel, MC_SurfaceCount, Count);
Countは、このチャンネルに割り当てられるサーフェイスの数です。チャ
ンネルに割り当てられるサーフェイスの最大数は4096で、アプリケーシ
ョンの中でインスタンス化されるサーフェイスの最大数は4096です。
EMC2では、サーフェイスの割り当てはMultiCamドライバーによって自
動的に行われます。
6.2 クラスターへのサーフェイスの追加
MfPの場合
MultiCamChannelAddSurface (hChannel, hSurface0);
hSurface0は、チャンネルに属するクラスターに追加されるサーフェイ
スです。
UMの場合、MultiCam 4.5以降はこのプロセスはもう不要ですが、クラ
スターに手動でサーフェイスを追加することは可能です。
EMC2の場合、MultiCam 4.5以降はこのプロセスはもう不要ですが、ク
ラスターに手動でサーフェイスを追加することは可能です。
Copyright Euresys s.a. 2005
ページ 33
MultiCam for PicoloからMultiCamへの移植
6.3 サーフェイスの削除
MfPの場合
MultiCamSurfaceDelete(hSurface0);
hSurface0は削除されるサーフェイスです。
UMの場合、このプロセスは ドライバーの通信を終える前にドライバ
ーによって自動的に行われます。これはMultiCam 4.5以降に適用されま
す。
EMC2の場合、このプロセスは ドライバーの通信を終える前にドライ
バーによって自動的に行われます。これはMultiCam 4.5以降に適用され
ます。
6.4 サーフェイスパラメーター
MfPドライバーには、サーフェイスに関連するタイムスタンプパラメ
ーターがあります。以下のセクションでは、MultiCamパラメーターの
適用はUMの場合もEMC2の場合もまったく同じです。
6.4.1 タイムスタンプ
タイムスタンプは、サーフェイスに取り込みがなされる瞬間です。こ
れは、システムクロックに従って世界標準時(UTC)の1970年1月1日の
真夜中(00:00:00)からの経過時間で表されます。
MfPでは、秒で表したタイムスタンプは以下のようにして取得します:
MultiCamSurfaceGetParameterInt (hSurface,
EC_PARAM_TimeStamp_s, *TimeStamp);
結果は32ビット有符合整数値です。
MfPでは、ミリセカンドで表したタイムスタンプは以下のようにして取
得します:
MultiCamSurfaceGetParameterInt (hSurface,
EC_PARAM_TimeStamp_ms, *TimeStamp);
結果は64ビット有符号整数値です。
UMでは、秒で表したタイムスタンプは以下のようにして取得します:
McGetParamInt (hSurface, MC_TimeAnsi, *TimeStamp);
結果は32ビット有符合整数値です。
UMでは、ミリセカンドで表したタイムスタンプは以下のようにして取得
します:
McGetParamInt (hSurface, MC_TimeStamp_us+MC_LOW_PART,
ページ 34
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
*LowTimeStamp);
McGetParamInt (hSurface,
MC_TimeStamp_us+MC_HIGH_PART,
*HighTimeStamp);
結果は2つの32ビット整数のコレクションです: 1つは低位の部
分(MC_LOW_PART)で、もう1つは高位の部分
(MC_HIGH_PART)です。
Copyright Euresys s.a. 2005
ページ 35
MultiCam for PicoloからMultiCamへの移植
7 シグナルの管理
MultiCamシグナルは、チャンネルから発行される特定のイベントを表して
アプリケーションと相互作用を行うことができるものです。MultiCamは、
アプリケーションのオペレーションをシステムと同期させる2つのメカニ
ズムを備えています。
メカニズム
Callback
Waiting
説明
事前定義のシグナルが発生すると、ユーザーの書いたファ
ンクションが自動的に呼び出されるメカニズムです。
スレッドが事前定義のシグナルの発生を待機できるよう
にするメカニズムです。
7.1 シグナルの扱い方の相違点
シグナルを扱う方法についてMfPとUMの主な違いは、MfPではすべてのチ
ャンネルが同じメッセージハンドラを共有しますが、UMでは各チャンネル
にそれに関連するすべてのメッセージを扱うそれ自体のハンドラがあると
いう点です。
MfPでは、同じシステム内のすべてのチャンネルを扱うために所定のタイ
プの各シグナルについて1つのメッセージハンドラがあります。
UMでは、各チャンネルにこのチャンネルのすべてのメッセージを扱うそれ
自体のメッセージハンドラがあります。
EMC2では、各チャンネルにこのチャンネルのすべてのメッセージを扱う
それ自体のメッセージハンドラがあります。
7.2 コールバックシグナルの登録
コールバックシグナルを使用する前に、まずそれを登録しなければなり
ません。
MfPでは、コールバック用のシグナルは以下のようにして登録されます:
MultiCamSignalRegister (eventID, CallBackFunction, context);
eventIDは以下の値のどれかをとることができます:
EC_SIGNAL_SURFACE_STATE, EC_SIGNAL_SURFACE_AVAILABLE
EC_SIGNAL_ASM_ERROR, EC_SIGNAL_IO_ACTIVITY
コールバックシグナルの登録を解除するにはMultiCamSignalUnregister
ファンクションを使用します。初期設定ではすべてのシグナルが有効で
す。各コールバックシグナルの有効/無効のステートを変更するには
MultiCamSignalMaskファンクションを使用します。
UMでは、コールバック用のシグナルは以下のようにして登録されます:
McRegisterCallback (hChannel, CallBackFunction, Context);
McSetParamInt (hChannel, MC_SignalEnable + SignalID,
MC_SignalEnable_ON);
ページ 36
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
コールバックシグナルの登録を解除する方法はありません。
初期設定ではすべてのシグナルが無効です。各コールバックシグナルの
有効/無効のステートを変更するにはMC_SignalEnable_ONまたは
MC_SignalEnable_OFFを設定します。
EMC2ではMultiCamコールバックの使用が容易です。各チャンネルは、
特定のコールバックファンクションに所定のMultiCamシグナルを登録
することによってそれ自体のコールバックを管理します。
シグナルは以下のようにしてコールバックに登録されます:
RegisterCallback (*obj, (T::*f) (Channel &chan, SignalInfo &info),
MCSIGNAL SignalID);
objはクラスTのオブジェクトで、fはコールバックシグナルを利用するク
ラスTのメンバーファンクションです。
//例
class MySource
{
void OnSurfaceFilled(Channel &c, SignalInfo &i);
};
…
MySource Source;
channel->RegisterCallback(&Source, MySource::OnSurfaceFilled,
MC_SIG_SURFACE_FILLED);
channel->SetParam(MC_SignalEnable+MC_SIG_SURFACE_FILLED,
MC_SignalEnable_ON);
コールバックシグナルの登録を解除する方法はありません。
初期設定ではすべてのシグナルが無効です。各コールバックシグナルの
有効/無効のステートを変更するにはMC_SignalEnable_ONまたは
MC_SignalEnable_OFFを使用します。
シグナル変換表:
MfP
EC_SIGNAL_SURFACE_STATE
EC_SIGNAL_SURFACE_
AVAILABLE
EC_SIGNAL_ASM_ERROR
EC_SIGNAL_IO_ACTIVITY
Copyright Euresys s.a. 2005
MU
MC_SIG_SURFACE_FILLED
シグナル情報
このシグナルは、目的クラ
スターのサーフェイスが
FILLED状態に入ると発行
されます。
このシグナルは、目的クラ
MC_SIG_SURFACE_PROCESSING スターのサーフェイスが
PROCESSING状態に入る
と発行されます。
このシグナルは、チャンネル
MC_SIG_ACQUISITION_FAILURE がビデオシグナルを受け取
らない場合に発行されます。
このシグナルは、I/Oライン
の何らかのコンフィギュ
レーションが動作すると
(利用不可)
MultiCamデバイスドライ
バーによって送られます。
ページ 37
MultiCam for PicoloからMultiCamへの移植
7.3 コールバック情報
コールバックファンクションは、事前に定義されたイベントが起こった場
合に1組のドライバーパラメーターを受け取ります。
MfPでは、パラメーターは以下のメンバーを含むECEVENTINFOと呼ばれ
るストラクチャにまとめられています。:
EventIDは、コールバックを開始するイベントを特定します。
ChannelIDは、イベントが起こったチャンネルを特定します。
SurfaceIDは、イベントが起こったサーフェイスを特定します。
Flagsは、イベントがどの条件で起こったかを特定します。
Timecodeは、イベントに関連付けられたサーフェイスの配置ナンバーを
特定します。
またMfPは、コールバックが登録されたときにユーザーに提供されるコン
テキストも提供します。
UMでは、パラメーターは以下のメンバーを含むMCCALLBACKINFOと呼ば
れるストラクチャにまとめられています:
ContextはMfPのContextと同等です。
InstanceはMfPのChannelIDと同等です。
SignalはMfPのEventIDと同等です。
SignalInfoはMfPのSurfaceIDと同等です。
TimecodeはSurfaceパラメーターです; これは以下の呼び出しによって取
得できます:
McGetParamInt (hSurface, MC_TimeCode, *SurfaceCode);
注意 FlagsパラメーターはUMでは使用できません。
EMC2では、各チャンネルは特定のコールバックファンクションに所定の
MultiCamシグナルを登録することによってそれ自体のコールバックを管理
します。したがって、コールバックを開始させるイベントとコールバックが
起こるチャンネルに関する情報はすぐに把握されます。
//例
class MySource
{
//コールバックファンクション
void OnSurfaceFilled(Channel &c, SignalInfo &i);
};
コールバックファンクションは、関連するチャンネルへのポインターと以下
のメンバーを含むSignalInfoクラスのインスタンスを明示的に受け取ります:
Signalはコールバックを開始させるイベントを特定します。
Surfはイベントが起こったサーフェイスを特定します。
TimeCodeはサーフェイスオブジェクトのメンバーファンクションを呼び出
すことによって取得できます:
ページ 38
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
GetParam (MC_TimeCode, *SurfaceCode);
7.4 待機シグナル
ドライバーは、アプリケーションがスレッドでMultiCamシグナルの発
生を待機できる方法を備えています。以下のどれかが起こるまで呼び出
しスレッドは妨げられます: シグナルが発生するか、またはタイムアウ
ト期間が経過する。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSignalWait (SignalID);
UMでは、これは以下の呼び出しによって行われます::
McWaitSignal (hChannel, SignalID, TimeOut, SignalInformation);
ただ1つのシグナルしか待機できません。SignalIDはMC_SignalEnable
パラメーターによって有効にされなければなりません。
EMC2では、これはチャンネルに属するメンバーファンクションを呼
び出すことによって行われます:
WaitSignal (SignalID, Timeout, SignalInfomation);
Copyright Euresys s.a. 2005
ページ 39
MultiCam for PicoloからMultiCamへの移植
8 MultiCamのオペレーション
8.1 取り込みの開始
取り込みシーケンスは、取り込みフラグが開始してチャンネルが有効にな
ると、どちらが最後に起こっても開始します。「チャンネル有効」および
「取り込み開始」が達成されるかぎり、取り込みシーケンスは動作中のま
まです。
取り込みフラグの開始は全チャンネルのオペレーションです。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemAcquisitionStart();
UMではこのステップは不要です。これはドライバーによって自動的
に行われます。
チャンネルの起動はチャンネルに値ACTIVEステートを割り当てることで
す。これは特定のチャンネルのオペレーションです。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ChannelState, CHANNEL_STATE_ACTIVE);
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ChannelState,
MC_ChannelState_ACTIVE);
8.2 取り込みの停止
アプリケーションは、取り込みフラグを停止させることによって、すべて
のチャンネルの取り込みシーケンスを同時に停止させることができます。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamSystemAcquisitionStop();
UMではこのステップは不要です。これはドライバーによって自動的
に行われます。
また、チャンネルをIDLEに設定することによって、チャンネルごとに取り
込みシーケンスを停止させることもできます。
MfPでは、これは以下の呼び出しによって行われます:
ページ 40
Copyright Euresys s.a. 2005
MultiCam for PicoloからMultiCamへの移植
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_ChannelState, CHANNEL_STATE_IDLE);
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ChannelState,
MC_ChannelState_IDLE);
8.3 取り込み数の設定
ドライバーは、1シーケンスを構成する取り込み数を指定する方法
を備えています。取り込みカウントを-1に設定すると、取り込みは
無限に反復されます。シーケンスを終了させるにはユーザーによる
中断が必要です。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_RepeatGrabCount, GrabCount);
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_ SeqLength_Fr, Count);
8.4 取り込みレートのコントロール
ドライバーは、取り込みレートつまり周波数をコントロールする方
法を備えています。
MfPでは、これは以下の呼び出しによって行われます:
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_InitGrabDelay, InitDelay);
MultiCamChannelSetParameterInt (hChannel,
EC_PARAM_RepeatGrabDelay, Delay);
UMでは、これは以下の呼び出しによって行われます:
McSetParamInt (hChannel, MC_NextTrigMode,
MC_NextTrigMode_PERIODIC);
McSetParamInt (hChannel, MC_TargetFrameRate_Hz,
FrameRate);
FrameRateはトリガーの反復レートを指定します。
Copyright Euresys s.a. 2005
ページ 41
Copyright Euresys s.a. 2005
Last edition 25-05-05