v24.2.6764

最初にお読みください


浜松ホトニクス(以下HPK)はこの文書およびサンプルコードの著作権を持っています。この文書は DCIMG-SDK に含まれ、DCIMG-API を利用するアプリケーションを作成する開発者は参照できます。
この文書とサンプルコードは上記目的のためにのみ公開され、 開発者はこの書類およびサンプルコードに対して、ライセンス/譲渡などの権利を有しません。
この書類に基づいて開発されたソフトウエアを使って発生するいかなる損害は開発者の責任です。
この書類には技術的または記述上の誤りが含まれる可能性がありますが、HPKはそれらに伴う損害を補償しません。
HPKはこの書類に含まれる情報が更新された場合の通知は行いません。
ブランド名ならびに製品名は商標または登録商標です。
HPKの許可無く、本書類の一部または全部の、複製/翻訳/意訳を認めません。

このチャプターの先頭へ戻る


概要


DCIMG-API
DCIMG-APIはDCAM-API のレコーディング関数を利用して記録された画像ファイル(以下DCIMGファイル)を扱う関数群です。 DCAM-APIは浜松ホトニクス社製の科学計測用デジタルカメラ(以下、デジタルカメラ)をパソコンの応用ソフトウエアから制御する為の関数群です。 DCIMG-API は DCAM-API のインストール時にインストールされます。DCAM-API は www.dcamapi.com からダウンロード可能です。


SDK
DCIMGソフトウエア開発キット(以下SDK)は応用ソフトウエアの開発者がDCIMG-APIを使用する為に必要な資料を提供します。
SDKはヘッダファイル、ライブラリファイル、DCIMG-APIの関数説明書ならびにDCIMG-APIを利用するサンプルプログラムのソースコードで構成されます。SDKのユーザは一部を変更して利用したり、全く新しいソフトウエアを作ったり、出来上がったバイナリファイルを公開することができます。しかしながら以下の事は許されていません。1) 浜松ホトニクス株式会社からSDKとして受け取った資料の公開/提供。2) ほとんどDCIMG-APIと同じであるwrapperモジュールを外部に提供。


Concept
DCIMG-APIのコンセプトはDCIMGファイルを簡単に読み出せる事です。HPKはファイル形式の公開ではなくAPIの提供をするのは、DCAM-API側の拡張の際、DCIMGファイルの形式が拡張される可能性がある為です。つまり、ファイル形式を公開するよりも API としてサポートする方が開発者にとって良いです。 基本的にはファイルをメモリに取り込む機能のみが提供されており、画像表示の為のAPIやGUI制御部分は存在しません。これにより、必要となる関数数は最小限に押さえられています。また様々な環境で使用できるように呼び出し形式はC言語を採用しています。

このチャプターの先頭へ戻る


全般


ハンドルに関するルール
HDCIMG
HDCIMG ハンドルは DCIMG-API の関数がファイルを扱う時に使用します。DCIMG-APIの初期化後 dcimg_open()関数で取得でき、使い終わったら dcimg_close()関数で解放します。


関数に関するルール
関数名
全てのDCIMG-APIの関数名は小文字で構成され、dcimg_で始まります。

関数引数
dcimg_init()関数とdcimg_open()関数を除く全ての関数は、第一引数が HDCIMG ハンドルです。 多くの関数は一つか二つの引数を持ち、3つ以上のパラメータがある場合は構造体で受け渡しをするようになっています。 構造体の引数の場合、ポインタを渡し、構造体の第一メンバは構造体のサイズを指定します。構造体のメンバは特に設定する値が無いものは0でクリアしてください。

関数戻り値
全ての関数は DCIMG_ERR 型で定義されるエラー値を返します。 正常に終了するとDCIMG_ERR_SUCCESSが戻ります。

フレーム、セッションそしてファイル
DCIMGファイル内の最小構成単位はフレームです。フレームは二次元画像データです。 一連の取り込みで生成される連続したフレーム全体をセッションと呼びます。 セッションの始まりは取込みの始まりまたは記録の再開時であり、セッションの最後は取込みの終了または記録の中断時になります。 DCIMGファイルは内部に複数のセッションを含むことができます。

このチャプターの先頭へ戻る


呼び出し順


初期化と終了処理とHDCIMGハンドル
初期化
DCIMG-APIを使用する場合、最初にdcimg_init()関数を呼び、続いてdcimg_open()関数でHDCIMGハンドルを入手します。

終了処理
使わなくなったHDCIMGハンドルはdcimg_close()関数で解放できます。 DCIMG-API自体を終了する関数はありません。

