/** * @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 黑白压缩10bit(USB相机专用) * @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排列压缩10bit(USB相机专用) * @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排列压缩10bit(USB相机专用) * @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排列压缩10bit(USB相机专用) * @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排列压缩10bit(USB相机专用) * @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 黑白压缩12bit(USB相机专用) * @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排列压缩12bit(USB相机专用) * @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排列压缩12bit(USB相机专用) * @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排列压缩12bit(USB相机专用) * @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排列压缩12bit(USB相机专用) * @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 image(Coord3D_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_AC32)4个连续的X坐标32bit,4个连续的32bit,其中从高有效位开始,高8bit是亮度信息,后24bit是Z坐标。 * @see ITKBUFFER_PRM_FORMAT \~english * @brief 3D image * @note 3D image(Calibrated_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_C32)32bit数据,其中从高有效位开始,高8bit是亮度信息,后24bit是Z坐标。 * @see ITKBUFFER_PRM_FORMAT \~english * @brief 3D image * @note 3D image(Calibrated_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