Image Buffers

データ構造

画像データはImageBufferオブジェクト(IC4_IMAGE_BUFFER)でやり取りされます。 詳細...

struct   IC4_ALLOCATOR_CALLBACKS

ImageBuffer用のカスタムアロケータを設定するための関数ポインタを格納します。 詳細...

struct  IC4_BUFFER_POOL_CONFIG

IC4_BUFFER_POOLの動作を設定します。 詳細...

struct  IC4_BUFFERPOOL_ALLOCATION_OPTIONS

BufferPoolからImageBufferを要求する際のメモリ確保を設定するためのオプションを格納します。 詳細...

struct  IC4_FRAME_METADATA

フレームメタデータを格納する構造体です。 詳細...

struct  IC4_IMAGE_TYPE

ピクセルフォーマットと画像サイズを含む画像タイプを表します。 詳細...

struct  IC4_BUFFER_POOL

BufferPoolはプログラムで使用する追加のImageBufferをメモリ確保できるようにします。 詳細...

struct  IC4_IMAGE_BUFFER

ImageBufferを表します。 詳細...

型定義

typedef void(* ic4_imagebuffer_memory_release) (void *ptr, size_t buffer_size, void *user_ptr)

ic4_imagebuffer_wrap_memoryで作成されたImageBufferが破棄され、それを通じて画像データにアクセスできなくなったときに呼び出されるコールバック関数を定義します。

列挙型

enum   IC4_IMAGEBUFFER_COPY_FLAGS { IC4_IMAGEBUFFER_COPY_SKIP_IMAGE = 1 , IC4_IMAGEBUFFER_COPY_SKIP_CHUNKDATA = 2 }

ic4_imagebuffer_copy()の動作を設定するためのオプションを格納します。 詳細...

enum   IC4_PIXEL_FORMAT {
  IC4_PIXEL_FORMAT_Unspecified = 0 , IC4_PIXEL_FORMAT_Mono8 = 0x01080001 , IC4_PIXEL_FORMAT_Mono10p = 0x010A0046 , IC4_PIXEL_FORMAT_Mono12p = 0x010C0047 ,
  IC4_PIXEL_FORMAT_Mono16 = 0x01100007 , IC4_PIXEL_FORMAT_BayerBG8 = 0x0108000B , IC4_PIXEL_FORMAT_BayerBG10p = 0x010A0052 , IC4_PIXEL_FORMAT_BayerBG12p = 0x010C0053 ,
  IC4_PIXEL_FORMAT_BayerBG16 = 0x01100031 , IC4_PIXEL_FORMAT_BayerGB8 = 0x0108000A , IC4_PIXEL_FORMAT_BayerGB10p = 0x010A0054 , IC4_PIXEL_FORMAT_BayerGB12p = 0x010C0055 ,
  IC4_PIXEL_FORMAT_BayerGB16 = 0x01100030 , IC4_PIXEL_FORMAT_BayerGR8 = 0x01080008 , IC4_PIXEL_FORMAT_BayerGR10p = 0x010A0056 , IC4_PIXEL_FORMAT_BayerGR12p = 0x010C0057 ,
  IC4_PIXEL_FORMAT_BayerGR16 = 0x0110002E , IC4_PIXEL_FORMAT_BayerRG8 = 0x01080009 , IC4_PIXEL_FORMAT_BayerRG10p = 0x010A0058 , IC4_PIXEL_FORMAT_BayerRG12p = 0x010C0059 ,
  IC4_PIXEL_FORMAT_BayerRG16 = 0x0110002F , IC4_PIXEL_FORMAT_BGRa8 = 0x02200017 , IC4_PIXEL_FORMAT_BGRa16 = 0x02400051 , IC4_PIXEL_FORMAT_BGR8 = 0x02180015 ,
  IC4_PIXEL_FORMAT_Mono12Packed = 0x010C0006 , IC4_PIXEL_FORMAT_BayerBG12Packed = 0x010C002D , IC4_PIXEL_FORMAT_BayerGB12Packed = 0x010C002C , IC4_PIXEL_FORMAT_BayerGR12Packed = 0x010C002A ,
  IC4_PIXEL_FORMAT_BayerRG12Packed = 0x010C002B , IC4_PIXEL_FORMAT_YUV422_8 = 0x02100032 , IC4_PIXEL_FORMAT_YCbCr422_8 = 0x0210003B , IC4_PIXEL_FORMAT_YCbCr411_8_CbYYCrYY = 0x020C003C ,
  IC4_PIXEL_FORMAT_YCbCr411_8 = 0x020C005A , IC4_PIXEL_FORMAT_AnyBayer8 = (int)0x8108FF01 , IC4_PIXEL_FORMAT_AnyBayer10p = (int)0x810AFF01 , IC4_PIXEL_FORMAT_AnyBayer12p = (int)0x810CFF01 ,
  IC4_PIXEL_FORMAT_AnyBayer16 = (int)0x8110FF01 , IC4_PIXEL_FORMAT_Invalid = -1
}