HDCIMGハンドル
DCIMG-API のほとんどの関数は、HDCIMG ハンドルを引数として必要とします。 HDCIMG ハンドルは制御対象とする DCIMG ファイルを指定する為に使われ、dcimg_open() 関数で得られます。


画像データとメタデータへのアクセス
画像データのロック
画像データにアクセスする簡単な方法は dcimg_lockframe() 関数を呼びだす事です。 まずDCIMG_FRAME 構造体のインスタンスを用意し、size メンバと iFrame メンバを指定してから呼び出せば、指定したフレームの画像情報とデータにアクセスする為のポインタを得られます。

画像データのコピー
dcimg_copyframe() 関数を使うと、既に用意されているバッファに画像データを取り込むことができます。 DCIMG_FRAME 構造体のインスタンスにはあらかじめ必要とする領域のサイズや位置を指定する必要があります。 格納されている画像サイズやピクセルタイプ等を取得する場合 dcimg_getparaml() 関数を使用します。

メタデータ
DCIMG ファイルには画像データ以外のデータも含まれています。これらをメタデータと呼びます。 ある一枚のフレームに含まれるメタデータを得るには dcimg_copymetadata() 関数を使います。 複数のフレームにまたがるメタデータを得るには dcimg_copymetadatablock() 関数を使います。

フレーム番号
フレーム番号は 0 ベースです。セッション内の最初のフレーム番号は 0 です。


その他のアクセス
セッション
DCIMG-API では、記録開始から記録終了までの一連の画像をセッションと呼びます。 DCIMG ファイルには複数のセッションを含む事ができます。 dcimg_setsessionindex() 関数はセッション番号を使ってカレントセッションを変更する事ができます。 現在のセッション番号を得るには dcimg_getsessionindex() 関数を使います。 セッション番号は 0 ベースです。最初のセッション番号は 0 になります。

パラメータ
DCIMG ファイル内に含まれる各種パラメータを得るには dcimg_getparaml() 関数を使います。 パラメータの選択は DCIMG_IDPARAML 列挙型を使用します。

このチャプターの先頭へ戻る


型宣言



DCIMG_ERR
DCIMG_ERR_NOMEMORY メモリが足りません。
DCIMG_ERR_INVALIDHANDLE 無効なファイルハンドルです。
DCIMG_ERR_INVALIDPARAM 無効なパラメータです。
DCIMG_ERR_INVALIDVALUE 無効な値です。
DCIMG_ERR_INVALIDVIEW 無効なビューインデックスです。
DCIMG_ERR_INVALIDFRAMEINDEX 無効なフレームインデックスです。
DCIMG_ERR_INVALIDSESSIONINDEX 無効なセッションインデックスです。
DCIMG_ERR_FILENOTOPENED ファイルを開くのに失敗しました。
DCIMG_ERR_UNKNOWNFILEFORMAT 知らないファイルフォーマットです。
DCIMG_ERR_NOTSUPPORT 読み込んだファイルでは関数もしくはIDをサポートしていません。
DCIMG_ERR_FAILEDREADDATA データの読み込みに失敗しました。
DCIMG_ERR_UNKNOWNSIGN ファイルヘッダの署名が知らないものか、データが破損しています。
DCIMG_ERR_OLDERFILEVERSION ファイルヘッダのバージョンが使用しているDCIMGAPIがサポートしているバージョンより古いです。
DCIMG_ERR_NEWERFILEVERSION ファイルヘッダのバージョンが使用しているDCIMGAPIがサポートしているバージョンより新しいです。
DCIMG_ERR_NOIMAGE 画像がありません。
DCIMG_ERR_UNKNOWNIMAGEPROC 知らない画像処理タイプです。
DCIMG_ERR_NOTSUPPORTIMAGEPROC 設定された画像処理はサポートしていません。
DCIMG_ERR_NODATA 目的のデータは記録されていません。
DCIMG_ERR_IMAGE_UNKNOWNSIGNATURE 画像ヘッダの署名が知らないものか、データが破損しています。
DCIMG_ERR_IMAGE_NEWRUNTIMEREQUIRED 画像ヘッダのバージョンが使用しているDCIMGAPIがサポートしているバージョンより新しいです。
DCIMG_ERR_IMAGE_ERRORSTATUSEXIST 画像ヘッダにエラーステータスが立っています。
DCIMG_ERR_IMAGE_HEADERCORRUPTED 画像ヘッダの値がおかしいです。
DCIMG_ERR_IMAGE_BROKENCONTENT 画像データが破損しています。
DCIMG_ERR_UNKNOWNCOMMAND 知らないコマンドです。
DCIMG_ERR_UNKNOWNPARAMID 知らないPARAMIDです。
DCIMG_ERR_SUCCESS エラーではありません。処理に成功しました。
DCIMG_ERR_UNREACH 内部エラーです。


