Grabber::setCallback Method [非推奨]

コールバック関数を設定します。

構文

bool setCallback( const tsFrameEndCallback& callback = tsFrameEndCallback() );
パラメータ 説明
callback コールバック関数を表す構造体。

戻り値

コールバックが正常にインストールされた場合はtrue、エラーが発生した場合はfalse

備考

frame endにてコールされる関数です。1つのコールバック関数しか設定できないので、setCallbackへの次のコールは前の関数をオーバーライドすることになります。そのコールバック関数は新しいスレッドとして開始されます。しかし一度に1つのスレッドしか開始できません。
MemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollectionが格納できる数を超えるイメージを取り込んだ場合、コールバック関数が実行されるまでかなりの時間を要することになり、その関数の処理が完了しない間にバッファには新しいイメージが入ってきてしまうことになります。

コールバック関数の実行がデバイスのフレーム1枚を取り込む時間よりもかかってしまう場合、他の関数が実行中でない最初のframe endイベントでコールされます。この場合、いくつかのフレームを見失ってしまいますがそれらはMemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollection内に格納されることになります。
Grabber::snapImagesクラスライブラリリファレンス>クラス>Grabber>Grabber::snapImages Method と(デバイスが適当なFrameGrabberSinkクラスライブラリリファレンス>クラス>FrameGrabberSinkによって連続取り込みモードに設定されている場合) Grabber::stopLiveクラスライブラリリファレンス>クラス>Grabber>Grabber::stopLive Method は最後のコールバック関数が戻り値を返すまでブロックします。
コールバック関数はデバイスがオープンかつ有効、そしてライブモードでない時のみ設定が可能です。これらデバイスの状態については Grabber::isDevOpenクラスライブラリリファレンス>クラス>Grabber>Grabber::isDevOpen Method, Grabber::isDevValidクラスライブラリリファレンス>クラス>Grabber>Grabber::isDevValid Method, Grabber::isLiveクラスライブラリリファレンス>クラス>Grabber>Grabber::isLive Methodを参照ください。

コールバック関数は以下の通り定義される必要があります。
void callBackFunc( void *data, tMemBufferPtr buffer, unsigned long ctr );

各パラメータの詳細は以下の通りです。

パラメータ 説明
data ユーザーデータへのポインタです。setCallbackと共に与えるものです。
buffer 取り込んだイメージを格納するバッファへのポインタです。
ctr フレームが取り込まれた時点での内部フレームカウンタの値です (参照:Grabber::getFrameCount )

コールバック関数をセットするには、関数へのポインタとユーザーデータへのポインタをtsFrameEndCallbackクラスライブラリリファレンス>構造体>tsFrameEndCallback Structure 型の構造体に入れる必要があります。

インフォメーション

このメソッドはIC Imaging Control 3.0より非推奨となりました。
代わりに GrabberListenerクラスライブラリリファレンス>クラス>GrabberListener を使用してください。