ピクセルフォーマットは画像内のピクセルの表現方法を定義します。 詳細...

関数

bool  ic4_bufferpool_create (struct IC4_BUFFER_POOL **ppPool, const struct IC4_BUFFER_POOL_CONFIG *config)

新しいBufferPoolを作成します。

struct IC4_BUFFER_POOL * ic4_bufferpool_ref (struct IC4_BUFFER_POOL *pPool)

BufferPoolの内部参照カウントを1つ増やします。

void ic4_bufferpool_unref (struct IC4_BUFFER_POOL *pPool)

BufferPoolの内部参照カウントを1つ減らします。

bool ic4_bufferpool_get_buffer (struct IC4_BUFFER_POOL *pPool, const struct IC4_IMAGE_TYPE *image_type, const struct IC4_BUFFERPOOL_ALLOCATION_OPTIONS *options, struct IC4_IMAGE_BUFFER **ppImageBuffer)

BufferPoolからバッファを取得します。

struct IC4_IMAGE_BUFFER * ic4_imagebuffer_ref (struct IC4_IMAGE_BUFFER *pImageBuffer)

ImageBufferの内部参照カウントを1つ増やします。

void ic4_imagebuffer_unref (struct IC4_IMAGE_BUFFER *pImageBuffer)

ImageBufferの内部参照カウントを1つ減らします。

void * ic4_imagebuffer_get_ptr (const struct IC4_IMAGE_BUFFER *pImageBuffer)

ImageBufferが管理するデータへのポインタを返します。

ptrdiff_t ic4_imagebuffer_get_pitch (const struct IC4_IMAGE_BUFFER *pImageBuffer)

ImageBufferのピッチを返します。

size_t ic4_imagebuffer_get_buffer_size (const struct IC4_IMAGE_BUFFER *pImageBuffer)

ImageBufferのサイズを返します。

bool ic4_imagebuffer_get_image_type (const struct IC4_IMAGE_BUFFER *pImageBuffer, struct IC4_IMAGE_TYPE *image_type)

ImageBufferの画像データタイプに関する情報を照会します。

bool ic4_imagebuffer_get_metadata (const struct IC4_IMAGE_BUFFER *pImageBuffer, struct IC4_FRAME_METADATA *metadata)

ImageBufferオブジェクトからメタデータを取得します。

bool ic4_imagebuffer_copy (const struct IC4_IMAGE_BUFFER *source, struct IC4_IMAGE_BUFFER *destination, unsigned int flags)

あるImageBufferの内容を別のImageBufferにコピーします。

bool ic4_imagebuffer_is_writable (const struct IC4_IMAGE_BUFFER *buffer)

ImageBufferオブジェクトが(安全に)書き込み可能かどうかを確認します。

bool ic4_imagebuffer_wrap_memory (struct IC4_IMAGE_BUFFER **ppBuffer, void *data, size_t buffer_size, ptrdiff_t pitch, const struct IC4_IMAGE_TYPE *image_type, ic4_imagebuffer_memory_release on_release, void *on_release_user_ptr)

外部メモリを画像データの格納領域として使用し、ImageBufferオブジェクトを作成します。

const char * ic4_pixelformat_tostring (enum IC4_PIXEL_FORMAT pixel_format)

ピクセルフォーマットの名前を返します。

size_t ic4_pixelformat_bpp (enum IC4_PIXEL_FORMAT pixel_format)

ピクセルフォーマットのビット数(bits per pixel)を返します。

bool ic4_imagetype_tostring (const struct IC4_IMAGE_TYPE *image_type, char *buffer, size_t *buffer_size)

指定した画像タイプを文字列表現に変換します。

詳細説明

画像データはImageBufferオブジェクト(IC4_IMAGE_BUFFER)でやり取りされます。