DCIMG_CODEPAGE
DCIMG_CODEPAGE__SHIFT_JIS Shift JIS
DCIMG_CODEPAGE__UTF16_LE UTF-16 (Little Endian)
DCIMG_CODEPAGE__UTF16_BE UTF-16 (Big Endian)
DCIMG_CODEPAGE__UTF7 UTF-7
DCIMG_CODEPAGE__UTF8 UTF-8
DCIMG_CODEPAGE__NONE 記録されていません。


DCIMG_FRAME_OPTION
DCIMG_FRAME_OPTION__VIEW_CURRENT 現在のビュー
DCIMG_FRAME_OPTION__VIEW_1 View1
DCIMG_FRAME_OPTION__VIEW_2 View2
DCIMG_FRAME_OPTION__VIEW_3 View3
DCIMG_FRAME_OPTION__VIEW_4 View4


DCIMG_PIXELTYPE
DCIMG_PIXELTYPE_NONE 情報がありません
DCIMG_PIXELTYPE_MONO8 Mono 8bit
DCIMG_PIXELTYPE_MONO16 Mono 16bit


DCIMG_METADATAKIND
DCIMG_METADATAKIND_USERDATATEXT ユーザメタデータ テキスト
DCIMG_METADATAKIND_USERDATABIN ユーザメタデータ バイナリ
DCIMG_METADATAKIND_TIMESTAMPS 画像のタイムスタンプ
DCIMG_METADATAKIND_FRAMESTAMPS 画像のフレームスタンプ


DCIMG_METADATAOPTION
DCIMG_METADATAOPTION__LOCATION_FRAME フレームメタデータへのアクセス
DCIMG_METADATAOPTION__LOCATION_FILE ファイルメタデータへのアクセス
DCIMG_METADATAOPTION__LOCATION_SESSION セッションメタデータへのアクセス
DCIMG_METADATAOPTION__VIEW_CURRENT 現在のビュー
DCIMG_METADATAOPTION__VIEW_1 view1
DCIMG_METADATAOPTION__VIEW_2 view2
DCIMG_METADATAOPTION__VIEW_3 view3
DCIMG_METADATAOPTION__VIEW_4 view4


DCIMG_IDPARAML
DCIMG_IDPARAML_NUMBEROF_TOTALFRAME ファイル内にあるフレーム数
DCIMG_IDPARAML_NUMBEROF_SESSION ファイル内にあるセッション数
DCIMG_IDPARAML_NUMBEROF_FRAME 現在のセッション内にあるフレーム数
DCIMG_IDPARAML_SIZEOF_USERDATABIN_SESSION 現在のセッションに記録されているバイナリユーザメタデータのバイト数
DCIMG_IDPARAML_SIZEOF_USERDATABIN_FILE ファイルに記録されているバイナリユーザメタデータのバイト数
DCIMG_IDPARAML_SIZEOF_USERDATATEXT_SESSION 現在のセッションに記録されているテキストユーザメタデータのバイト数
DCIMG_IDPARAML_SIZEOF_USERDATATEXT_FILE ファイルに記録されているテキストユーザメタデータのバイト数
DCIMG_IDPARAML_IMAGE_WIDTH 現在のセッション内にある画像の水平画素数
DCIMG_IDPARAML_IMAGE_HEIGHT 現在のセッション内にある画像の垂直画素数
DCIMG_IDPARAML_IMAGE_ROWBYTES 現在のセッション内にある画像の水平方向のバイト数
DCIMG_IDPARAML_IMAGE_PIXELTYPE 現在のセッション内にある画像のピクセルタイプ
DCIMG_IDPARAML_MAXSIZE_USERDATABIN 現在のセッション内にあるフレームのバイナリユーザメタデータの最大バイト数
DCIMG_IDPARAML_MAXSIZE_USERDATABIN_SESSION ファイル内にあるセッションのバイナリユーザメタデータの最大バイト数
DCIMG_IDPARAML_MAXSIZE_USERDATATEXT 現在のセッション内にあるフレームのテキストユーザメタデータの最大バイト数
DCIMG_IDPARAML_MAXSIZE_USERDATATEXT_SESSION ファイル内にあるセッションのテキストユーザメタデータの最大バイト数
DCIMG_IDPARAML_CURRENT_SESSION 現在のセッションインデックス
DCIMG_IDPARAML_NUMBEROF_VIEW 現在のセッションのビューの数
DCIMG_IDPARAML_FILEFORMAT_VERSION ファイルフォーマットのバージョン
DCIMG_IDPARAML_CAPABILITY_IMAGEPROC 使用可能な画像処理のタイプ


