画像復号 (デコード) 処理 API
This content is not available in your language yet.
INFINICAM から受信した独自 DCT 圧縮データを、CPU または GPU を使用してラスタ画像データ(Raw 8bit / Bayer 構造)へ復号する API 仕様です。
1. CPU 画像復号 (標準 / ROI / DC 抽出)
Section titled “1. CPU 画像復号 (標準 / ROI / DC 抽出)”PUC_DecodeFrame
Section titled “PUC_DecodeFrame”PUCRESULT WINAPI PUC_DecodeFrame(UCHAR* pSrcBuf, UINT32 nSrcSize, UCHAR* pDstBuf, UINT32 nDstSize);1 フレーム分の圧縮データをフルサイズ(1/1 スケール)のラスタ画像に復号します。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
pSrcBuf |
UCHAR* |
[in] カメラから受信した圧縮データバッファ |
nSrcSize |
UINT32 |
[in] 圧縮データのサイズ (バイト単位) |
pDstBuf |
UCHAR* |
[out] 復号画像(Bayer / 8bit)の格納先バッファ |
nDstSize |
UINT32 |
[in] 復号バッファのサイズ (Width * Height バイト以上) |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / 失敗時は エラーコード一覧 |
PUC_DecodeFrameROI
Section titled “PUC_DecodeFrameROI”PUCRESULT WINAPI PUC_DecodeFrameROI( UCHAR* pSrcBuf, UINT32 nSrcSize, UINT32 nOffsetX, UINT32 nOffsetY, UINT32 nWidth, UINT32 nHeight, UCHAR* pDstBuf, UINT32 nDstSize);圧縮データから指定した部分領域(ROI)のみを抽出して復号します。全系をデコードするより高速に処理できます。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
pSrcBuf |
UCHAR* |
[in] 圧縮データバッファ |
nSrcSize |
UINT32 |
[in] 圧縮データのサイズ |
nOffsetX / nOffsetY |
UINT32 |
[in] 抽出開始座標 (8 の倍数で指定) |
nWidth / nHeight |
UINT32 |
[in] 抽出サイズ (8 の倍数で指定) |
pDstBuf |
UCHAR* |
[out] 復号画像の格納先バッファ |
nDstSize |
UINT32 |
[in] 格納先バッファサイズ (nWidth * nHeight バイト以上) |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / 範囲エラーは PUC_ERROR_ILLEGAL_ARG |
PUC_DecodeFrameDC
Section titled “PUC_DecodeFrameDC”PUCRESULT WINAPI PUC_DecodeFrameDC(UCHAR* pSrcBuf, UINT32 nSrcSize, UCHAR* pDstBuf, UINT32 nDstSize);DCT 圧縮データの DC(直流)成分のみを抽出し、解像度が縦横 1/8 に縮小された高速プレビュー画像を復号します。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
pSrcBuf |
UCHAR* |
[in] 圧縮データバッファ |
nSrcSize |
UINT32 |
[in] 圧縮データのサイズ |
pDstBuf |
UCHAR* |
[out] 1/8 プレビュー画像の格納先バッファ |
nDstSize |
UINT32 |
[in] 格納先バッファサイズ ((Width/8) * (Height/8) バイト以上) |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / 失敗時は エラーコード一覧 |
PUC_SetDecodeThreadCount / PUC_GetDecodeThreadCount
Section titled “PUC_SetDecodeThreadCount / PUC_GetDecodeThreadCount”PUCRESULT WINAPI PUC_SetDecodeThreadCount(UINT32 nCount);PUCRESULT WINAPI PUC_GetDecodeThreadCount(UINT32* pCount);CPU デコード処理で使用する並列スレッド数を設定・取得します。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
nCount / pCount |
UINT32 / UINT32* |
スレッド数 (1 ~ PUC_MAX_DECODE_THREAD_COUNT) |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / 失敗時は エラーコード一覧 |
2. ヘッダー & シーケンス情報抽出
Section titled “2. ヘッダー & シーケンス情報抽出”PUC_GetSequenceNo
Section titled “PUC_GetSequenceNo”PUCRESULT WINAPI PUC_GetSequenceNo(UCHAR* pSrcBuf, UINT32 nSrcSize, UINT32* pSequenceNo);圧縮データ内のヘッダーから、カメラ内部で付与された連続連番(シーケンス番号)を抽出します。コマ落ち検知に利用できます。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
pSrcBuf |
UCHAR* |
[in] 圧縮データバッファ |
nSrcSize |
UINT32 |
[in] 圧縮データのサイズ |
pSequenceNo |
UINT32* |
[out] 抽出されたシーケンス番号の格納先 |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / ヘッダー不正は PUC_ERROR_XFER_DATA_INVALID_HEADER |
3. GPU (CUDA) 加速デコード API
Section titled “3. GPU (CUDA) 加速デコード API”NVIDIA GPU(CUDA)を利用して大解像度・超高フレームレート時のデコード処理をアクセラレーションする API 群です。
PUC_SetupGPUDecode / PUC_FreeGPUDecode
Section titled “PUC_SetupGPUDecode / PUC_FreeGPUDecode”PUCRESULT WINAPI PUC_SetupGPUDecode(UINT32 nWidth, UINT32 nHeight);PUCRESULT WINAPI PUC_FreeGPUDecode();GPU デコード用リソースの初期化および解放を行います。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
nWidth / nHeight |
UINT32 |
[in] デコード対象の画像解像度 (幅 / 高さ) |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / GPUエラー時は PUC_ERROR_GPU_UNINITIALIZE |
PUC_GPUDecodeFrame
Section titled “PUC_GPUDecodeFrame”PUCRESULT WINAPI PUC_GPUDecodeFrame(UCHAR* pSrcBuf, UINT32 nSrcSize, UCHAR* pDstGpuBuf);GPU (CUDA) を使用して 1 フレーム分の圧縮データを高速復号します。
| 引数 / 戻り値 | 型 | 説明 |
|---|---|---|
pSrcBuf |
UCHAR* |
[in] ホスト(CPU)側の圧縮データバッファ |
nSrcSize |
UINT32 |
[in] 圧縮データのサイズ |
pDstGpuBuf |
UCHAR* |
[out] GPU デバイスメモリ上の復号画像格納先ポインタ |
| 戻り値 | PUCRESULT |
成功時は PUC_SUCCEEDED / GPU例外発生時は PUC_ERROR_GPU_DECODE_PROCESS |
C++ 高レベル Wrapper & 応用PUCLib_Wrapper クラスおよび OpenCV / OpenGL / GPU 直接連携クラスの解説