ImageBufferオブジェクトは、本ライブラリのさまざまなSink種別のいずれかを使用すると自動的に作成されます。

ImageBufferオブジェクトは参照カウント方式です。ImageBufferオブジェクトをプログラムの複数の部分で共有するには、ic4_imagebuffer_ref()を使用します。参照が不要になったらic4_imagebuffer_unref()を呼び出してください。

参照カウントがゼロになると、ImageBufferは再利用のために供給元へ戻されます。例えば、ic4_queuesink_pop_output_buffer()から取得したImageBufferは再度キューに戻されます。

型定義ドキュメント

◆ ic4_imagebuffer_memory_release

typedef void(* ic4_imagebuffer_memory_release) (void *ptr, size_t buffer_size, void *user_ptr)

ic4_imagebuffer_wrap_memoryで作成されたImageBufferが破棄され、それを通じて画像データにアクセスできなくなったときに呼び出されるコールバック関数を定義します。

パラメータ
[in]ptric4_imagebuffer_wrap_memoryにdataとして渡された画像データへのポインタ
[in]buffer_sizeic4_imagebuffer_wrap_memoryにbuffer_sizeとして渡されたバッファサイズ
[in]user_ptrImageBuffer作成時に指定されたon_release_user_ptrパラメータ。

列挙型ドキュメント

◆ IC4_IMAGEBUFFER_COPY_FLAGS

ic4_imagebuffer_copy()の動作を設定するためのオプションを格納します。

列挙子
IC4_IMAGEBUFFER_COPY_SKIP_IMAGE 

コピー時に画像データをスキップするようic4_imagebuffer_copy()に指示します。

flags引数に含めると、ic4_imagebuffer_copy()はバッファの画像以外の部分のみをコピーし、画像のコピー処理はプログラム定義のアルゴリズムで行えます。

IC4_IMAGEBUFFER_COPY_SKIP_CHUNKDATA 

チャンクデータをコピーしないようic4_imagebuffer_copy()に指示します。

チャンクデータが大きく、コピー先フレームで不要な場合に役立ちます。

◆ IC4_PIXEL_FORMAT

ピクセルフォーマットは画像内のピクセルの表現方法を定義します。

列挙子
IC4_PIXEL_FORMAT_Unspecified 

未指定のピクセルフォーマット。画像タイプを部分的に定義するために使用します。

IC4_PIXEL_FORMAT_Mono8 

モノクロ8ビット。

IC4_PIXEL_FORMAT_Mono10p 

モノクロ10ビットパック。

IC4_PIXEL_FORMAT_Mono12p 

モノクロ12ビットパック。

IC4_PIXEL_FORMAT_Mono16 

モノクロ16ビット。

IC4_PIXEL_FORMAT_BayerBG8 

Bayer Blue-Green 8ビット。

IC4_PIXEL_FORMAT_BayerBG10p 

Bayer Blue-Green 10ビットパック。

IC4_PIXEL_FORMAT_BayerBG12p 

Bayer Blue-Green 12ビットパック。

IC4_PIXEL_FORMAT_BayerBG16 

Bayer Blue-Green 16ビット。

IC4_PIXEL_FORMAT_BayerGB8 

Bayer Green-Blue 8ビット。

IC4_PIXEL_FORMAT_BayerGB10p 

Bayer Green-Blue 10ビットパック。

IC4_PIXEL_FORMAT_BayerGB12p 

Bayer Green-Blue 12ビットパック。

IC4_PIXEL_FORMAT_BayerGB16 

Bayer Green-Blue 16ビット。

IC4_PIXEL_FORMAT_BayerGR8 

Bayer Green-Red 8ビット。

IC4_PIXEL_FORMAT_BayerGR10p 

Bayer Green-Red 10ビットパック。

IC4_PIXEL_FORMAT_BayerGR12p 

Bayer Green-Red 12ビットパック。

IC4_PIXEL_FORMAT_BayerGR16 

Bayer Green-Red 16ビット。

IC4_PIXEL_FORMAT_BayerRG8 

Bayer Red-Green 8ビット。

IC4_PIXEL_FORMAT_BayerRG10p 

Bayer Red-Green 10ビットパック。

IC4_PIXEL_FORMAT_BayerRG12p 

Bayer Red-Green 12ビットパック。

IC4_PIXEL_FORMAT_BayerRG16 

Bayer Red-Green 16ビット。

IC4_PIXEL_FORMAT_BGRa8 