DCIMGDATA_OPTION
DCIMGDATA_OPTION__VIEW_CURRENT 現在のビュー
DCIMGDATA_OPTION__VIEW_1 View1
DCIMGDATA_OPTION__VIEW_2 View2
DCIMGDATA_OPTION__VIEW_3 View3
DCIMGDATA_OPTION__VIEW_4 View4


DCIMGDATA_KIND
DCIMGDATA_KIND__REGION 切り出し領域
DCIMGDATA_KIND__SENSORPARAM センサパラメータ


DCIMGDATA_REGIONTYPE
DCIMGDATA_REGIONTYPE__RECT16ARRAY DCIMGDATA_REGIONRECTの配列


DCIMG_CAPABILITY_IMAGEPROC
DCIMG_CAPABILITY_IMAGEPROC__HIGHCONTRAST High Contrastの画像処理の機能フラグ

このチャプターの先頭へ戻る


関数



dcimg_init()

Declaration
DCIMG_ERR dcimg_init(
DCIMG_INIT* param
);

Parameter
param
DCIMG_INIT 構造体のインスタンスで、初期化時にオプションを指定します

Remarks
dcimg_init()関数は、DCIMG-APIを初期化します。 ホストソフトウエアは他の関数を呼ぶ前に一度この関数を呼びます。

dcimg_open()

Declaration
DCIMG_ERR dcimg_open(
DCIMG_OPEN* param
);

Parameter
param
DCIMG_OPEN 構造体のインスタンスで、DCIMG ファイルのパスを指定して、HDCIMG ハンドルを受け取ります

Remarks
dcimg_open() 関数は、DCIMG_OPEN::path で指定された DCIMG ファイルを開き、対応する HDCIMG ハンドルを返します。 ホストソフトウエアは DCIMG ファイル一つにつき一回だけこの関数を呼び出す事ができます。 ホストソフトウエアが HDCIMG ハンドルが不要になったら dcimg_close() 関数で解放してください。 dcimg_close() 関数を呼ぶと、その後 HDCIMG ハンドルは使えなくなりますが、本関数を再度呼び出すと再び HDCIMG ハンドルを取得できます。 本関数は成功すると DCIMG_ERR_SUCCESS を返し、DCIMG_OPEN::hdcimg メンバに HDCIMG ハンドルがセットされています。 サポートするファイルが見つからなかった場合、この関数はエラーコードを返します。

dcimg_close()

Declaration
DCIMG_ERR dcimg_close(
HDCIMG hdcimg
);

Parameter
hdcimg
解放する HDCIMG ハンドルを指定します

Remarks
dcimg_close() 関数は HDCIMG ハンドルとファイルを解放します。この関数が呼ばれて成功した場合、指定された HDCIMG ハンドルは使えなくなります。再度同じカメラを使う場合、ホストソフトウエアは dcimg_open() 関数を呼んで HDCIMG ハンドルを取得する必要があります。

dcimg_getdata()

Declaration
DCIMG_ERR dcimg_getdata(
HDCIMG hdcimg,
DCIMGDATA_HDR* hdr
);

Parameter
hdcimg
参照元となる HDCIMG ハンドルを指定します
hdr
必要なデータを取得するための構造体の先頭にある DCIMGDATA_HDR 構造体インスタンスへのポインタ

Remarks
dcimg_getdata() 関数は、paramlでは取得できないようなデータを取得します。 データの種類ごとに構造体が用意され、最初のメンバ変数はDCIMGDATA_HDRになっています。

dcimg_lockframe()

Declaration
DCIMG_ERR dcimg_lockframe(
HDCIMG hdcimg,
DCIMG_FRAME* pFrame
);

Parameter
hdcimg
参照元となる HDCIMG ハンドルを指定します
pFrame
画像を参照する為の情報を受け取る DCIMG_FRAME 構造体インスタンスへのポインタ

Remarks
dcimg_lockframe() 関数は、DCIMG ファイル中の画像にアクセスする為のポインタを返します。 この関数が再び呼ばれると、その前に dcimg_lockframe() 関数を呼んだときに返される内容は無効になります。 この事態を避ける為に、dcimg_lockframe() 関数の呼び出しは、ある決まったスレッドから行うのが良いです。

