Sinkの種類と使い分け

ICImagingControl3.5より、用途に合わせて複数のSinkを使い分けることができるようになりました。

概要

以下、4つのフレームSinkが用意されています。

FrameNotificationSink

外部のアルゴリズムに画像ストリームを高速に受け渡ししたい場合に、簡単で効率的な方法です。 FrameNotificationSinkListener::frameReceivedクラスライブラリリファレンス>クラス>FrameNotificationSinkListener>FrameNotificationSinkListener::frameReceivedによって 画像ストリーム内の画像へ直接的なアクセスが可能で、必要とされるあて先にコピーすることができるようになります。

FrameNotificationSinkListener::frameReceivedクラスライブラリリファレンス>クラス>FrameNotificationSinkListener>FrameNotificationSinkListener::frameReceivedコールバックはドライバのスレッド内に直接作用 するため、入力されたフレームに対して高速なハンドリングが 可能になりますが、コールバック内で時間がかかるとフレームドロップが発生します。ドライバがバッファを持っている場合であっても、ドライバの バッファリングは制御できません。

連続したフレームをすべて取得したい場合や、過去のフレームへのアクセスが必要な場合はFrameQueueSinkクラスライブラリリファレンス>クラス>FrameQueueSinkを 使用してください。

FrameQueueSink

Sink内に一時的なバッファである2種類のキューバッファを実装しており、連続した一定期間の全フレームを取得することができます。

システムのメモリ上に一時的な複数のバッファを保持することで、各フレームへの処理が追い付かない場合もバッファ量が許す限り、入力された連続したフレームを扱うことができるようになります。

FrameSnapSink

これから取得される1フレームまたは複数フレームの画像に対して、簡単なアクセスを提供します。不定期に画像データを取得する場合に使用します。