Blue-Green-Red-alpha 8ビット。

IC4_PIXEL_FORMAT_BGRa16 

Blue-Green-Red-alpha 16ビット。

IC4_PIXEL_FORMAT_BGR8 

Blue-Green-Red 8ビット。

IC4_PIXEL_FORMAT_Mono12Packed 

GigE Vision固有のフォーマット、モノクロ12ビットパック。

IC4_PIXEL_FORMAT_BayerBG12Packed 

GigE Vision固有のフォーマット、Bayer Blue-Green 12ビットパック。

IC4_PIXEL_FORMAT_BayerGB12Packed 

GigE Vision固有のフォーマット、Bayer Green-Blue 12ビットパック。

IC4_PIXEL_FORMAT_BayerGR12Packed 

GigE Vision固有のフォーマット、Bayer Green-Red 12ビットパック。

IC4_PIXEL_FORMAT_BayerRG12Packed 

GigE Vision固有のフォーマット、Bayer Red-Green 12ビットパック。

IC4_PIXEL_FORMAT_YUV422_8 

YUV 4:2:2 8ビット。

IC4_PIXEL_FORMAT_YCbCr422_8 

YCbCr 4:2:2 8ビット。

IC4_PIXEL_FORMAT_YCbCr411_8_CbYYCrYY 

YCbCr 4:1:1 8ビット (CbYYCrYY)

IC4_PIXEL_FORMAT_YCbCr411_8 

YCbCr 4:1:1 8ビット (YYCbYYCr)

IC4_PIXEL_FORMAT_AnyBayer8 

任意の8ビットBayerフォーマットを選択するための仮想ピクセルフォーマット値。

カメラのIC4_PROPID_PIXEL_FORMATをこの値に設定すると、8ビットBayerピクセルフォーマットIC4_PIXEL_FORMAT_BayerBG8、IC4_PIXEL_FORMAT_BayerGB8、IC4_PIXEL_FORMAT_BayerRG8、IC4_PIXEL_FORMAT_BayerGR8のいずれかが自動的に選択されます。

IC4_PIXEL_FORMAT_AnyBayer10p 

任意の10ビットパックBayerフォーマットを選択するための仮想ピクセルフォーマット値。

カメラのIC4_PROPID_PIXEL_FORMATをこの値に設定すると、10ビットパックBayerピクセルフォーマットIC4_PIXEL_FORMAT_BayerBG10p、IC4_PIXEL_FORMAT_BayerGB10p、IC4_PIXEL_FORMAT_BayerRG10p、IC4_PIXEL_FORMAT_BayerGR10pのいずれかが自動的に選択されます。

IC4_PIXEL_FORMAT_AnyBayer12p 

任意の12ビットパックBayerフォーマットを選択するための仮想ピクセルフォーマット値。

カメラのIC4_PROPID_PIXEL_FORMATをこの値に設定すると、12ビットパックBayerピクセルフォーマット IC4_PIXEL_FORMAT_BayerBG12p, IC4_PIXEL_FORMAT_BayerGB12p, IC4_PIXEL_FORMAT_BayerRG12p, IC4_PIXEL_FORMAT_BayerGR12p, IC4_PIXEL_FORMAT_BayerBG12Packed, IC4_PIXEL_FORMAT_BayerGB12Packed, IC4_PIXEL_FORMAT_BayerRG12Packed、IC4_PIXEL_FORMAT_BayerGR12Packedのいずれかが自動的に選択されます。

IC4_PIXEL_FORMAT_AnyBayer16 

任意の16ビットBayerフォーマットを選択するための仮想ピクセルフォーマット値。

カメラのIC4_PROPID_PIXEL_FORMATをこの値に設定すると、16ビットBayerピクセルフォーマットIC4_PIXEL_FORMAT_BayerBG16、IC4_PIXEL_FORMAT_BayerGB16、IC4_PIXEL_FORMAT_BayerRG16、IC4_PIXEL_FORMAT_BayerGR16のいずれかが自動的に選択されます。

IC4_PIXEL_FORMAT_Invalid 

無効なピクセルフォーマット。

関数ドキュメント

◆ ic4_bufferpool_create()

bool ic4_bufferpool_create ( struct IC4_BUFFER_POOL **  ppPool,
const struct IC4_BUFFER_POOL_CONFIG *  config 
)

新しいBufferPoolを作成します。