dcimg_copyframe()

Declaration
DCIMG_ERR dcimg_copyframe(
HDCIMG hdcimg,
DCIMG_FRAME* pFrame
);

Parameter
hdcimg
参照元となる HDCIMG ハンドルを指定します
pFrame
コピー先として画像を受け取る DCIMG_FRAME 構造体インスタンスへのポインタです

Remarks
dcimg_copyframe() 関数は DCIMG ファイル中の画像データをホストアプリケーションが指定したバッファにコピーします

dcimg_copymetadata()

Declaration
DCIMG_ERR dcimg_copymetadata(
HDCIMG hdcimg,
DCIMG_METADATAHDR* hdr
);

Parameter
hdcimg
参照元となる HDCIMG ハンドルを指定します
hdr
コピー先としてメタデータを受け取る構造体の先頭にある hdr メンバへのポインタです

Remarks
dcambuf_copymetadata() 関数はホストアプリケーションが指定したバッファにメタデータをコピーします。 メタデータは DCAM_METADATAKIND で指定され、タイムスタンプとフレームスタンプを指定できます。

dcimg_copymetadatablock()

Declaration
DCIMG_ERR dcimg_copymetadatablock(
HDCIMG hdcimg,
DCIMG_METADATAHDR* hdr
);

Parameter
hdcimg
参照元となる HDCIMG ハンドルを指定します
hdr
コピー先としてメタデータを受け取る構造体の先頭にある hdr メンバへのポインタです

Remarks
dcimg_copymetadatablock() 関数はホストアプリケーションが指定したバッファに複数のメタデータをコピーします。 メタデータは DCAM_METADATAKIND で指定され、タイムスタンプとフレームスタンプを指定できます。

dcimg_setsessionindex()

Declaration
DCIMG_ERR dcimg_setsessionindex(
HDCIMG hdcimg,
int32 index
);

Parameter
hdcimg
セッションを変更する HDCIMG ハンドルを指定します
index
セッションインデックスを指定します

Remarks
dcimg_setsessionindex()関数は、複数のSessionを持っているときに対象とするSessionを切り替えます。 Sessionのインデックスは0から始まります。

dcimg_getsessionindex()

Declaration
DCIMG_ERR dcimg_getsessionindex(
HDCIMG hdcimg,
int32* pIndex
);

Parameter
hdcimg
セッションを取得する HDCIMG ハンドルを指定します
pIndex
現在のセッションインデックスを受け取る変数へのポインタを指定します

Remarks
dcimg_getsessionindex()は対象となっているSessionのインデックスを返します。 Sessionのインデックスは0から始まります。

dcimg_getparaml()

Declaration
DCIMG_ERR dcimg_getparaml(
HDCIMG hdcimg,
DCIMG_IDPARAML index,
int32* paraml
);

Parameter
hdcimg
調べたい対象の HDCIMG ハンドルを指定します
index
値を取得したいパラメータのインデックスを指定します
paraml
現在のセッションインデックスを受け取る変数へのポインタを指定します

Remarks
dcimg_getparam()関数は、indexで指定されたDCIMG_PARAMLの値からparamlにint32の値を返します。

このチャプターの先頭へ戻る


構造体



DCIMG_GUID

struct DCIMG_GUID {
_ui32 Data1; //
unsigned short Data2; //
unsigned short Data3; //
unsigned char Data4[8]; //
};

Remarks
DCIMG_INIT 構造体の guid メンバで使用されている型です。 一般には使用しません。


DCIMG_INIT

struct DCIMG_INIT {
int32 size; // sizeof(*this)
int32 reserved; // 予約
const DCIMG_GUID* guid; // GUID オプション、通常は NULL
};

size
DCIMG_INIT 構造体のバイトサイズを指定します。
reserved
予約されています。0を指定してください。
guid
DCIMG_GUIDインスタンスへのポインタを指定します。 通常はNULLを指定します。

Remarks
dcimg_init() 関数を呼び出す際に引数にポインタで渡します。 ホストソフトウエアは DCIMG-API を初期化し、他の DCIMG 関数が呼び出せるようになります。


DCIMG_OPEN

struct DCIMG_OPEN {
int32 size; // この構造体のバイトサイズ
int32 codepage; // DCIMG_CODEPAGE_*
HDCIMG hdcimg; //
LPCTSTR path; // ファイルパス
};

