1108 lines
66 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file IKapCDef.h
* @brief IKapC bindings - macro definitions.
* @author iTek OptoElectronics Ltd
* @par Copyright (c) iTek OptoElectronics Ltd.
* All Rights Reserved
* @date 2017:06:19
* @version <1.0.0.1>
*/
#ifndef _IKAPCDEF_H
#define _IKAPCDEF_H
#include "IKapCStat.h"
#if defined(_MSC_VER) || defined(__BORLANDC__)
# ifdef IKAPC_EXPORTS
# define IKAPC_API __declspec(dllexport)
# else
# define IKAPC_API __declspec(dllimport)
# endif
# define IKAPC_CC _stdcall
# define IKAPC_PACKING 8
#elif defined(__GNUC__) && (__GNUC__ >= 4) && (defined(__linux__) || defined(__APPLE__))
# define IKAPC_API __attribute__((visibility("default")))
# if defined(__i386__)
# define IKAPC_CC __attribute__((stdcall))
# else
# define IKAPC_CC
# endif
# define IKAPC_PACKING 8
#else
# error Unsupported platform
#endif
#define IKAPC_DECLARE_HANDLE(name) \
struct name##_; \
typedef struct name##_ *name
/** @brief A value for invalid / uninitialized handles. */
#ifdef __cplusplus
# define IKAPC_INVALID_HANDLE (0)
#else
# define IKAPC_INVALID_HANDLE ((void *)0)
#endif
/****************************************************************************
* Manager Parameters
****************************************************************************/
#define ITKMANAGER_PRM_FIRST 0
#define ITKMANAGER_PRM(n, size) ((((n) + ITKMANAGER_PRM_FIRST) << 16) | (size))
#define ITKMANAGER_COAXPRESS_12_SUPPORT ITKMANAGER_PRM(0, 4)
#define ITKMANAGER_COAXPRESS_COMMUNICATION_TAG_SUPPORT ITKMANAGER_PRM(1, 4)
#define ITKMANAGER_COAXPRESS_CONTROL_PACKET_MAX_SIZE ITKMANAGER_PRM(2, 4)
#define ITKMANAGER_COAXPRESS_STREAM_PACKET_MAX_SIZE ITKMANAGER_PRM(3, 4)
#define ITKMANAGER_COAXPRESS_RW_REGISTER_MAX_TIME ITKMANAGER_PRM(4, 4)
/****************************************************************************
* Board Parameters
****************************************************************************/
#define ITKBOARD_PRM_FIRST 0
#define ITKBOARD_PRM(n, size) ((((n) + ITKDEV_PRM_FIRST) << 16) | (size))
#define ITKBOARD_PRM_WIDTH ITKBOARD_PRM(0, 4) /**< \brief board width */
#define ITKBOARD_PRM_HEIGHT ITKBOARD_PRM(1, 4) /**< \brief board height */
#define ITKBOARD_PRM_OFFSET_X ITKBOARD_PRM(2, 4) /**< \brief board offset x */
#define ITKBOARD_PRM_OFFSET_Y ITKBOARD_PRM(3, 4) /**< \brief board offset y */
/****************************************************************************
* Device Parameters
****************************************************************************/
#define ITKDEV_PRM_FIRST 0
#define ITKDEV_PRM(n, size) ((((n) + ITKDEV_PRM_FIRST) << 16) | (size))
#define ITKDEV_PRM_HEARTBEAT_TIMEOUT \
ITKDEV_PRM(0, 4) /**< \brief device heartbeat timeout. \
*/
#define ITKDEV_PRM_INTERFACE_TYPE ITKDEV_PRM(1, 4) /**< \brief device interface type. */
/* IKapC device access modes */
#define ITKDEV_VAL_ACCESS_MODE_MONITOR 0 /**< \brief access in monitor mode(read only)*/
#define ITKDEV_VAL_ACCESS_MODE_CONTROL (1 << 0) /**< \brief access in control mode(read/write feature)*/
#define ITKDEV_VAL_ACCESS_MODE_STREAM (1 << 1) /**< \brief access in stream mode(grab image)*/
#define ITKDEV_VAL_ACCESS_MODE_EXCLUSIVE \
(1 << 2) /**< \brief access in exclusive mode(only one process could control device)*/
#define ITKDEV_VAL_ACCESS_MODE_CONTROL_SWITCHOVER (1 << 3) /**< \brief access in stream mode(grab image)*/
/* Device support event type */
#define ITKDEV_VAL_EVENT_TYPE_DEV_REMOVE \
0x00010000 /**< \brief Call the callback function after the device closed. */
#define ITKDEV_VAL_EVENT_TYPE_FEATURE_VALUE_CHANGED \
0x00020000 /**< \brief Call the callback function after the device feature value changed. */
#define ITKDEV_VAL_EVENT_TYPE_FRAME_TRIGGER_IGNORE \
0x00040000 /**< \brief Call when frame trigger ignore happen. */
#define ITKDEV_VAL_EVENT_TYPE_LINE_TRIGGER_IGNORE \
0x00080000 /**< \brief Call when line trigger ignore happen. */
#define ITKDEV_VAL_EVENT_TYPE_FRAME_TRIGGER \
0x00100000 /**< \brief Call when frame trigger happen. */
#define ITKDEV_VAL_EVENT_TYPE_MASK 0xffff0000
/****************************************************************************
* Feature Parameters
****************************************************************************/
/* IKapC feature data types */
#define ITKFEATURE_VAL_TYPE_UNDEFINED 0 /**< \brief feature type invalid. */
#define ITKFEATURE_VAL_TYPE_INT32 1 /**< \brief feature represents an 32bit integer-valued parameter. */
#define ITKFEATURE_VAL_TYPE_INT64 2 /**< \brief feature represents an 64bit integer-valued parameter. */
#define ITKFEATURE_VAL_TYPE_FLOAT 3 /**< \brief feature represents a 32bit floating point-valued parameter. */
#define ITKFEATURE_VAL_TYPE_DOUBLE 4 /**< \brief feature represents a 64bit floating point-valued parameter. */
#define ITKFEATURE_VAL_TYPE_BOOL 5 /**< \brief Node represents a boolean (true/false) parameter. */
#define ITKFEATURE_VAL_TYPE_ENUM 6 /**< \brief Node represents an 'enumeration entry' parameter. */
#define ITKFEATURE_VAL_TYPE_STRING 7 /**< \brief Node represents a string-valued parameter. */
#define ITKFEATURE_VAL_TYPE_COMMAND 8 /**< \brief Node can trigger a command. */
#define ITKFEATURE_VAL_TYPE_CATEGORY 9 /**< \brief Category include other features. */
#define ITKFEATURE_VAL_TYPE_REGISTER 10
/* IKapC feature access mode */
#define ITKFEATURE_VAL_ACCESS_MODE_UNDEFINED 0 /**< \brief Access mode invalid. */
#define ITKFEATURE_VAL_ACCESS_MODE_RW 1 /**< \brief Read and Write. */
#define ITKFEATURE_VAL_ACCESS_MODE_RO 2 /**< \brief Read Only. */
#define ITKFEATURE_VAL_ACCESS_MODE_WO 3 /**< \brief Write Only.*/
#define ITKFEATURE_VAL_ACCESS_MODE_NI 4 /**< \brief Not implemented. */
#define ITKFEATURE_VAL_ACCESS_MODE_NA 5 /**< \brief Not available. */
/* IKapC feature name space */
#define ITKFEATURE_VAL_NAME_SPACE_UNDEFINED 0 /**< \brief Name space invalid. */
#define ITKFEATURE_VAL_NAME_SPACE_CUSTOM 1 /**< \brief Name resides in custom name space. */
#define ITKFEATURE_VAL_NAME_SPACE_STANDARD 2 /**< \brief Name resides in one of the standard name spaces. */
/* IKapC feature representation */
#define ITKFEATURE_VAL_REPRESENTATION_UNDEFINED \
0 /**< \brief Undefined representation. \
*/
#define ITKFEATURE_VAL_REPRESENTATION_LINEAR 1 /**< \brief The feature follows a linear scale. */
#define ITKFEATURE_VAL_REPRESENTATION_LOGARITHMIC 2 /**< \brief The feature follows a logarithmic scale. */
#define ITKFEATURE_VAL_REPRESENTATION_BOOLEAN \
3 /**< \brief The feature is a boolean (can have two values: zero or non-zero). */
#define ITKFEATURE_VAL_REPRESENTATION_PURENUMBER 4 /**< \brief The feature using an edit box only with decimal display.*/
#define ITKFEATURE_VAL_REPRESENTATION_HEXNUMBER 5 /**< \brief The feature using an edit box with hexadecimal display.*/
#define ITKFEATURE_VAL_REPRESENTATION_IPV4ADDRESS 6 /**< \brief The feature showing like an IP address.*/
#define ITKFEATURE_VAL_REPRESENTATION_MACADDRESS 7 /**< \brief The feature showing like a MAC address.*/
/* IKapC feature visibility */
#define ITKFEATURE_VAL_VISIBILITY_UNDEFINED 0 /**< \brief Undefined visibility level. */
#define ITKFEATURE_VAL_VISIBILITY_BEGINNER \
1 /**< \brief Specifies that the feature should be made visible to any user. */
#define ITKFEATURE_VAL_VISIBILITY_EXPERT \
2 /**< \brief Specifies that the feature should be made visible to users with a certain level of expertise. \
*/
#define ITKFEATURE_VAL_VISIBILITY_GURU \
3 /**< \brief Specifies that the feature should be made visible to users with a high level of expertise. \
*/
#define ITKFEATURE_VAL_VISIBILITY_INVISIBLE \
4 /**< \brief Specifies that the feature should not be made visible to any user.This level of visibility is normally \
used on obsolete or internal features. */
/* IKapC feature signed */
#define ITKFEATURE_VAL_SIGN_UNDEFINED \
0 /**< \brief Sign is undefined. \
*/
#define ITKFEATURE_VAL_SIGN_SIGNED 1 /**< \brief The feature is a signed integer of float. */
#define ITKEFATURE_VAL_SIGN_UNSIGNED 2 /**< \brief The feature is an unsigned integer of float. */
/****************************************************************************
* Event info Parameters
****************************************************************************/
#define ITKEVENTINFO_PRM_FIRST 0
#define ITKEVENTINFO_PRM(n, size) ((((n) + ITKDEV_PRM_FIRST) << 16) | (size))
#define ITKEVENTINFO_PRM_TYPE ITKEVENTINFO_PRM(0, 4) /**< \brief Event info type. */
#define ITKEVENTINFO_PRM_FEATURE_NAME ITKEVENTINFO_PRM(1, 128) /**< \brief Event info of feature name. */
#define ITKEVENTINFO_PRM_HOST_TIME_STAMP ITKEVENTINFO_PRM(2, 8) /**< \brief Host time stamp. */
/****************************************************************************
* Buffer Parameters
****************************************************************************/
#define ITKBUFFFER_PRM_FIRST 0
#define ITKBUFFER_PRM(n, size) ((((n) + ITKBUFFFER_PRM_FIRST) << 16) | (size))
#define ITKBUFFER_PRM_FORMAT ITKBUFFER_PRM(0, 4) /**< \brief Buffer pixel format. */
#define ITKBUFFER_PRM_DATA_BIT ITKBUFFER_PRM(1, 4) /**< \brief Buffer pixel data size in byte. */
#define ITKBUFFER_PRM_PIXEL_DEPTH \
ITKBUFFER_PRM(2, 4) /**< \brief Buffer pixel depth. \
*/
#define ITKBUFFER_PRM_WIDTH \
ITKBUFFER_PRM(3, 8) /**< \brief Buffer width. \
*/
#define ITKBUFFER_PRM_HEIGHT \
ITKBUFFER_PRM(4, 8) /**< \brief Buffer height. \
*/
#define ITKBUFFER_PRM_ADDRESS ITKBUFFER_PRM(5, sizeof(void *)) /**< \brief Buffer address. */
#define ITKBUFFER_PRM_HOST_COUNTER_STAMP ITKBUFFER_PRM(6, 8) /**< \brief Buffer host counter stamp. */
#define ITKBUFFER_PRM_STATE \
ITKBUFFER_PRM(7, 4) /**< \brief Buffer state. \
*/
#define ITKBUFFER_PRM_SIGNED ITKBUFFER_PRM(8, 4) /**< \brief Sign of buffer state. */
#define ITKBUFFER_PRM_SIZE \
ITKBUFFER_PRM(9, 8) /**< \brief Buffer size, which is calculated with format: size = width*height*data_bits/8. \
*/
#define ITKBUFFER_PRM_BLOCK_ID \
ITKBUFFER_PRM( \
10, 8) /**< \brief Buffer block id. For GigEVision Camera, the sequence number starts with 1 and wraps at 65535. \
The value 0 has a special meaning and indicates that this feature is not supported by the camera.*/
#define ITKBUFFER_PRM_READY_LINES ITKBUFFER_PRM(11, 8) /**< \brief Buffer current readylines. */
#define ITKBUFFER_PRM_TRANSFER_SIZE ITKBUFFER_PRM(12, 8) /**< \brief Buffer current transfer size. */
#define ITKBUFFER_PRM_RSND_PKT_COUNT ITKBUFFER_PRM(13, 8) /**< \brief Current resend packet count in buffer.*/
#define ITKBUFFER_PRM_LOST_PKT_COUNT ITKBUFFER_PRM(14, 8) /**< \brief Current lost packet count in buffer.*/
#define ITKBUFFER_PRM_ERROR_REASON ITKBUFFER_PRM(15, 4)
#define ITKBUFFER_PRM_FIND_LINE_RESULT ITKBUFFER_PRM(16, 33 * 2 * 8)
/* Buffer data format definitions */
// (32-bit format descriptor)
//-------------------------------------------------------------------------------
// Bits Description
//-------------------------------------------------------------------------------
// 0-7: Index(used by internal implementation as an index to function table)
// 8-15: Number of bits per pixel
// 16-23: Pixel depth
// 24: Color (true if it's a color format)
// 25: Sign (used by monochrome formats)
//-------------------------------------------------------------------------------
#define ITKBUFFER_FORMAT(nDepth, nBits, index) (((nDepth) << 16) | ((nBits) << 8) | index)
// Bit fields
// Color: bit 24
#define ITKBUFFER_FORMAT_MONO 0x00000000 /**< \brief Buffer format is monochrome. */
#define ITKBUFFER_FORMAT_COLOR \
0x01000000 /**< \brief Buffer format is color. \
*/
// Sign: bit 25
#define ITKBUFFER_FORMAT_UNSIGNED 0x00000000 /**< \brief Buffer format is unsigned. */
#define ITKBUFFER_FORMAT_SIGNED 0x02000000 /**< \brief Buffer format is signed. */
// Monochrome data formats
#define ITKBUFFER_VAL_FORMAT_MONO8 \
(ITKBUFFER_FORMAT(8, 8, 0x01) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochrome 8 format. */
#define ITKBUFFER_VAL_FORMAT_MONO10 \
(ITKBUFFER_FORMAT(10, 16, 0x02) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochrome 10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_MONO10PACKED \
(ITKBUFFER_FORMAT(10, 12, 0x03) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochrome 10 packed format. */
#define ITKBUFFER_VAL_FORMAT_MONO12 \
(ITKBUFFER_FORMAT(12, 16, 0x04) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochrome 12 format. \
*/
#define ITKBUFFER_VAL_FORMAT_MONO12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x05) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochrome 12 packed format. */
#define ITKBUFFER_VAL_FORMAT_MONO14 \
(ITKBUFFER_FORMAT(14, 16, 0x06) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochroms 14 format. \
*/
#define ITKBUFFER_VAL_FORMAT_MONO16 \
(ITKBUFFER_FORMAT(16, 16, 0x07) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a monochrome 16 format. \
*/
#define ITKBUFFER_VAL_FORMAT_RGB888 \
(ITKBUFFER_FORMAT(8, 24, 0x08) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color RGB 8-8-8 format. \
*/
#define ITKBUFFER_VAL_FORMAT_RGB101010 \
(ITKBUFFER_FORMAT(10, 48, 0x09) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color RGB 10-10-10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_RGB121212 \
(ITKBUFFER_FORMAT(12, 48, 0x0A) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color RGB 12-12-12 format. \
*/
#define ITKBUFFER_VAL_FORMAT_RGB141414 \
(ITKBUFFER_FORMAT(14, 48, 0x0B) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color RGB 14-14-14 format. \
*/
#define ITKBUFFER_VAL_FORMAT_RGB161616 \
(ITKBUFFER_FORMAT(16, 48, 0x0C) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color RGB 16-16-16 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BGR888 \
(ITKBUFFER_FORMAT(8, 24, 0x0D) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color BGR 8-8-8 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BGR101010 \
(ITKBUFFER_FORMAT(10, 48, 0x0E) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color BGR 10-10-10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BGR121212 \
(ITKBUFFER_FORMAT(12, 48, 0x0F) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color BGR 12-12-12 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BGR141414 \
(ITKBUFFER_FORMAT(14, 48, 0x10) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color BGR 14-14-14 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BGR161616 \
(ITKBUFFER_FORMAT(16, 48, 0x11) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color BGR 16-16-16 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GR8 \
(ITKBUFFER_FORMAT(8, 8, 0x12) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GR 8 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_RG8 \
(ITKBUFFER_FORMAT(8, 8, 0x13) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer RG 8 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GB8 \
(ITKBUFFER_FORMAT(8, 8, 0x14) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GB 8 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_BG8 \
(ITKBUFFER_FORMAT(8, 8, 0x15) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer BG 8 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GR10 \
(ITKBUFFER_FORMAT(10, 16, 0x16) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GR 10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_RG10 \
(ITKBUFFER_FORMAT(10, 16, 0x17) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer RG 10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GB10 \
(ITKBUFFER_FORMAT(10, 16, 0x18) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GB 10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_BG10 \
(ITKBUFFER_FORMAT(10, 16, 0x19) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer BG 10 format. \
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GR10PACKED \
(ITKBUFFER_FORMAT(10, 12, 0x1A) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GR 10 pakced format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_RG10PACKED \
(ITKBUFFER_FORMAT(10, 12, 0x1B) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer RG 10 packed format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_GB10PACKED \
(ITKBUFFER_FORMAT(10, 12, 0x1C) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GB 10 packed format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_BG10PACKED \
(ITKBUFFER_FORMAT(10, 12, 0x1D) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer BG 10 pakced format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_GR12 \
(ITKBUFFER_FORMAT(12, 16, 0x1E) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GR 12 format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_RG12 \
(ITKBUFFER_FORMAT(12, 16, 0x1F) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer RG 12 format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_GB12 \
(ITKBUFFER_FORMAT(12, 16, 0x20) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer GB 12 format. */
#define ITKBUFFER_VAL_FORMAT_BAYER_BG12 \
(ITKBUFFER_FORMAT(12, 16, 0x21) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color bayer BG 12 format.*/
#define ITKBUFFER_VAL_FORMAT_YUV422_8_YUYV \
(ITKBUFFER_FORMAT(8, 16, 0x22) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's YUV 4:2:2 format(YUYV).*/
#define ITKBUFFER_VAL_FORMAT_YUV422_8_UYUV \
(ITKBUFFER_FORMAT(8, 16, 0x23) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a YUV 4:2:2 format(UYUV).*/
#define ITKBUFFER_VAL_FORMAT_COORD3D_C16 \
(ITKBUFFER_FORMAT(16, 16, 0x24) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a coord3D_C16 format.*/
#define ITKBUFFER_VAL_FORMAT_COORD3D_AC16 \
(ITKBUFFER_FORMAT(16, 32, 0x25) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a coord3D_AC16 format.*/
#define ITKBUFFER_VAL_FORMAT_COORD3D_ACR16 \
(ITKBUFFER_FORMAT(16, 48, 0x26) | ITKBUFFER_FORMAT_MONO | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a coord3D_ACR16 format.*/
#define ITKBUFFER_VAL_FORMAT_YUV422_8_UYVY \
(ITKBUFFER_FORMAT(8, 16, 0x27) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's YUV 4:2:2 format(UYVY).*/
#define ITKBUFFER_VAL_FORMAT_MONO8PACKED \
(ITKBUFFER_FORMAT(8, 8, 0x28) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color monochrome 8 packed format. */
#define ITKBUFFER_VAL_FORMAT_RGB888PACKED \
(ITKBUFFER_FORMAT(8, 24, 0x29) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color RGB 8-8-8 packed format. */
#define ITKBUFFER_VAL_FORMAT_BGR888PACKED \
(ITKBUFFER_FORMAT(8, 24, 0x2A) | ITKBUFFER_FORMAT_COLOR | \
ITKBUFFER_FORMAT_UNSIGNED) /**< \brief Indicates it's a color BGR 8-8-8 packed format. */
/**
\~chinese
* @brief PCD图像
* @note PCD图像。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief PCD image
* @note PCD image.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_PCD (ITKBUFFER_FORMAT(32, 128, 0x2B) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GRBG排列压缩12bit
* @note Bayer格式12bit压缩图像像素值按照GRBG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GRBG packed 12bit
* @note Bayer 12bit packed image, pixel values are arranged in memory in GRBG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GR12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x2C) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像RGGB排列压缩12bit
* @note Bayer格式12bit压缩图像像素值按照RGGB顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer RGGB packed 12bit
* @note Bayer 12bit packed image, pixel values are arranged in memory in RGGB order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_RG12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x2D) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GBRG排列压缩12bit
* @note Bayer格式12bit压缩图像像素值按照GBRG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GBRG packed 12bit
* @note Bayer 12bit packed image, pixel values are arranged in memory in GBRG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GB12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x2E) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像BGGR排列压缩12bit
* @note Bayer格式12bit压缩图像像素值按照BGGR顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer BGGR packed 12bit
* @note Bayer 12bit packed image, pixel values are arranged in memory in BGGR order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_BG12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x2F) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief 黑白压缩10bitUSB相机专用
* @note 灰度10bit压缩图像数据。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Monochrome packed 10bit (USB camera specific)
* @note Grayscale 10bit compressed image data
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_MONO10PACKED \
(ITKBUFFER_FORMAT(10, 10, 0x30) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GRBG排列压缩10bitUSB相机专用
* @note Bayer格式10bit压缩图像像素值按照GRBG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GRBG packed 10bit (USB camera specific)
* @note Bayer 10bit packed image, pixel values are arranged in memory in GRBG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_GR10PACKED \
(ITKBUFFER_FORMAT(10, 10, 0x31) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像RGGB排列压缩10bitUSB相机专用
* @note Bayer格式10bit压缩图像像素值按照RGGB顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer RGGB packed 10bit (USB camera specific)
* @note Bayer 10bit packed image, pixel values are arranged in memory in RGGB order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_RG10PACKED \
(ITKBUFFER_FORMAT(10, 10, 0x32) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GBRG排列压缩10bitUSB相机专用
* @note Bayer格式10bit压缩图像像素值按照GBRG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GBRG packed 10bit (USB camera specific)
* @note Bayer 10bit packed image, pixel values are arranged in memory in GBRG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_GB10PACKED \
(ITKBUFFER_FORMAT(10, 10, 0x33) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像BGGR排列压缩10bitUSB相机专用
* @note Bayer格式10bit压缩图像像素值按照BGGR顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer BGGR packed 10bit (USB camera specific)
* @note Bayer 10bit packed image, pixel values are arranged in memory in BGGR order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_BG10PACKED \
(ITKBUFFER_FORMAT(10, 10, 0x34) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GRBG排列14bit
* @note Bayer格式14bit图像像素值按照GRBG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GRBG 14bit
* @note Bayer 14bit image, pixel values are arranged in memory in GRBG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GR14 (ITKBUFFER_FORMAT(14, 16, 0x35) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像RGGB排列14bit
* @note Bayer格式14bit图像像素值按照RGGB顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer RGGB 14bit
* @note Bayer 14bit image, pixel values are arranged in memory in RGGB order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_RG14 (ITKBUFFER_FORMAT(14, 16, 0x36) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GBRG排列14bit
* @note Bayer格式14bit图像像素值按照GBRG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GBRG 14bit
* @note Bayer 14bit image, pixel values are arranged in memory in GBRG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GB14 (ITKBUFFER_FORMAT(14, 16, 0x37) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像BGGR排列14bit
* @note Bayer格式14bit图像像素值按照BGGR顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer BGGR 14bit
* @note Bayer 14bit image, pixel values are arranged in memory in BGGR order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_BG14 (ITKBUFFER_FORMAT(14, 16, 0x38) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GRBG排列16bit
* @note Bayer格式16bit图像像素值按照GRBG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GRBG 16bit
* @note Bayer 16bit image, pixel values are arranged in memory in GRBG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GR16 (ITKBUFFER_FORMAT(16, 16, 0x39) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像RGGB排列16bit
* @note Bayer格式16bit图像像素值按照RGGB顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer RGGB 16bit
* @note Bayer 16bit image, pixel values are arranged in memory in RGGB order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_RG16 (ITKBUFFER_FORMAT(16, 16, 0x3A) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GBRG排列16bit
* @note Bayer格式16bit图像像素值按照GBRG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer GBRG 16bit
* @note Bayer 16bit image, pixel values are arranged in memory in GBRG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_GB16 (ITKBUFFER_FORMAT(16, 16, 0x3B) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像BGGR排列16bit
* @note Bayer格式16bit图像像素值按照BGGR顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
*/
/**
\~english
* @brief Bayer BGGR 16bit
* @note Bayer 16bit image, pixel values are arranged in memory in BGGR order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_BAYER_BG16 (ITKBUFFER_FORMAT(16, 16, 0x3C) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief 黑白压缩12bitUSB相机专用
* @note 灰度12bit压缩图像数据。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Monochrome packed 12bit (USB camera specific)
* @note Grayscale 12bit compressed image data
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_MONO12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x3D) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GRBG排列压缩12bitUSB相机专用
* @note Bayer格式12bit压缩图像像素值按照GRBG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Bayer GRBG packed 12bit (USB camera specific)
* @note Bayer 12bit packed image, pixel values are arranged in memory in GRBG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_GR12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x3E) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像RGGB排列压缩12bitUSB相机专用
* @note Bayer格式12bit压缩图像像素值按照RGGB顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Bayer RGGB packed 12bit (USB camera specific)
* @note Bayer 12bit packed image, pixel values are arranged in memory in RGGB order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_RG12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x3F) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像GBRG排列压缩12bitUSB相机专用
* @note Bayer格式12bit压缩图像像素值按照GBRG顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Bayer GBRG packed 12bit (USB camera specific)
* @note Bayer 12bit packed image, pixel values are arranged in memory in GBRG order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_GB12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x40) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Bayer图像BGGR排列压缩12bitUSB相机专用
* @note Bayer格式12bit压缩图像像素值按照BGGR顺序在内存中排列。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Bayer BGGR packed 12bit (USB camera specific)
* @note Bayer 12bit packed image, pixel values are arranged in memory in BGGR order.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_U3V_BAYER_BG12PACKED \
(ITKBUFFER_FORMAT(12, 12, 0x41) | ITKBUFFER_FORMAT_COLOR | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief 3D图像
* @note 3D图像Coord3D_CR32从高有效位开始前8bit为亮度数据后24bit为未标定的线中心数据。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief 3D image
* @note 3D imageCoord3D_CR32.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_COORD3D_CR32 \
(ITKBUFFER_FORMAT(32, 32, 0x42) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief 3D图像
* @note
3D图像Calibrated_Coord3D_AC324个连续的X坐标32bit4个连续的32bit其中从高有效位开始高8bit是亮度信息后24bit是Z坐标。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief 3D image
* @note 3D imageCalibrated_Coord3D_AC32.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_CALIBRATED_COORD3D_AC32 \
(ITKBUFFER_FORMAT(32, 64, 0x43) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief 3D图像
* @note 3D图像Calibrated_Coord3D_C3232bit数据其中从高有效位开始高8bit是亮度信息后24bit是Z坐标。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief 3D image
* @note 3D imageCalibrated_Coord3D_C32.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_CALIBRATED_COORD3D_C32 \
(ITKBUFFER_FORMAT(32, 32, 0x44) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Data32
* @note 32bit 无符号数。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Data32
* @note Data 32-bit unsigned.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_DATA_32 (ITKBUFFER_FORMAT(32, 32, 0x45) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Data16
* @note 16bit 无符号数。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Data16
* @note Data 16-bit unsigned.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_DATA_16 (ITKBUFFER_FORMAT(16, 16, 0x46) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Data32S
* @note 32bit 有符号数。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Data32S
* @note Data 32-bit signed.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_DATA_32S (ITKBUFFER_FORMAT(32, 32, 0x47) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_SIGNED)
/**
\~chinese
* @brief Data16S
* @note 16bit 有符号数。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Data16S
* @note Data 16-bit signed.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_DATA_16S (ITKBUFFER_FORMAT(16, 16, 0x48) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_SIGNED)
/**
\~chinese
* @brief Data16 with 8bit
* @note 16bit 无符号数和8bit无符号数。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Data16 with 8bit
* @note Data 16-bit unsigned with 8bit unsigned.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_DATA_16_WITH_8U \
(ITKBUFFER_FORMAT(24, 24, 0x49) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
/**
\~chinese
* @brief Data32 with 8bit
* @note 32bit 无符号数和8bit无符号数。
* @see ITKBUFFER_PRM_FORMAT
\~english
* @brief Data32 with 8bit
* @note Data 32-bit unsigned with 8bit unsigned.
* @see ITKBUFFER_PRM_FORMAT
*/
#define ITKBUFFER_VAL_FORMAT_DATA_32_WITH_8U \
(ITKBUFFER_FORMAT(40, 40, 0x50) | ITKBUFFER_FORMAT_MONO | ITKBUFFER_FORMAT_UNSIGNED)
// Macros to access bitfield information
#define ITKBUFFER_FORMAT_INDEX(format) ((format) & 0xFF)
#define ITKBUFFER_FORMATL_DATA_BIT(format) (((format) >> 8) & 0xFF)
#define ITKBUFFER_FORMAT_PIXEL_DEPTH(format) (((format) >> 16) & 0xFF)
#define ITKBUFFER_FORMAT_IS_COLOR(format) (((format) & ITKBUFFER_FORMAT_COLOR) ? 1 : 0)
#define ITKBUFFER_FORMAT_IS_SIGNED(format) (((format) & ITKBUFFER_FORMAT_SIGNED) ? 1 : 0)
/**
\~chinese
* @brief 单个像素深度
* @see ITKBUFFER_FORMAT
*/
/**
\~english
* @brief Single pixel size
* @see ITKBUFFER_FORMAT
*/
#define ITKBUFFER_FORMAT_PIXEL_BITS(format) (((format) >> 8) & 0xFF)
/**
\~chinese
* @brief 单个通道深度
* @see ITKBUFFER_FORMAT (nDepth, nBits, index)
*/
/**
\~english
* @brief Single channel size
* @see ITKBUFFER_FORMAT (nDepth, nBits, index)
*/
#define ITKBUFFER_FORMAT_CHANNEL_BITS(format) (((format) >> 16) & 0xFF)
/**
\~chinese
* @brief 获取图像通道数
* @see ITKBUFFER_FORMAT
*/
/**
\~english
* @brief Get the number of image channels
* @see ITKBUFFER_FORMAT
*/
#define ITKBUFFER_FORMAT_IMAGE_CHANNELS(format) \
((ITKBUFFER_FORMAT_PIXEL_BITS(format) / ITKBUFFER_FORMAT_CHANNEL_BITS(format)) > 3 && \
ITKBUFFER_FORMAT_IS_COLOR(format)) ? \
3 : \
(ITKBUFFER_FORMAT_PIXEL_BITS(format) / ITKBUFFER_FORMAT_CHANNEL_BITS(format))
/* Buffer states */
#define ITKBUFFER_VAL_STATE_EMPTY 0x00000001
#define ITKBUFFER_VAL_STATE_FULL 0x00000002
#define ITKBUFFER_VAL_STATE_OVERFLOW 0x00000004
#define ITKBUFFER_VAL_STATE_UNCOMPLETED 0x00000008
/* Buffer bayer convert alignment options */
#define ITKBUFFER_VAL_BAYER_BGGR 0x00000001
#define ITKBUFFER_VAL_BAYER_RGGB 0x00000002
#define ITKBUFFER_VAL_BAYER_GBRG 0x00000004
#define ITKBUFFER_VAL_BAYER_GRBG 0x00000008
/* File format in buffer load or save.*/
#define ITKBUFFER_VAL_BMP 0
#define ITKBUFFER_VAL_TIFF 1
#define ITKBUFFER_VAL_RAW 2
#define ITKBUFFER_VAL_JPEG 3 // zmLi 20221103
#define ITKBUFFER_VAL_PNG
/****************************************************************************
* Stream Parameters
****************************************************************************/
#define ITKSTREAM_PRM_FIRST 0
#define ITKSTREAM_PRM(n, size) ((((n) + ITKSTREAM_PRM_FIRST) << 16) | (size))
#define ITKSTREAM_PRM_STATUS ITKSTREAM_PRM(0, 4) /**< \brief Stream status. */
#define ITKSTREAM_PRM_SUPPORT_EVENT_TYPE \
ITKSTREAM_PRM(1, 4) /**< \brief Stream event type. */
#define ITKSTREAM_PRM_START_MODE \
ITKSTREAM_PRM(2, 4) /**< \brief Stream start mode. */
#define ITKSTREAM_PRM_TRANSFER_MODE \
ITKSTREAM_PRM(3, 4) /**< \brief Stream transfer mode. */
#define ITKSTREAM_PRM_AUTO_CLEAR \
ITKSTREAM_PRM(4, 4) /**< \brief Stream auto clear enable. */
#define ITKSTREAM_PRM_TIME_OUT \
ITKSTREAM_PRM(5, 4) /**< \brief Stream time out. */
#define ITKSTREAM_PRM_FRAME_RATE \
ITKSTREAM_PRM(6, 4) /**< \brief Stream frame rate. */
#define ITKSTREAM_PRM_GV_PACKET_MAX_RESEND_COUNT \
ITKSTREAM_PRM(7, 4) /**< \brief GigeVision camerea packet max resend times. */
#define ITKSTREAM_PRM_GV_PACKET_RESEND_TIMEOUT \
ITKSTREAM_PRM(8, 4) /**< \brief GigeVision camerea packet resend timeout. */
#define ITKSTREAM_PRM_GV_BLOCK_MAX_RESEND_PACKET_COUNT \
ITKSTREAM_PRM(9, 4) /**< \brief GigeVision camerea block max resend packet count. */
#define ITKSTREAM_PRM_GV_BLOCK_MAX_WAIT_PACKET_COUNT \
ITKSTREAM_PRM(10, 4) /**< \brief GigeVision camerea block max wait packet count. */
#define ITKSTREAM_PRM_GV_BLOCK_RESEND_WINODW_SIZE \
ITKSTREAM_PRM(11, 4) /**< \brief GigeVision camerea block resend window size. */
#define ITKSTREAM_PRM_GV_PACKET_INTER_TIMEOUT \
ITKSTREAM_PRM(12, 4) /**< \brief GigeVision camera packet inter tiemout */
#define ITKSTREAM_PRM_GV_PACKET_POLLING_TIME \
ITKSTREAM_PRM(13, 4) /**< \brief GigeVision camera packet polling time */
#define ITKSTREAM_PRM_GV_KERNEL_BUFFER_COUNT \
ITKSTREAM_PRM(14, 4) /**< \brief GigeVision camera kernel buffer count */
#define ITKSTREAM_PRM_LINE_RATE ITKSTREAM_PRM(15, 4) /**< \brief Stream line rate. */
#define ITKSTREAM_PRM_CURRENT_BUFFER_HANDLE \
ITKSTREAM_PRM(16, sizeof(ITKBUFFER *)) /**< \brief Stream current buffer handle in end of frame callback. */
#define ITKSTREAM_PRM_U3V_BURST_SIZE \
ITKSTREAM_PRM(30, 4) /**< \brief USBVision camerea burst frame size. */
/* Stream status */
#define ITKSTREAM_VAL_STATUS_STOPPED 0x00000000 /**< \brief Stream stop. */
#define ITKSTREAM_VAL_STATUS_ACTIVE 0x00000001 /**< \brief Stream in progress. */
#define ITKSTREAM_VAL_STATUS_PENDING 0x00000002 /**< \brief Stream is pending. */
#define ITKSTREAM_VAL_STATUS_ABORTED 0x00000003 /**< \brief Stream is aborted. */
#define ITKSTREAM_VAL_STATUS_TIMEOUT 0x00000004 /**< \brief Stream is time out. */
/* Stream support event type */
#define ITKSTREAM_VAL_EVENT_TYPE_START_OF_STREAM \
0x00010000 /**< \brief Call the callback function at the start of stream. */
#define ITKSTREAM_VAL_EVENT_TYPE_END_OF_STREAM \
0x00020000 /**< \brief Call the callback function at the end of stream. */
#define ITKSTREAM_VAL_EVENT_TYPE_START_OF_FRAME \
0x00040000 /**< \brief Call the callback function at the start of frame. \
*/
#define ITKSTREAM_VAL_EVENT_TYPE_END_OF_FRAME \
0x00080000 /**< \brief Call the callback function at the end of frame. \
*/
#define ITKSTREAM_VAL_EVENT_TYPE_TIME_OUT \
0x00100000 /**< \brief Call the callback function at the time out of stream. */
#define ITKSTREAM_VAL_EVENT_TYPE_FRAME_LOST \
0x00200000 /**< \brief Call the callback function at the frame lost. \
*/
#define ITKSTREAM_VAL_EVENT_TYPE_TRANSFER_ERROR \
0x00400000u /**< \brief Image data error callback event \
*/
#define ITKSTREAM_VAL_EVENT_TYPE_END_OF_LINE \
0x01000000 /**< \brief Call the callback function at the end of line. \
*/
#define ITKSTREAM_VAL_EVENT_TYPE_MASK 0xffff0000
/* Stream start mode */
#define ITKSTREAM_VAL_START_MODE_NON_BLOCK \
0x00000000 /**< \brief Stream start in asynchronous mode. \
*/
#define ITKSTREAM_VAL_START_MODE_BLOCK \
0x00000001 /**< \brief Stream start in synchronous mode. \
*/
/* Stream transfer mode */
#define ITKSTREAM_VAL_TRANSFER_MODE_ASYNCHRONOUS \
0x00000000 /**< \brief Stream transfer in asynchronous mode. \
*/
#define ITKSTREAM_VAL_TRANSFER_MODE_SYNCHRONOUS \
0x00000001 /**< \brief Stream transfer in synchronous mode. \
*/
#define ITKSTREAM_VAL_TRANSFER_MODE_SYNCHRONOUS_WITH_PROTECT \
0x00000002 /**< \brief Stream transfer in synchronous with protect mode. */
/* Stream auto clear */
#define ITKSTREAM_VAL_AUTO_CLEAR_DISABLE \
0x00000000 /**< \brief Disable stream auto clear. \
*/
#define ITKSTREAM_VAL_AUTO_CLEAR_ENABLE \
0x00000001 /**< \brief Enable stream auto clear. \
*/
// To start continuous stream
#define ITKSTREAM_CONTINUOUS \
((uint32_t)-1) /**< \brief Stream work in continuous mode. \
*/
/****************************************************************************
* View Parameters
****************************************************************************/
#define ITKVIEW_PRM_FIRST 0
#define ITKVIEW_PRM(n, size) ((((n) + ITKVIEW_PRM_FIRST) << 16) | (size))
#define ITKVIEW_PRM_FILP_X \
ITKVIEW_PRM(0, 4) /**< \brief Enable/disable X axis vertical flipping of the source image while the view is displayed. \
*/
#define ITKVIEW_PRM_FILP_Y \
ITKVIEW_PRM(1, 4) /**< \brief Enable/disable Y axis horizontal flipping of the source image while the view is \
displayed. */
#define ITKVIEW_PRM_LSB ITKVIEW_PRM(2, 4) /**< \brief Source image least significant bit. */
#define ITKVIEW_PRM_MSB \
ITKVIEW_PRM(3, 4) /**< \brief Source image most significant bit. \
*/
#define ITKVIEW_PRM_BUFFER_ROI_HEIGHT \
ITKVIEW_PRM(4, 4) /**< \brief Height of the ROI of the buffer associated with the view. */
#define ITKVIEW_PRM_BUFFER_ROI_WIDTH \
ITKVIEW_PRM(5, 4) /**< \brief Width of the ROI of the buffer associated with the view. */
#define ITKVIEW_PRM_BUFFER_ROI_LEFT \
ITKVIEW_PRM(6, 4) /**< \brief Left of the ROI of the buffer associated with the view. */
#define ITKVIEW_PRM_BUFFER_ROI_TOP \
ITKVIEW_PRM(7, 4) /**< \brief Top of the ROI of the buffer associated with the view. */
#define ITKVIEW_PRM_ZOOM_METHOD \
ITKVIEW_PRM(8, 4) /**< \brief Sets/Gets the zooming method. \
*/
#define ITKVIEW_PRM_ZOOM_MAX_RATIO ITKVIEW_PRM(9, 8) /**< \brief Sets/Gets the zooming maximum ratio. */
#define ITKVIEW_PRM_ZOOM_MIN_RATIO ITKVIEW_PRM(10, 8) /**< \brief Sets/Gets the zooming minimum ratio. */
#define ITKVIEW_PRM_HWND \
ITKVIEW_PRM(11, sizeof(void *)) /**< \brief Window handle to be used as the destination view display surface. \
*/
#define ITKVIEW_PRM_HWND_TITLE \
ITKVIEW_PRM(12, 128) /**< \brief Window title to be used as the destination view display surface. \
*/
#define ITKVIEW_PRM_BAYER_MODE \
ITKVIEW_PRM(13, 4) /**< \brief Show bayer image in windows. \
*/
#define ITKVIEW_PRM_BUFFER_CURRENT_INDEX \
ITKVIEW_PRM(14, 4) /**< \brief Show Buffer Current Index \
*/
/* View flip x */
#define ITKVIEW_VAL_FLIP_X_DISABLE 0x00000000
#define ITKVIEW_VAL_FLIP_X_ENABLE 0x00000001
/* View flip y */
#define ITKVIEW_VAL_FLIP_Y_DISABLE 0x00000000
#define ITKVIEW_VAL_FLIP_Y_ENABLE 0x00000001
/* View zoom method */
#define ITKVIEW_VAL_ZOOM_NN \
0x00000000 /**< \brief Nearest neighbor zoom method. \
*/
#define ITKVIEW_VAL_ZOOM_LINEAR \
0x00000001 /**< \brief Linear zoom method. \
*/
#define ITKVIEW_VAL_ZOOM_CUBIC \
0x00000002 /**< \brief Linear zoom method. \
*/
#define ITKVIEW_VAL_ZOOM_AREA \
0x00000003 /**< \brief Area zoom method. \
*/
/* Bayer Mode */
#define ITKVIEW_VAL_BAYER_MODE_NIL \
0x00000000 /**< \brief Bayer Mode NIL. \
*/
#define ITKVIEW_VAL_BAYER_MODE_BGGR \
0x00000001 /**< \brief Bayer Mode BGGR. \
*/
#define ITKVIEW_VAL_BAYER_MODE_RGGB \
0x00000002 /**< \brief Bayer Mode RGGB. \
*/
#define ITKVIEW_VAL_BAYER_MODE_GBRG \
0x00000003 /**< \brief Bayer Mode GBRG. \
*/
#define ITKVIEW_VAL_BAYER_MODE_GRBG \
0x00000004 /**< \brief Bayer Mode GRBG. \
*/
/****************************************************************************
* File Parameters
****************************************************************************/
/* File access mode and open method flags (3rd argument of ItkFileOpen) */
#define ITKFILE_VAL_FA_READ 0x01
#define ITKFILE_VAL_FA_WRITE 0x02
#define ITKFILE_VAL_FA_OPEN_EXISTING 0x00
#define ITKFILE_VAL_FA_CREATE_NEW 0x04
#define ITKFILE_VAL_FA_CREATE_ALWAYS 0x08
#define ITKFILE_VAL_FA_OPEN_ALWAYS 0x10
#define ITKFILE_VAL_FA_OPEN_APPEND 0x30
/* File attribute bits for directory entry (FILINFO.fattrib) */
#define ITKFILE_VAL_AM_RDO 0x01 /* Read only */
#define ITKFILE_VAL_AM_HID 0x02 /* Hidden */
#define ITKFILE_VAL_AM_SYS 0x04 /* System */
#define ITKFILE_VAL_AM_DIR 0x10 /* Directory */
#define ITKFILE_VAL_AM_ARC 0x20 /* Archive */
#endif