Class SnapSink

SnapSink は、プログラムが単一画像や連続画像を必要に応じて取得できるシンク実装です。取得中もすべての画像を表示するディスプレイは維持されます。

継承

SnapSink

実装

Namespace: ic4
Assembly: ic4dotnet.dll

構文

public class SnapSink : Sink, IDisposable

備考

SnapSink を作成するには、SnapSink(IEnumerable<PixelFormat>, SnapSinkAllocationStrategy, IBufferAllocator) を使用します。

作成したシンクは StreamSetup(Sink, IDisplay, StreamSetupOption) または StreamSetup(Sink, StreamSetupOption) に渡して、画像をシンクに供給します。

ストリームから単一画像を取得するには SnapSingle(TimeSpan) を、連続画像を取得するには SnapSequence(int, TimeSpan) を呼び出します。

SnapSink は、バックグラウンドでの画像取得用バッファと取得した画像用バッファの両方を管理します。ストリーム設定時に、設定された割り当て戦略に応じて一定数のバッファが割り当てられます。割り当て戦略が許す場合、追加のバッファは必要に応じて自動的に作成されます。同様に、未使用バッファが余っている場合は、自動的に回収され解放されます。

Snap 関数によって返された画像バッファは、各呼び出し元が ImageBuffer への参照を通じて所有します。バッファをシンクに返却して再利用可能にするには、画像バッファ上で Dispose() を呼び出します。

デバイスがフレームを送信しようとした際にシンク内に利用可能なバッファがない場合、フレームは破棄されることに注意してください。バッファ不足が発生したかどうかは StreamStatistics を使用して確認できます。

デフォルトでは、シンクはデバイスドライバまたは暗黙的に作成された変換フィルタによって提供されたバッファを使用します。プログラム定義のバッファを使用したい場合は、シンクコンストラクタに IBufferAllocator を渡すことで可能です。

コンストラクタ

SnapSink(IEnumerable<PixelFormat>, SnapSinkAllocationStrategy, IBufferAllocator)

新しい SnapSink を作成します。

宣言

public SnapSink(IEnumerable<PixelFormat> acceptedPixelFormats = null, SnapSinkAllocationStrategy strategy = null, IBufferAllocator customAllocator = null)

パラメータ

名前 説明
IEnumerable<PixelFormat> acceptedPixelFormats 入力をこのシンクに制限するオプションのピクセルフォーマットのリスト。デバイスのピクセルフォーマットからシンクで使用可能なピクセルフォーマットへの自動変換を強制するために使用できます。
SnapSinkAllocationStrategy strategy シンク用のオプションのバッファ割り当て戦略。null の場合はデフォルトの割り当て戦略が使用されます。
IBufferAllocator customAllocator オプションのカスタムバッファ割り当て器

例外

条件
ArgumentException バッファ割り当て戦略が無効な場合
IC4Exception 詳細については ErrorCode および ToString() を確認してください。

SnapSink(PixelFormat, SnapSinkAllocationStrategy, IBufferAllocator)

新しい SnapSink を作成します。

宣言

public SnapSink(PixelFormat acceptedPixelFormat, SnapSinkAllocationStrategy strategy = null, IBufferAllocator customAllocator = null)

パラメータ

名前 説明
PixelFormat acceptedPixelFormat このシンクへの入力を制限するピクセルフォーマットです。
デバイスのピクセルフォーマットからシンクで使用可能なピクセルフォーマットへの自動変換を強制するために使用できます。
SnapSinkAllocationStrategy strategy シンク用の任意のバッファ割り当て戦略です。
これが null の場合、デフォルトの割り当て戦略が使用されます。
IBufferAllocator customAllocator 任意のカスタムバッファアロケータです。

例外

条件
ArgumentException バッファ割り当て戦略が無効です。
IC4Exception 詳細については ErrorCode および ToString() を確認してください。

プロパティ

OutputImageType