codepage
0でなければ、pathで指定された文字列をcodepageで指定されたエンコードで扱います。
hdcimg
dcimg_open()関数が成功するとここにDCIMGのファイルハンドルが入ります。
path
ホストソフトウエアはここにDCIMGのファイルパスを指定します。

DCIMG_TIMESTAMP

struct DCIMG_TIMESTAMP {
_ui32 sec; // 秒
int32 microsec; // マイクロ秒
};

Remarks
いくつかの構造体でタイムスタンプを取得するために使用される構造体です


DCIMG_FRAME

struct DCIMG_FRAME {
int32 size; // この構造体のバイトサイズ
int32 iKind; // 予約
int32 option; // DCIMG_FRAME_OPTION
int32 iFrame; // フレームインデックス
void* buf; // 画像の左上のポインタ
int32 rowbytes; // 次のラインまでのバイトサイズ
DCIMG_PIXELTYPE type; // 画像データのピクセルタイプ
int32 width; // 水平方向の画像数
int32 height; // 垂直方向のライン数
int32 left; // 垂直方向の先頭画素
int32 top; // 垂直方向の先頭ライン
DCIMG_TIMESTAMP timestamp; // タイムスタンプ
int32 framestamp; // フレームスタンプ
int32 camerastamp; // カメラスタンプ
};

size
この構造体のバイトサイズを指定します。
iKind
予約されています。0を設定してください。
option
画像にアクセスするためのオプションを指定します。
iFrame
インデックスでフレームを指定します。
buf
dcimg_lockframe()はこの変数に画像の左上のアドレスを返します。
dcimg_copyframe()を呼ぶ前に画像をコピーするために定義されたポインタを指定します。
rowbytes
dcimg_lockframe()はあるラインから次のラインへのオフセットをバイトサイズで返します。この値はマイナスになることもあります。
dcimg_copyframe()はあるラインから次のラインへのオフセットをバイトサイズを指定する必要があります。画像を上下に反転したいときは、この値をマイナスにすることで可能です。
type
dcimg_lockframe()はこの変数に画像データのDCIMG_PIXELTYPEを返します。
dcimg_copyframe()は関数を呼ぶ前にこの変数の値を0にする必要があります。
width
dcimg_lockframe()はこの変数に水平方向の画素数を返します。
dcimg_copyframe()はホストアプリケーションがコピーしたい水平方向の画像数を指定する必要があります。
height
dcimg_lockframe()はこの変数に垂直方向のライン数を返します。
dcimg_copyframe()はホストアプリケーションがコピーしたい垂直方向のライン数を指定する必要があります。
left
dcimg_lockframe()はこの変数に画像が開始する水平方向のオフセットを返します。通常0が入ります。
dcimg_copyframe()はホストアプリケーションがコピーしたい左上の角のアドレスへの水平方向のオフセットを指定する必要があります。
top
dcimg_lockframe()はこの変数に画像が開始する垂直方向のオフセットを返します。通常0が入ります。
dcimg_copyframe()はホストアプリケーションがコピーしたい左上の角のアドレスへの垂直方向のオフセットを指定する必要があります。
timestamp
記録されていれば、タイムスタンプが入ります。 もし値が0であれば、その画像はタイムスタンプが有効ではないということです。
framestamp
記録されていれば、フレームスタンプが入ります。 フレームスタンプはセッションの先頭が0で始まります。
camerastamp
記録されていれば、カメラスタンプの値が入ります。 カメラスタンプはいくつかのカメラでサポートしており、ユーザもしくはホストアプリケーションが設定することができます。

DCIMG_METADATAHDR

struct DCIMG_METADATAHDR {
int32 size; // この構造対を先頭のメンバ変数に持つ構造対全体のサイズであり、この構造対のサイズではありません
int32 iKind; // DCIMG_METADATAKIND
int32 option; // DCIMG_METADATAOPTION
int32 iFrame; // frame index
};

size
このDCAM_METADATAHDR構造体を含んだ構造対のバイトサイズを指定します。
iKind
METADATAの種類を指定します。
option
METADATAのオプションを指定します。
iFrame
対象となるフレーム番号を指定します。対象がフレームの時のみ有効です。

DCIMG_USERDATATEXT

struct DCIMG_USERDATATEXT {
DCIMG_METADATAHDR hdr; // メンバ変数sizeにこの構造体のサイズを指定
char* text; // メタデータを受け取るためのポインタ
int32 text_len; // メタデータを受け取るためのバッファサイズ
int32 codepage; // エンコード値、DCIMG_CODEPAGE参照
};

