Class 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 | 新しく取得されたイメージバッファ |
例外
| 型 | 発生条件 |
|---|---|
| ArgumentNullException | imageType が null の場合。 |
| IC4Exception | 詳細は ErrorCode および ToString() を確認してください。 |