シンクが受信するように設定された画像の種類

宣言

public ImageType OutputImageType { get; }

プロパティ値

説明
ImageType シンクが受信するように設定された画像の種類

例外

条件
IC4Exception 詳細については ErrorCode および ToString() を確認してください。

Type

シンクの型です。
スナップシンクの場合、常に SnapSink です。

宣言

public override SinkType Type { get; }

プロパティ値

説明
SinkType シンクの型です。
オーバーライド

メソッド

SnapSequence(int, TimeSpan)

ビデオキャプチャデバイスから受信したビデオストリームから、連続した画像を取得します。

宣言

public IReadOnlyList<ImageBuffer> SnapSequence(int count, TimeSpan timeout)

パラメータ

名前 説明
int count 取得する画像の枚数
TimeSpan timeout すべての画像が到着するまでの待機時間

戻り値

説明
IReadOnlyList<ImageBuffer> 取得した画像のリストです。
タイムアウトが発生した場合、返されるリストにはその時点までに取得された画像が含まれます。
備考

この操作は、シンクがデバイスのデータストリームに接続されている間のみ有効です。

呼び出しが成功した後は、プログラムは ImageBuffer 参照を通じて画像バッファを所有します。画像バッファオブジェクトは破棄して、後で再利用できるようにシンクの空きキューに戻す必要があります。

画像バッファオブジェクトが破棄されない場合、そのファイナライザも画像バッファをシンクに返します。ただし、決定論的な動作のためには、常に手動で画像バッファを破棄することを推奨します。

例外

条件
TimeoutException タイムアウトが経過する前に画像が受信されませんでした。
IC4Exception 詳細については ErrorCode および ToString() を確認してください。

SnapSingle(TimeSpan)

ビデオキャプチャデバイスから受信したビデオストリームから、単一の画像を取得します。

宣言

public ImageBuffer SnapSingle(TimeSpan timeout)

パラメータ

名前 説明
TimeSpan timeout 新しい画像が到着するまでの待機時間

戻り値

説明
ImageBuffer 取得された画像バッファ
備考

この操作は、シンクがデバイスのデータストリームに接続されている間のみ有効です。

呼び出しが成功した後は、プログラムは ImageBuffer 参照を通じて画像バッファを所有します。画像バッファオブジェクトは破棄して、後で再利用できるようにシンクの空きキューに戻す必要があります。

画像バッファオブジェクトが破棄されない場合、そのファイナライザも画像バッファをシンクに返します。ただし、決定論的な動作のためには、常に手動で画像バッファを破棄することを推奨します。

例外

条件
TimeoutException タイムアウトが経過する前に画像が受信されませんでした。
IC4Exception 詳細については ErrorCode および ToString() を確認してください。

TrySnapSingle(out ImageBuffer, TimeSpan)

ビデオキャプチャデバイスから受信したビデオストリームから単一の画像を取得しようとします。
SnapSingle(TimeSpan) と異なり、この関数はエラーが発生しても例外を投げません。

宣言

public bool TrySnapSingle(out ImageBuffer buffer, TimeSpan timeout)

パラメータ

名前 説明
ImageBuffer buffer 取得した画像バッファを受け取る出力パラメータ
TimeSpan timeout 新しい画像が到着するまでの待機時間

戻り値

説明
bool true:バッファの取得に成功した場合、false:それ以外の場合。
備考

この操作は、シンクがデバイスのデータストリームに接続されている間のみ有効です。

呼び出しが成功した後は、プログラムは ImageBuffer 参照を通じて画像バッファを所有します。画像バッファオブジェクトは破棄して、後で再利用できるようにシンクの空きキューに戻す必要があります。

画像バッファオブジェクトが破棄されない場合、そのファイナライザも画像バッファをシンクに返します。ただし、決定論的な動作のためには、常に手動で画像バッファを破棄することを推奨します。

実装

IDisposable