hdr
メンバ変数ikindにDCIMG_METADATAKIND_USERDATATEXTを設定し、メンバ変数optionにDCIMG_METEDATAOPTION__LOCATIONのどれか一つを設定する必要があります。
text
テキストメタデータを受け取るためのバッファを指定します。
text_len
メタデータを受け取るためのバッファサイズを指定します。
codepage
エンコード値としてDCIMG_CODEPAGEの一つを指定します。

DCIMG_USERDATABIN

struct DCIMG_USERDATABIN {
DCIMG_METADATAHDR hdr; // メンバ変数sizeにこの構造体のサイズを指定
void* bin; // メタデータを受け取るためのポインタ
int32 bin_len; // メタデータを受け取るためのバッファサイズ
int32 reserved; // 予約
};

hdr
メンバ変数ikindにDCIMG_METADATAKIND_USERDATABINを設定し、メンバ変数optionにDCIMG_METEDATAOPTION__LOCATIONのどれか一つを設定する必要があります。
bin
バイナリメタデータを受け取るためのバッファを指定します。
bin_len
メタデータを受け取るためのバッファサイズを指定します。
reserved
予約されています。0を指定します。

DCIMG_USERDATATEXTBLOCK

struct DCIMG_USERDATATEXTBLOCK {
DCIMG_METADATAHDR hdr; // メンバ変数sizeにこの構造体のサイズを指定
void* userdatatext; // ユーザテキストデータのブロックで受け取るためのポインタ
int32 userdatatextsize; // ひとつのユーザテキストを受け取るためのバッファサイズ
int32* userdatatextvalidsize; // 画像それぞれのテキストサイズを返します
int32 userdatatextmax; // 受け取ることができるユーザテキストの最大数
int32 userdatatextcount; // バッファに書き込まれたユーザテキストの数
int32 userdatatext_kind; // DCIMG_METADATAOPTION__LOCATION
int32* userdatatextcodepage; // 書き込まれたユーザテキストのそれぞれのエンコードタイプ
};

hdr
メンバ変数ikindにDCIMG_METADATAKIND_USERDATATEXTを指定します。
userdatatext
ユーザテキストブロックを受け取るためのバッファを指定します。
userdatatextsize
ひとつのユーザテキストを受け取るために用意したバッファサイズを指定します。
userdatatextvalidsize
それぞれの画像に対して書き込まれたテキストのサイズを受け取るための配列を指定します。
userdatatextmax
受け取ることができるユーザテキストの最大数を指定します。userdatatextに指定するポインタはuserdatatextsize * userdatatextmaxの領域を持つ必要があります。
userdatatextcount
書き込まれたユーザテキストの数を返します。
userdatatext_kind
DCIMG_METADATAOPTION__LOCATIONからユーザテキストの種類を選択します。
userdatatextcodepage
書き込まれたユーザテキストのそれぞれのエンコードタイプを返します。

DCIMG_USERDATABINBLOCK

struct DCIMG_USERDATABINBLOCK {
DCIMG_METADATAHDR hdr; // メンバ変数sizeにこの構造体のサイズを指定
void* userdatabin; // ユーザバイナリのブロックを受け取るためのポインタ
int32 userdatabinsize; // 一つのユーザバイナリのサイズ
int32* userdatabinvalidsize; // 画像それぞれバイナリデータのサイズを返します
int32 userdatabinmax; // 受け取ることができるユーザバイナリの最大数
int32 userdatabincount; // バッファに書き込まれたユーザテキストの数
int32 userdatabin_kind; // DCIMG_METADATAOPTION__LOCATION
};

hdr
メンバ変数ikindにDCIMG_METADATAKIND_USERDATABINを指定します。
userdatabin
ユーザバイナリのブロックを受け取るためのバッファを指定します。
userdatabinsize
一つのユーザバイナリを格納するためのバッファのサイズを指定します。
userdatabinvalidsize
それぞれの画像に対して書き込まれたバイナリのサイズを受け取るために配列を指定します。
userdatabinmax
受け取ることができるユーザバイナリの最大数を指定します。userdatabinに指定するポインタはuserdatabinsize * userdatabinmaxの領域を持つ必要があります。
userdatabincount
書き込まれたユーザテキストの数を返します。
userdatabin_kind
DCIMG_METADATAOPTION__LOCATIONからユーザバイナリの種類を選択します。

DCIMG_TIMESTAMPBLOCK

