Class 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() を確認してください。 |
メソッド
SnapSequence(int, TimeSpan)
ビデオキャプチャデバイスから受信したビデオストリームから、連続した画像を取得します。
宣言
public IReadOnlyList<ImageBuffer> SnapSequence(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 参照を通じて画像バッファを所有します。画像バッファオブジェクトは破棄して、後で再利用できるようにシンクの空きキューに戻す必要があります。
画像バッファオブジェクトが破棄されない場合、そのファイナライザも画像バッファをシンクに返します。ただし、決定論的な動作のためには、常に手動で画像バッファを破棄することを推奨します。


