Comments
Description
Transcript
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