FrameNotificationSink

デバイスドライバの取得した画像データに直接アクセスを行うsinkタイプです。SDKへのバッファを行わないため、シンプルで高速なアクセスが行えます。
外部のライブライへ画像を引き渡す場合に便利に使用できます。

class listener : public FrameNotificationSinkListener
{
public:
    virtual void sinkConnected( const FrameTypeInfo& frameType ) override {}
    virtual void sinkDisconnected() override
    virtual void frameReceived( IFrame& frame ) override
    {
        // 画像フレームへの操作
    }
};
listener listener_instance;
tFrameNotificationSinkPtr pSink = FrameNotificationSink::create( listener_instance );
grabbber.setSinkType( pSink );

Sink作成関数createクラスライブラリリファレンス>クラス>FrameNotificationSink>FrameNotificationSink::Create Methodには、FrameNotificationSinkListenerクラスライブラリリファレンス>クラス>FrameNotificationSinkListenerから派生したクラスのインスタンスが渡され ます。デバイスから取得した画像フレームが有効になると、frameReceivedクラスライブラリリファレンス>クラス>FrameNotificationSinkListener>FrameNotificationSinkListener::frameReceivedがコールされます。
このSinkではドライバへの直接アクセスを提供しているため、バッファがありません。frameReceivedクラスライブラリリファレンス>クラス>FrameNotificationSinkListener>FrameNotificationSinkListener::frameReceived関数内の処理が素早く完了 する必要があります。システムの負荷が高い場合やコールバック関数内の処理がフレーム間隔時間に対して長くかかる場合にはフレームドロップが発生します。

インフォメーション

ヘッダファイル: tisudshl.h
ネームスペース: DShowLib

ICImagingControl3.5より実装