FrameQueueSink.FrameQueueSink Method

構文

[C#]
public FrameQueueSink( IFrameQueueSinkListener listener );
public FrameQueueSink( IFrameQueueSinkListener listener, Guid mediaSubtype );
public FrameQueueSink( IFrameQueueSinkListener listener, FrameType frameType );
public FrameQueueSink( IFrameQueueSinkListener listener, FrameTypes frameTypeList );

public FrameQueueSink( Func<IFrameQueueBuffer, FrameQueueResult> frameQueueFunc, int initialBufferCount );
public FrameQueueSink( Func<IFrameQueueBuffer, FrameQueueResult> frameQueueFunc, Guid mediaSubType, int initialBufferCount );
public FrameQueueSink( Func<IFrameQueueBuffer, FrameQueueResult> frameQueueFunc, FrameType frameType, int initialBufferCount );
public FrameQueueSink( Func<IFrameQueueBuffer, FrameQueueResult> frameQueueFunc, FrameTypes frameTypeList, int initialBufferCount );

listener : Sinkイベントを受信するリスナー

frameQueuedFunc:
新しい画像が到着した際にコールされる関数オブジェクトで、IFrameQueueBufferクラスライブラリリファレンス>クラス>IFrameQueueBufferを受け取ります。健全なバッファカウントを保持するために、sinkに都度キューされる必要があります。
コールされるFrameQueueSinkクラスライブラリリファレンス>クラス>FrameQueueSinkの中で、IFrameQueueBufferクラスライブラリリファレンス>クラス>IFrameQueueBufferが自動的に再キューされるかどうかを示すために、FrameQueuedResult.SkipReQueueクラスライブラリリファレンス>エニュメレーション(列挙)>refenum.StandardContainerFrameQueuedResult.ReQueueクラスライブラリリファレンス>エニュメレーション(列挙)>refenum.StandardContainerを返す必要があります。

[C#]
FrameQueuedResult FuncName( IFrameQueueBuffer img )

initialBufferCount:
FrameQueueSinkクラスライブラリリファレンス>クラス>FrameQueueSinkがframeQueuedFuncパラメータで作成された場合、Sinkが接続されたあと、直接キューされなければいけないフレーム数を指定する必要があります。もし0が引き渡された場合バッファは自動的に作成されません。

mediaSubType: 便利に使用できるパラメータです。

[C#]
new FrameQueueSink( ..., new FrameTypes( new FrameType( mediaSubType ) ) ... );

frameType : 便利に使用できるパラメータです。

[C#]
new FrameQueueSink( ..., new FrameTypes( frametype ) ... );

frameTypeList:
このSinkが接続タイプとして受け入れるFrameTypes。これが空の場合、Sinkはすべての接続タイプを受け入れます。

情報

ICImagingControl3.5より実装

サンプル

以下は、入力されたフレームを取得する無名関数を使ったRGB32のみ受け入れるFrameQueueSinkクラスライブラリリファレンス>クラス>FrameQueueSinkの作り方です。

[C#]
FrameQueueSink sink = new FrameQueueSink(( img ) => { /* img内のIFrameQueueBufferに対する実行 */ return 
FrameQueuedResult.ReQueue; }, MediaSubTypes.RGB32, 5);
ICImagingControl1.Sink = sink;
ICImagingControl1.LiveStart();