Class BufferPool

BufferPoolは、プログラムで使用するための追加バッファを割り当てることを可能にします。

継承

BufferPool

実装

Namespace: ic4
Assembly: ic4dotnet.dll

構文

public class BufferPool : HandleObject, IDisposable

解説

多くのプログラムでは、いずれかのシンクタイプによって提供されるバッファのみを使用します。しかし、画像処理の出力先として使用する場合など、追加のバッファが必要になるプログラムもあります。

追加のバッファを作成するには、まずコンストラクタ BufferPool(ulong, ulong?, IBufferAllocator)を呼び出してBufferPoolを作成します。
その後、GetBuffer(ImageType, uint, int, ulong) を使用して、指定した画像タイプの新しいバッファを要求します。割り当てオプションを指定することで、画像バッファのメモリアライメント、ピッチ、総バッファサイズをカスタマイズできます。

画像バッファが不要になった場合は、Dispose() を呼び出してください。画像バッファはBufferPoolに返却されます。

BufferPoolにはキャッシュ動作を設定できます。デフォルトでは、BufferPoolは1つの画像バッファをキャッシュし、次回同じ条件の画像バッファが要求された際にそれを再利用します。

BufferPoolによって作成された画像バッファオブジェクトは、BufferPool自体が破棄された後も有効です。

コンストラクタ

BufferPool(ulong, ulong?, IBufferAllocator)

新しいBufferPoolを作成します。キャッシュ動作およびカスタムアロケータを任意で指定できます。

宣言

public BufferPool(ulong cacheFramesMax = 1, ulong? cacheBytesMax = null, IBufferAllocator customAllocator = null)

パラメータ

型 名前 説明
ulong cacheFramesMax BufferPoolのキャッシュに保持するフレームの最大数
ulong? cacheBytesMax BufferPoolキャッシュの最大サイズ(バイト単位)。サイズ制限を行わない場合は null を指定します。
IBufferAllocator customAllocator 新しいBufferPoolで使用するカスタムアロケータ。既定のアロケータを使用する場合は null を指定します。

例外

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

メソッド

GetBuffer(ImageType, uint, int, ulong)

BufferPoolからバッファを要求します。

宣言

public ImageBuffer GetBuffer(ImageType imageType, uint alignment = 0, int pitch = 0, ulong bufferSize = 0)

パラメータ

型 名前 説明
ImageType imageType 要求するバッファの画像タイプ。
uint alignment バッファメモリアドレスのアラインメントを指定します。
0 を指定すると、BufferPoolが自動的にアラインメントを選択します。
アラインメントは2の累乗である必要があります。
int pitch バッファ割り当て時に使用するピッチ(1ラインあたりのバイト数)を指定します。
0 を指定すると、BufferPoolが自動的にピッチを選択します。
1ライン分の画像データを格納するために必要なメモリ量より小さいピッチを指定すると、エラーになります。
ulong bufferSize 自動バッファサイズ計算を上書きします。
0 を指定すると、必要なバッファサイズはBufferPoolによって自動的に計算されます。
既知のフォーマットの画像を格納するために必要なメモリ量より小さいサイズを指定すると、エラーになります。

戻り値

型 説明
ImageBuffer 新しく取得されたイメージバッファ

補足

バッファは新規に割り当てられるか、BufferPoolのキャッシュから取得されます。

例外

型 発生条件
ArgumentNullException imageType が null の場合。
IC4Exception 詳細は ErrorCode および ToString() を確認してください。

実装

IDisposable