カテゴリ | |
対象製品 |
内部バッファ | 外部バッファ | |
登録・確保 | ライブラリでメモリ確保・バッファ登録 |
ユーザアプリケーションでメモリ確保後、 |
登録解除・解放 | ライブラリでバッファ解除・メモリ解放 |
AcapSetBufferAddress(画像バッファ設定)でバッファ登録解除後、アプリケーションでメモリを解放(※1) |
制限 | - | ・16Byteアラメント(※2) ・DMA転送するサイズ以上を指定 |
[内部バッファの設定]
以下はiniファイル使用時と未使用時の設定例となります。 // 指定したiniファイルの設定値を読み込み内部バッファを確保
AcapSelectFile( hDev, 1, "C:\\AVALDATA\\AcapLib2\\Camera.ini", 0 );
・iniファイル未使用 // 内部バッファ確保に必要なパラメータを設定(Xサイズ,Yサイズ,bit深度,メモリ面数)
AcapSetInfo( hDev, 1, ACL_X_SIZE, -1, 1024 );
AcapSetInfo( hDev, 1, ACL_Y_SIZE, -1, 512 );
AcapSetInfo( hDev, 1, ACL_CAM_BIT, -1, 8 );
AcapSetInfo( hDev, 1, ACL_MEM_NUM, -1, 4 );
// 設定の反映を行い、内部バッファを登録・確保する
AcapReflectParam( hDev, 1 );
[外部バッファの設定]
外部バッファを登録、解放を設定する例となります。
// メモリの確保に必要なパラメータを取得(Xサイズ,Yサイズ,bit深度,メモリ面数)
PUCHAR pBuffer[4];
int nXSize, nYSize, nBitDepth, nBitByte, nMemnum;
AcapGetInfo( hDev, 1, ACL_X_SIZE, 0, &nXSize );
AcapGetInfo( hDev, 1, ACL_Y_SIZE, 0, &nYSize );
AcapGetInfo( hDev, 1, ACL_CAM_BIT, 0, &nBitDepth );
AcapGetInfo( hDev, 1, ACL_MEM_NUM, 0, &nMemnum );
for(int i = 0; i < nMemnum; i++) {
// bitをByteに変更
if(nBitDepth == 8){
nBitByte = 1;
}else if(nBitDepth == 10 || nBitDepth == 12 || nBitDepth == 14){
nBitByte = 2;
}else{
nBitByte = 4;
}
// メモリの確保
pBuffer[i] = (PUCHAR)_aligned_malloc( nXSize * nYSize * nBitByte, 16 );
// メモリの初期化
ZeroMemory(pBitmap[i], nXSize * nYSize * nBitByte);
// 確保したメモリを仮登録
AcapSetBufferAddress( hDev, 1, ACL_IMAGE_PTR, -(i+1), &pBuffer );
}
// バッファ登録をライブラリに反映
AcapReflectParame( hDev, 1 );
//:
//:キャプチャ等処理
//:
// アプリケーション終了
// 登録したメモリの解除
AcapSetBufferAddress( hDev, 1, ACL_IMAGE_PTR, 0, 0 )
// メモリの開放
for(int i = 0; i < nMemnum; i++) {
_aligned_free(&pBuffer[i])
}
Now Loading...