GrabberListener::frameReady Method

デバイスがメモリバッファに新しいフレームをコピーした際にコールされます。

構文

virtual void frameReady( Grabber& caller, smart_ptr<MemBuffer> pBuffer, DWORD FrameNumber );
パラメータ 説明
caller このメソッドをコールしたGrabberオブジェクトです。
pBuffer 新しいフレームを含むMemBufferクラスライブラリリファレンス>クラス>MemBufferへのポインタです。
framenumber このメソッドがコールされる回数です。このフレームナンバーはフレームがバッファにコピーされるたびに増加します。Grabber::startLiveクラスライブラリリファレンス>クラス>Grabber>Grabber::startLive Methodへのコールによってこの数は0に戻されます。

備考

Grabber::startLiveクラスライブラリリファレンス>クラス>Grabber>Grabber::startLive Methodへのコール後、 バッファにコピーされた最初のフレームナンバーは0となります。フレームカウントはフレームがコピーされるたびに増加していくため、コピーされたフレーム数がMemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollection内のバッファ数を超える場合、フレームカウントとバッファのインデックスは同じ数字にはなりません。

このコールバックメソッドが呼び出されるのは、GrabberListenerオブジェクトを登録している場合に限られます。GrabberListenerの登録はパラメータeDEVICELOSTもしくはeALLと共にGrabber::addListenerクラスライブラリリファレンス>クラス>Grabber>Grabber::addListener Methodをコールして行います。

frameReadyイベント内で発生する例外はシステム内で失われるため、例外を起こすバグを認識することができません。
これを避けるためにはイベントハンドラ内の全コードをtry ... catchブロック内に入れる必要があります。
エラーメッセージを表示させるのにはメッセージボックスを使うのではなく、"debug trace" を使用してください。
(例: TRACE(...) )
これはアプリケーションがデッドロックに陥り停止するのを防ぐうえでとても重要なことです。