パラメータ
[in]ppPool新しいBufferPoolを受け取るBufferPoolハンドルへのポインタ。BufferPoolが不要になったら、ic4_bufferpool_unref()を使用してオブジェクト参照を解放してください。
[in]configBufferPool設定を格納する構造体へのポインタ
戻り値
成功した場合はtrue、それ以外の場合はfalse。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_bufferpool_get_buffer()

bool ic4_bufferpool_get_buffer ( struct IC4_BUFFER_POOL *  pPool,
const struct IC4_IMAGE_TYPE *  image_type,
const struct IC4_BUFFERPOOL_ALLOCATION_OPTIONS *  options,
struct IC4_IMAGE_BUFFER **  ppImageBuffer 
)

BufferPoolからバッファを取得します。

バッファは新しくメモリ確保されるか、BufferPoolのバッファキャッシュから取得されます。

パラメータ
[in]pPoolBufferPool
[in]image_type要求するバッファの画像タイプ
[in]options詳細なメモリ確保オプションを指定するIC4_BUFFERPOOL_ALLOCATION_OPTIONS構造体へのポインタ。
デフォルトのメモリ確保パラメータを使用する場合はNULLを指定できます。
[out]ppImageBufferバッファを受け取るImageBufferハンドルへのポインタ。
バッファが不要になったら、ic4_imagebuffer_unref()を使用してオブジェクト参照を解放してください。
戻り値
成功した場合はtrue、それ以外の場合はfalse。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_bufferpool_ref()

struct IC4_BUFFER_POOL * ic4_bufferpool_ref ( struct IC4_BUFFER_POOL *  pPool)

BufferPoolの内部参照カウントを1つ増やします。

パラメータ
[in]pPoolBufferPoolへのポインタ
戻り値
pPoolで渡されたポインタ
備考
pPoolがNULLの場合、この関数はNULLを返します。エラー値は設定されません。
関連項目
ic4_bufferpool_unref

◆ ic4_bufferpool_unref()

void ic4_bufferpool_unref ( struct IC4_BUFFER_POOL *  pPool)

BufferPoolの内部参照カウントを1つ減らします。

参照カウントがゼロになると、オブジェクトは破棄されます。

パラメータ
[in]pPoolBufferPoolへのポインタ
備考
pPoolがNULLの場合、この関数は何も行いません。エラー値は設定されません。
関連項目
ic4_bufferpool_ref

◆ ic4_imagebuffer_copy()

bool ic4_imagebuffer_copy ( const struct IC4_IMAGE_BUFFER *  source,
struct IC4_IMAGE_BUFFER *  destination,
unsigned int  flags 
)

あるImageBufferの内容を別のImageBufferにコピーします。

パラメータ
sourceコピー元のバッファ
destinationコピー先のバッファ
flagsIC4_IMAGEBUFFER_COPY_FLAGSの値のビット単位の組み合わせ。
備考
sourceとdestinationの画像のピクセルフォーマットが異なる場合、画像は変換されます。例えば、sourceのピクセルフォーマットがIC4_PIXEL_FORMAT_BayerRG8で、destinationのピクセルフォーマットがIC4_PIXEL_FORMAT_BGR8の場合、デモザイク処理によってカラー画像が生成されます。
flagsにIC4_IMAGEBUFFER_COPY_SKIP_IMAGEが含まれる場合、この関数は画像データをコピーしません。この場合、メタデータのみをコピーし、画像のコピー処理はプログラム定義のアルゴリズムで行えます。
flagsにIC4_IMAGEBUFFER_COPY_SKIP_CHUNKDATAが含まれる場合、この関数はsourceに含まれるチャンクデータをコピーしません。チャンクデータが大きく不要な場合に役立ちます。
注意
sourceとdestinationの幅または高さが異なる場合、この関数は失敗し、エラー値はIC4_ERROR_CONVERSION_NOT_SUPPORTEDに設定されます。
要求された変換に利用可能なアルゴリズムがない場合、この関数は失敗し、エラー値はIC4_ERROR_CONVERSION_NOT_SUPPORTEDに設定されます。
destinationフレームが書き込み可能でない場合、この関数は失敗し、エラー値はIC4_ERROR_INVALID_OPERATIONに設定されます。
戻り値
成功した場合はtrue、それ以外の場合はfalse。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_imagebuffer_get_buffer_size()

size_t ic4_imagebuffer_get_buffer_size ( const struct IC4_IMAGE_BUFFER *  pImageBuffer)