struct DCIMG_TIMESTAMPBLOCK {
DCIMG_METADATAHDR hdr; // メンバ変数sizeにこの構造体のサイズを指定
DCIMG_TIMESTAMP* timestamps; // タイムスタンプブロックを受け取るためのポインタです
int32 timestampmax; // 受け取ることができるタイムスタンプの最大数
int32 timestampkind; // タイムスタンプの種類を返すために予約されています
int32 timestampsize; // sizeof(DCIMG_TIMESTAMP)
int32 timestampvalidsize; // DCIMG_TIMESTAMPに書き込まれたデータサイズ
int32 timestampcount; // timestampsに書き込まれたタイムスタンプの数
};

hdr
メンバ変数ikindにDCIMG_METADATAKIND_TIMESTAMPSを指定します。
timestamps
タイムスタンプを受け取るためのTIMESTAMPの配列を指定します。
timestampmax
受け取ることができるタイムスタンプの最大数を指定します。
timestampkind
タイムスタンプの種類(ハードウエア、ドライバ、DCAMなど)を返すために予約されています。
timestampsize
DCIMG_TIMESTAMP構造体のサイズを設定します。
timestampvalidsize
DCIMG_TIMESTAMPに書き込まれたデータサイズを返します。
timestampcount
書き込まれたタイムスタンプの数を返します。
予約されています。0を指定します。

DCIMG_FRAMESTAMPBLOCK

struct DCIMG_FRAMESTAMPBLOCK {
DCIMG_METADATAHDR hdr; // メンバ変数sizeにこの構造体のサイズを指定
int32* framestamps; // フレームスタンプを受け取るためのポインタ
int32 framestampmax; // 受け取ることができるフレームスタンプの最大数
int32 framestampcount; // バッファに書き込まれたフレームスタンプの数
int32 reserved; // 予約
};

hdr
メンバ変数ikindにDCIMG_METADATAKIND_FRAMESTAMPSを指定します。
framestamps
フレームスタンプを受け取るためのバッファを指定します。
framestampmax
受け取ることができるフレームスタンプの最大数を指定します。
framestampcount
書き込まれたフレームスタンプの数を返します。
reserved
予約されています。0を指定します。

DCIMGDATA_HDR

struct DCIMGDATA_HDR {
int32 size; // 構造体全体のサイズ。この構造体のサイズではありません。
int32 iKind; // DCIMGDATA_KIND
int32 option; // DCIMGDATA_OPTION
int32 reserved; // 0 reserved
};

size
DCIMGDATA_HDR構造体を含む、全体の構造体のバイトサイズを指定します。
iKind
構造体の種類を判別するためのDCIMGDATA_KIND値を設定します。
option
必要に応じてDCIMGDATA_OPTION値を設定します。
reserved
予約されています。0を指定してください。

DCIMGDATA_REGION

struct DCIMGDATA_REGION {
DCIMGDATA_HDR hdr; // iKind = DCIMGDATA_KIND__REGION
int32 option; // 0 reserved
int32 type; // DCIMGDATA_RETIONTYPE
void* data; // top of data
int32 datasize; // size of data
int32 reserved; // 0 reserved
};

hdr
メンバ変数のsizeにはこの構造体のサイズを設定します。
option
予約されています。0を指定してください。
type
取得した領域のデータタイプ
data
領域データの先頭アドレスを取得します。
datasize
データサイズを取得します。
reserved
予約されています。0を指定してください。

DCIMGDATA_REGIONRECT

struct DCIMGDATA_REGIONRECT {
short left; // 左側
short top; // 上面
short right; // 右側
short bottom; // 下面
};

Remarks
矩形の情報を取得するために使用される構造体です


DCIMGDATA_SENSORPARAM

struct DCIMGDATA_SENSORPARAM {
DCIMGDATA_HDR hdr; // iKind = DCIMGDATA_KIND__SENSORPARAM
int32 option; // 0 reserved
int32 binning; // ビニング
int32 sensorhpos; // センサ上の水平オフセット
int32 sensorhsize; // センサ上の水平サイズ
int32 sensorvpos; // センサ上の垂直オフセット
int32 sensorvsize; // センサ上の垂直サイズ
};

hdr
メンバ変数のsizeにはこの構造体のサイズを設定します。
option
予約されています。0を指定してください。
binning
記録されている画像のビニング情報を取得
sensorhpos
センサ座標値で記録されている画像の水平オフセットを取得します。
sensorhsize
センサ座標値で記録されている画像の水平サイズを取得します。
sensorvpos
センサ座標値で記録されている画像の垂直オフセットを取得します。
sensorvsize
センサ座標値で記録されている画像の垂直サイズを取得します。

このチャプターの先頭へ戻る