ImageBufferのサイズを返します。

パラメータ
[in]pImageBufferImageBuffer
戻り値
このImageBufferのサイズ。エラーが発生した場合は0。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_imagebuffer_get_image_type()

bool ic4_imagebuffer_get_image_type ( const struct IC4_IMAGE_BUFFER *  pImageBuffer,
struct IC4_IMAGE_TYPE *  image_type 
)

ImageBufferの画像データタイプに関する情報を照会します。

パラメータ
[in]pImageBufferImageBuffer
[out]image_type画像データタイプ情報を受け取るIC4_IMAGE_TYPE構造体。
戻り値
成功した場合はtrue、それ以外の場合はfalse。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_imagebuffer_get_metadata()

bool ic4_imagebuffer_get_metadata ( const struct IC4_IMAGE_BUFFER *  pImageBuffer,
struct IC4_FRAME_METADATA *  metadata 
)

ImageBufferオブジェクトからメタデータを取得します。

パラメータ
[in]pImageBufferImageBuffer
[out]metadataメタデータを受け取るIC4_FRAME_METADATA構造体。
戻り値
成功した場合はtrue、それ以外の場合はfalse。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_imagebuffer_get_pitch()

ptrdiff_t ic4_imagebuffer_get_pitch ( const struct IC4_IMAGE_BUFFER *  pImageBuffer)

ImageBufferのピッチを返します。

ピッチとは、連続する2つの行の開始メモリ位置間の距離です。

パラメータ
[in]pImageBufferImageBuffer
戻り値
このImageBufferのピッチ。エラーが発生した場合は0。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_imagebuffer_get_ptr()

void * ic4_imagebuffer_get_ptr ( const struct IC4_IMAGE_BUFFER *  pImageBuffer)

ImageBufferが管理するデータへのポインタを返します。

パラメータ
[in]pImageBufferImageBuffer
戻り値
ImageBufferに含まれる画像データへのポインタ。
エラーが発生した場合はNULL。エラー情報を照会するにはic4_get_last_error()を使用してください。
備考
返されたポインタが指すメモリは、ImageBufferオブジェクトが存在する限り有効です。

◆ ic4_imagebuffer_is_writable()

bool ic4_imagebuffer_is_writable ( const struct IC4_IMAGE_BUFFER *  buffer)

ImageBufferオブジェクトが(安全に)書き込み可能かどうかを確認します。

状況によっては、ImageBufferオブジェクトは、そのハンドルを保持するアプリケーションとライブラリの間で共有されます。例えば、ImageBufferはDisplayやVideoWriterと共有されることがあります。

共有されたバッファは安全に書き込みできません。共有されているバッファに書き込むと、予期しない動作につながる可能性があります。例えば、並行して実行されている処理の結果に、変更が部分的に現れることがあります。

ImageBufferをic4_display_display_buffer()やic4_videowriter_add_frame()などの関数に渡すと、バッファが共有状態になる可能性があります。

注意
この関数は、バッファがライブラリの他の部分と共有されているかどうかのみを確認します。プログラムの複数の部分が同時にバッファのメモリにアクセスしているかどうかを追跡するのは、
プログラムの責任です。
パラメータ
[in]bufferImageBufferオブジェクト
注意
この関数は、アプリケーションの複数の部分間での共有を追跡しません。アプリケーションがImageBufferへの複数の参照を所有している場合、またはそのバッファのメモリアドレスを複数のスレッド間で共有している場合、データ競合を回避するのはアプリケーションの責任です。
戻り値
ImageBufferがライブラリのどの部分とも共有されておらず、したがって安全に書き込み可能な場合はtrue。
ImageBufferが共有されており、したがって書き込むべきでない場合はfalse。

◆ ic4_imagebuffer_ref()

struct IC4_IMAGE_BUFFER * ic4_imagebuffer_ref ( struct IC4_IMAGE_BUFFER *  pImageBuffer)

ImageBufferの内部参照カウントを1つ増やします。

パラメータ
[in]pImageBufferImageBuffer
戻り値
pImageBufferで渡されたポインタ
備考
pImageBufferがNULLの場合、この関数はNULLを返します。エラー値は設定されません。
関連項目
ic4_imagebuffer_unref

◆ ic4_imagebuffer_unref()

void ic4_imagebuffer_unref ( struct IC4_IMAGE_BUFFER *  pImageBuffer)

ImageBufferの内部参照カウントを1つ減らします。

参照カウントがゼロになると、ImageBufferは再利用のために供給元へ戻されます。

パラメータ
[in]pImageBufferImageBuffer
備考
pImageBufferがNULLの場合、この関数は何も行いません。エラー値は設定されません。
関連項目
ic4_imagebuffer_ref

◆ ic4_imagebuffer_wrap_memory()

bool ic4_imagebuffer_wrap_memory ( struct IC4_IMAGE_BUFFER **  ppBuffer,
void *  data,
size_t  buffer_size,
ptrdiff_t  pitch,
const struct IC4_IMAGE_TYPE *  image_type,
ic4_imagebuffer_memory_release  on_release,
void *  on_release_user_ptr 
)

外部メモリを画像データの格納領域として使用し、ImageBufferオブジェクトを作成します。

この関数は、サードパーティライブラリのバッファに画像データをコピーする際に役立ちます。

  • サードパーティライブラリで画像オブジェクトを作成します
  • ic4_imagebuffer_wrap_memory()を使用して、サードパーティライブラリの画像データをIC4_IMAGE_BUFFERでラップします。
  • ic4_imagebuffer_copy()を使用して、既存のImageBufferオブジェクトからサードパーティのImageBufferにデータをコピーします。
パラメータ
[out]ppBuffer新しいバッファオブジェクトを受け取るImageBufferハンドルへのポインタ。
バッファが不要になったら、ic4_imagebuffer_unref()を使用してオブジェクト参照を解放してください。
[in]dataImageBufferオブジェクトが画像データとして使用するメモリ領域へのポインタ
[in]buffer_sizedataが指すメモリ領域のサイズ
[in]pitch画像データの連続する2つの行のメモリアドレスの差
[in]image_typeImageBufferに格納する画像のタイプ
[in]on_releaseImageBufferオブジェクトが破棄されたときに呼び出されるコールバック関数への任意のポインタ。
これは、ImageBufferが指すメモリをプログラムが追跡し、ImageBufferオブジェクトが存在しなくなったときに解放する必要がある場合に役立ちます。
ImageBufferのライフタイムは、ic4_display_display_bufferやic4_videowriter_add_frameなどのAPI関数と共有されると、そのハンドルの存在を超えて延長される可能性があります。
[in]on_release_user_ptron_releaseを呼び出す際に渡されるユーザーポインタ。
戻り値
成功した場合はtrue、それ以外の場合はfalse。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_imagetype_tostring()

bool ic4_imagetype_tostring ( const struct IC4_IMAGE_TYPE *  image_type,
char *  buffer,
size_t *  buffer_size 
)

指定した画像タイプを文字列表現に変換します。

パラメータ
[out]image_typeエラーコードを受け取るIC4_IMAGE_TYPE値へのポインタ。
[out]buffer文字列を受け取る文字配列へのポインタ。
初期配列をメモリ確保せずに必要な領域サイズを調べるには、このパラメータをNULLにできます。
[in,out]buffer_sizebufferが指す配列の長さを示すsize_tへのポインタ。
この関数は、文字列表現の格納に必要な実際の文字数を常に書き込みます。
戻り値
成功した場合はtrue。
image_typeがNULLの場合、この関数は失敗しfalseを返します。
bufferがNULLでなく、*buffer_sizeが文字列の格納に必要なバイト数より小さい場合、この関数は失敗しfalseを返します。
エラー情報を照会するにはic4_get_last_error()を使用してください。

◆ ic4_pixelformat_bpp()

size_t ic4_pixelformat_bpp ( enum IC4_PIXEL_FORMAT  pixel_format)

ピクセルフォーマットのビット数(bits per pixel)を返します。

パラメータ
[in]pixel_formatピクセルフォーマット
戻り値
指定したピクセルフォーマットで1ピクセルを格納するのに必要なビット数。
ピクセルフォーマットのビット数が不明な場合、この関数は0を返します。

◆ ic4_pixelformat_tostring()

const char * ic4_pixelformat_tostring ( enum IC4_PIXEL_FORMAT  pixel_format)

ピクセルフォーマットの名前を返します。

パラメータ
[in]pixel_formatピクセルフォーマット
戻り値
ピクセルフォーマットの名前を含むNULL終端文字列へのポインタ。
戻り値が指すメモリは常に有効で、解放する必要はありません。
渡されたピクセルフォーマットが不明な場合、この関数はNULLを返します。