File SpinnakerDefs.h¶
File List > include > SpinnakerDefs.h
Go to the documentation of this file
//=============================================================================
// Copyright (c) 2026 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================
#ifndef FLIR_SPINNAKER_DEFS_H
#define FLIR_SPINNAKER_DEFS_H
#include <memory.h>
#include <stdint.h>
#include <string>
#include "SpinnakerPlatform.h"
namespace Spinnaker
{
const uint64_t EVENT_TIMEOUT_NONE = 0; // Do not wait. GetNextImage will return immediately.
const uint64_t EVENT_TIMEOUT_INFINITE = 0xFFFFFFFFFFFFFFFF; // Never timeout. GetNextImage will wait indefinitely.
enum Error
{
SPINNAKER_ERR_SUCCESS = 0,
SPINNAKER_ERR_ERROR = -1001,
SPINNAKER_ERR_NOT_INITIALIZED = -1002,
SPINNAKER_ERR_NOT_IMPLEMENTED = -1003,
SPINNAKER_ERR_RESOURCE_IN_USE = -1004,
SPINNAKER_ERR_ACCESS_DENIED = -1005,
SPINNAKER_ERR_INVALID_HANDLE = -1006,
SPINNAKER_ERR_INVALID_ID = -1007,
SPINNAKER_ERR_NO_DATA = -1008,
SPINNAKER_ERR_INVALID_PARAMETER = -1009,
SPINNAKER_ERR_IO = -1010,
SPINNAKER_ERR_TIMEOUT = -1011,
SPINNAKER_ERR_ABORT = -1012,
SPINNAKER_ERR_INVALID_BUFFER = -1013,
SPINNAKER_ERR_NOT_AVAILABLE = -1014,
SPINNAKER_ERR_INVALID_ADDRESS = -1015,
SPINNAKER_ERR_BUFFER_TOO_SMALL = -1016,
SPINNAKER_ERR_INVALID_INDEX = -1017,
SPINNAKER_ERR_PARSING_CHUNK_DATA = -1018,
SPINNAKER_ERR_INVALID_VALUE = -1019,
SPINNAKER_ERR_RESOURCE_EXHAUSTED = -1020,
SPINNAKER_ERR_OUT_OF_MEMORY = -1021,
SPINNAKER_ERR_BUSY = -1022,
SPINNAKER_ERR_IP_CONFLICT = -1023,
SPINNAKER_ERR_INVALID_CAMERA = -1024,
SPINNAKER_ERR_GENICAM_INVALID_ARGUMENT = -2001,
SPINNAKER_ERR_GENICAM_OUT_OF_RANGE = -2002,
SPINNAKER_ERR_GENICAM_PROPERTY = -2003,
SPINNAKER_ERR_GENICAM_RUN_TIME = -2004,
SPINNAKER_ERR_GENICAM_LOGICAL = -2005,
SPINNAKER_ERR_GENICAM_ACCESS = -2006,
SPINNAKER_ERR_GENICAM_TIMEOUT = -2007,
SPINNAKER_ERR_GENICAM_DYNAMIC_CAST = -2008,
SPINNAKER_ERR_GENICAM_GENERIC = -2009,
SPINNAKER_ERR_GENICAM_BAD_ALLOCATION = -2010,
SPINNAKER_ERR_IM_CONVERT = -3001,
SPINNAKER_ERR_IM_COPY = -3002,
SPINNAKER_ERR_IM_MALLOC = -3003,
SPINNAKER_ERR_IM_NOT_SUPPORTED = -3004,
SPINNAKER_ERR_IM_HISTOGRAM_RANGE = -3005,
SPINNAKER_ERR_IM_HISTOGRAM_MEAN = -3006,
SPINNAKER_ERR_IM_MIN_MAX = -3007,
SPINNAKER_ERR_IM_COLOR_CONVERSION = -3008,
SPINNAKER_ERR_IM_DECOMPRESSION = -3009,
SPINNAKER_ERR_IM_INVALID_IMAGE_TYPE = -3010,
SPINNAKER_ERR_GPU_DECOMPRESSION = -3100,
SPINNAKER_ERR_GPU_NOT_SUPPORTED = -3101,
SPINNAKER_ERR_STEREO_INVALID_PIXEL_FORMAT = -3200,
SPINNAKER_ERR_STEREO_RESOLUTION_MISMATCH = -3201,
SPINNAKER_ERR_STEREO_INVALID_FILENAME = -3202,
SPINNAKER_ERR_STEREO_INVALID_PLY_FILE = -3203,
SPINNAKER_ERR_STEREO_MALLOC = -3104,
SPINNAKER_ERR_STEREO_SPECKLE_FILTER = -3205,
SPINNAKER_ERR_CUSTOM_ID = -10000
};
enum EventType
{
SPINNAKER_EVENT_ARRIVAL_REMOVAL, /* Specifically, the device arrival/removal event */
SPINNAKER_EVENT_DEVICE,
SPINNAKER_EVENT_DEVICE_SPECIFIC,
SPINNAKER_EVENT_NEW_BUFFER,
SPINNAKER_EVENT_NEW_BUFFER_LIST,
SPINNAKER_EVENT_LOGGING_EVENT,
SPINNAKER_EVENT_INTERFACE_ARRIVAL_REMOVAL,
SPINNAKER_EVENT_MODULE,
SPINNAKER_EVENT_UNKNOWN,
};
enum TLPixelFormatNamespace
{
SPINNAKER_TLPIXELFORMAT_NAMESPACE_UNKNOWN = 0, /* GenTL v1.2 */
SPINNAKER_TLPIXELFORMAT_NAMESPACE_GEV = 1, /* GenTL v1.2 */
SPINNAKER_TLPIXELFORMAT_NAMESPACE_IIDC = 2, /* GenTL v1.2 */
SPINNAKER_TLPIXELFORMAT_NAMESPACE_PFNC_16BIT = 3, /* GenTL v1.4 */
SPINNAKER_TLPIXELFORMAT_NAMESPACE_PFNC_32BIT = 4, /* GenTL v1.4 */
SPINNAKER_TLPIXELFORMAT_NAMESPACE_CUSTOM_ID = 1000
};
enum ColorProcessingAlgorithm
{
SPINNAKER_COLOR_PROCESSING_ALGORITHM_NONE,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_NEAREST_NEIGHBOR,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_NEAREST_NEIGHBOR_AVG,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_BILINEAR,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_EDGE_SENSING,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_HQ_LINEAR,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_IPP,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_DIRECTIONAL_FILTER,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_RIGOROUS,
SPINNAKER_COLOR_PROCESSING_ALGORITHM_WEIGHTED_DIRECTIONAL_FILTER
};
enum ImageFileFormat
{
SPINNAKER_IMAGE_FILE_FORMAT_FROM_FILE_EXT = -1,
SPINNAKER_IMAGE_FILE_FORMAT_PGM,
SPINNAKER_IMAGE_FILE_FORMAT_PPM,
SPINNAKER_IMAGE_FILE_FORMAT_BMP,
SPINNAKER_IMAGE_FILE_FORMAT_JPEG,
SPINNAKER_IMAGE_FILE_FORMAT_JPEG2000,
SPINNAKER_IMAGE_FILE_FORMAT_TIFF,
SPINNAKER_IMAGE_FILE_FORMAT_PNG,
SPINNAKER_IMAGE_FILE_FORMAT_RAW,
SPINNAKER_IMAGE_FILE_FORMAT_JPEG12_C,
SPINNAKER_IMAGE_FILE_FORMAT_GENDC,
SPINNAKER_IMAGE_FILE_FORMAT_FORCE_32BITS = 0x7FFFFFFF
};
enum ImageStatus
{
SPINNAKER_IMAGE_STATUS_UNKNOWN_ERROR = -1,
SPINNAKER_IMAGE_STATUS_NO_ERROR =
0,
SPINNAKER_IMAGE_STATUS_CRC_CHECK_FAILED = 1,
SPINNAKER_IMAGE_STATUS_DATA_OVERFLOW = 2,
SPINNAKER_IMAGE_STATUS_MISSING_PACKETS =
3,
SPINNAKER_IMAGE_STATUS_LEADER_BUFFER_SIZE_INCONSISTENT =
4,
SPINNAKER_IMAGE_STATUS_TRAILER_BUFFER_SIZE_INCONSISTENT =
5,
SPINNAKER_IMAGE_STATUS_PACKETID_INCONSISTENT =
6,
SPINNAKER_IMAGE_STATUS_MISSING_LEADER =
7,
SPINNAKER_IMAGE_STATUS_MISSING_TRAILER =
8,
SPINNAKER_IMAGE_STATUS_DATA_INCOMPLETE = 9,
SPINNAKER_IMAGE_STATUS_INFO_INCONSISTENT =
10,
SPINNAKER_IMAGE_STATUS_CHUNK_DATA_INVALID = 11,
SPINNAKER_IMAGE_STATUS_NO_SYSTEM_RESOURCES = 12,
SPINNAKER_IMAGE_STATUS_GENDC_DATA_INVALID =
13,
SPINNAKER_IMAGE_STATUS_GENDC_PART_DATA_INVALID = 14
};
enum StatisticsChannel
{
SPINNAKER_STATISTICS_CHANNEL_GREY,
SPINNAKER_STATISTICS_CHANNEL_RED,
SPINNAKER_STATISTICS_CHANNEL_GREEN,
SPINNAKER_STATISTICS_CHANNEL_BLUE,
SPINNAKER_STATISTICS_CHANNEL_HUE,
SPINNAKER_STATISTICS_CHANNEL_SATURATION,
SPINNAKER_STATISTICS_CHANNEL_LIGHTNESS,
SPINNAKER_STATISTICS_CHANNEL_NUM_CHANNELS
};
enum SpinnakerLogLevel
{
SPINNAKER_LOG_LEVEL_OFF = -1, // Logging is off.
SPINNAKER_LOG_LEVEL_FATAL = 0, // Failures that are non-recoverable without user intervention.
SPINNAKER_LOG_LEVEL_ALERT = 100, // Not used by Spinnaker.
SPINNAKER_LOG_LEVEL_CRIT = 200, // Not used by Spinnaker.
SPINNAKER_LOG_LEVEL_ERROR = 300, // Failures that may or may not be recoverable without user
// intervention (use case dependent).
SPINNAKER_LOG_LEVEL_WARN = 400, // Failures that are recoverable without user intervention.
SPINNAKER_LOG_LEVEL_NOTICE =
500, // Events such as camera arrival and removal, initialization and deinitialization,
// starting and stopping image acquisition, and feature modification.
SPINNAKER_LOG_LEVEL_INFO = 600, // Information about recurring events that are generated regularly such as
// information on individual images.
SPINNAKER_LOG_LEVEL_DEBUG = 700, // Information that can be used to troubleshoot the system.
SPINNAKER_LOG_LEVEL_NOTSET = 800 // Logs everything.
};
/* Image payload types supported by the Spinnaker Image class*/
enum ImagePayloadType
{
SPINNAKER_IMAGE_PAYLOAD_TYPE_UNKNOWN = -1,
SPINNAKER_IMAGE_PAYLOAD_TYPE_IMAGE,
SPINNAKER_IMAGE_PAYLOAD_TYPE_EXTENDED_CHUNK,
SPINNAKER_IMAGE_PAYLOAD_TYPE_JPEG,
SPINNAKER_IMAGE_PAYLOAD_TYPE_LOSSLESS_COMPRESSED,
SPINNAKER_IMAGE_PAYLOAD_TYPE_LOSSY_COMPRESSED,
SPINNAKER_IMAGE_PAYLOAD_TYPE_JPEG_LOSSLESS_COMPRESSED,
SPINNAKER_IMAGE_PAYLOAD_TYPE_RAW_SENSOR1,
SPINNAKER_IMAGE_PAYLOAD_TYPE_RAW_SENSOR2,
SPINNAKER_IMAGE_PAYLOAD_TYPE_RECTIFIED_SENSOR1,
SPINNAKER_IMAGE_PAYLOAD_TYPE_RECTIFIED_SENSOR2,
SPINNAKER_IMAGE_PAYLOAD_TYPE_DISPARITY_SENSOR1,
SPINNAKER_IMAGE_PAYLOAD_TYPE_GENDC_GENERIC, // GenDC generic payload type if no other types match
SPINNAKER_IMAGE_PAYLOAD_TYPE_RANGE_SENSOR1,
SPINNAKER_IMAGE_PAYLOAD_TYPE_RANGE_SENSOR2
};
/* Enumeration of generic transport layer dependent payload types */
enum TLPayloadType
{
SPINNAKER_TLPAYLOAD_TYPE_UNKNOWN = 0, /* GenTL v1.2 */
SPINNAKER_TLPAYLOAD_TYPE_IMAGE = 1, /* GenTL v1.2 */
SPINNAKER_TLPAYLOAD_TYPE_RAW_DATA = 2, /* GenTL v1.2 */
SPINNAKER_TLPAYLOAD_TYPE_FILE = 3, /* GenTL v1.2 */
SPINNAKER_TLPAYLOAD_TYPE_CHUNK_DATA = 4, /* GenTL v1.2, Deprecated in GenTL 1.5*/
SPINNAKER_TLPAYLOAD_TYPE_JPEG = 5, /* GenTL v1.4 */
SPINNAKER_TLPAYLOAD_TYPE_JPEG2000 = 6, /* GenTL v1.4 */
SPINNAKER_TLPAYLOAD_TYPE_H264 = 7, /* GenTL v1.4 */
SPINNAKER_TLPAYLOAD_TYPE_CHUNK_ONLY = 8, /* GenTL v1.4 */
SPINNAKER_TLPAYLOAD_TYPE_DEVICE_SPECIFIC = 9, /* GenTL v1.4 */
SPINNAKER_TLPAYLOAD_TYPE_MULTI_PART = 10, /* GenTL v1.5 */
SPINNAKER_TLPAYLOAD_TYPE_GENDC = 11, /* GenTL v1.6 */
SPINNAKER_TLPAYLOAD_TYPE_CUSTOM_ID = 1000, /* Starting value for GenTL Producer custom IDs*/
SPINNAKER_TLPAYLOAD_TYPE_LOSSLESS_COMPRESSED = SPINNAKER_TLPAYLOAD_TYPE_CUSTOM_ID + 1,
SPINNAKER_TLPAYLOAD_TYPE_LOSSY_COMPRESSED = SPINNAKER_TLPAYLOAD_TYPE_CUSTOM_ID + 2,
SPINNAKER_TLPAYLOAD_TYPE_JPEG_LOSSLESS_COMPRESSED = SPINNAKER_TLPAYLOAD_TYPE_CUSTOM_ID + 3
};
enum ActionCommandStatus
{
SPINNAKER_ACTION_COMMAND_STATUS_OK = 0, /* The device acknowledged the command.*/
SPINNAKER_ACTION_COMMAND_STATUS_NO_REF_TIME =
0x8013, /* The device is not synchronized to a master clock to be used as time reference. Typically used
when scheduled action commands cannot be scheduled for a future time since the reference time
coming from IEEE 1588 is not locked. */
SPINNAKER_ACTION_COMMAND_STATUS_OVERFLOW = 0x8015, /* Returned when the scheduled action commands queue is full
and the device cannot accept the additional request. */
SPINNAKER_ACTION_COMMAND_STATUS_ACTION_LATE =
0x8016, /* The requested scheduled action command was requested at a point in time that is in the past. */
SPINNAKER_ACTION_COMMAND_STATUS_ERROR =
0x8FFF /* Generic Error. Try enabling the Extended Status Code 2.0 bit on gvcp configuration register in
order to receive more meaningful/detailed acknowledge messages from the device. */
};
enum TIFFCompressionMethod
{
SPINNAKER_TIFF_COMPRESS_METHOD_NONE = 1,
SPINNAKER_TIFF_COMPRESS_METHOD_PACKBITS,
SPINNAKER_TIFF_COMPRESS_METHOD_DEFLATE,
SPINNAKER_TIFF_COMPRESS_METHOD_ADOBE_DEFLATE,
SPINNAKER_TIFF_COMPRESS_METHOD_CCITTFAX3,
SPINNAKER_TIFF_COMPRESS_METHOD_CCITTFAX4,
SPINNAKER_TIFF_COMPRESS_METHOD_LZW,
SPINNAKER_TIFF_COMPRESS_METHOD_JPEG
};
enum PixelFormatIntType
{
SPINNAKER_INT_TYPE_UINT8, /* Unsigned 8-bit integer. */
SPINNAKER_INT_TYPE_INT8, /* Signed 8-bit integer. */
SPINNAKER_INT_TYPE_UINT10, /* Unsigned 10-bit integer. */
SPINNAKER_INT_TYPE_UINT10p, /* LSB packed unsigned 10-bit integer. */
SPINNAKER_INT_TYPE_UINT10P, /* MSB packed unsigned 10-bit integer. */
SPINNAKER_INT_TYPE_UINT12, /* Unsigned 12-bit integer (unpacked). */
SPINNAKER_INT_TYPE_UINT12p, /* LSB packed unsigned 12-bit integer. */
SPINNAKER_INT_TYPE_UINT12P, /* MSB packed unsigned 12-bit integer. */
SPINNAKER_INT_TYPE_UINT14, /* Unsigned 14-bit integer (unpacked). */
SPINNAKER_INT_TYPE_UINT16, /* Unsigned 16-bit integer (unpacked). */
SPINNAKER_INT_TYPE_INT16, /* Signed 16-bit integer (unpacked). */
SPINNAKER_INT_TYPE_FLOAT32, /* 32-bit float. */
SPINNAKER_INT_TYPE_UNKNOWN
};
enum BufferOwnership
{
SPINNAKER_BUFFER_OWNERSHIP_SYSTEM, /* Buffers are owned and managed by the library */
SPINNAKER_BUFFER_OWNERSHIP_USER /* Buffers are owned and managed by the user */
};
enum ImageScalingAlgorithm
{
/*
* Uses copies of the nearest source pixels to compute a scaled image.
* The scaling factor used with this algorithm will be rounded to the
* nearest integer (upscaling) or inverse integer (downscaling).
* eg. 1.3 will be rounded to 1 and 0.3 will be rounded to (1 / 3).
*/
SPINNAKER_IMAGE_SCALING_ALGORITHM_NEAREST_NEIGHBOR
};
enum SourceDataRange
{
SPINNAKER_SOURCE_DATA_RANGE_IMAGE_DATA_RANGE,
SPINNAKER_SOURCE_DATA_RANGE_ABSOLUTE_DATA_RANGE,
SPINNAKER_SOURCE_DATA_RANGE_IMAGE_MIN_ABSOLUTE_MAX,
SPINNAKER_SOURCE_DATA_RANGE_ABSOLUTE_MIN_IMAGE_MAX
};
enum HeatmapColor
{
SPINNAKER_HEATMAP_COLOR_BLACK = 1,
SPINNAKER_HEATMAP_COLOR_BLUE = 2,
SPINNAKER_HEATMAP_COLOR_CYAN = 3,
SPINNAKER_HEATMAP_COLOR_GREEN = 4,
SPINNAKER_HEATMAP_COLOR_YELLOW = 5,
SPINNAKER_HEATMAP_COLOR_RED = 6,
SPINNAKER_HEATMAP_COLOR_WHITE = 7
};
enum PolarizationQuadrant
{
SPINNAKER_POLARIZATION_QUADRANT_I0,
SPINNAKER_POLARIZATION_QUADRANT_I45,
SPINNAKER_POLARIZATION_QUADRANT_I90,
SPINNAKER_POLARIZATION_QUADRANT_I135
};
enum CCMColorTemperature
{
SPINNAKER_CCM_COLOR_TEMP_INCANDESCENT_2765K,
SPINNAKER_CCM_COLOR_TEMP_TUNGSTEN_2800K,
SPINNAKER_CCM_COLOR_TEMP_WARM_FLUORESCENT_3000K,
SPINNAKER_CCM_COLOR_TEMP_HALOGEN_3188K,
SPINNAKER_CCM_COLOR_TEMP_COOL_FLUORESCENT_4000K,
SPINNAKER_CCM_COLOR_TEMP_LED_4649K,
SPINNAKER_CCM_COLOR_TEMP_LED_H_AND_E_4649K, /* for samples stained with H&E */
SPINNAKER_CCM_COLOR_TEMP_FLUORESCENT_4665K,
SPINNAKER_CCM_COLOR_TEMP_SUNNY_5000K,
SPINNAKER_CCM_COLOR_TEMP_DAYLIGHT_5034K,
SPINNAKER_CCM_COLOR_TEMP_DAYLIGHT_H_AND_E_5034K, /* for samples stained with H&E */
SPINNAKER_CCM_COLOR_TEMP_CLOUDY_6500K,
SPINNAKER_CCM_COLOR_TEMP_SHADE_8000K,
SPINNAKER_CCM_COLOR_TEMP_GENERAL,
};
enum CCMType
{
SPINNAKER_CCM_TYPE_LINEAR,
SPINNAKER_CCM_TYPE_ADVANCED
};
enum CCMSensor
{
/* Pregius Gen 2 */
SPINNAKER_CCM_SENSOR_IMX226,
SPINNAKER_CCM_SENSOR_IMX249,
SPINNAKER_CCM_SENSOR_IMX250,
SPINNAKER_CCM_SENSOR_IMX252,
SPINNAKER_CCM_SENSOR_IMX253,
SPINNAKER_CCM_SENSOR_IMX255,
SPINNAKER_CCM_SENSOR_IMX264,
SPINNAKER_CCM_SENSOR_IMX265,
SPINNAKER_CCM_SENSOR_IMX267,
SPINNAKER_CCM_SENSOR_IMX273,
SPINNAKER_CCM_SENSOR_IMX287,
SPINNAKER_CCM_SENSOR_IMX296,
SPINNAKER_CCM_SENSOR_IMX297,
SPINNAKER_CCM_SENSOR_IMX304,
SPINNAKER_CCM_SENSOR_IMX327,
SPINNAKER_CCM_SENSOR_IMX334,
SPINNAKER_CCM_SENSOR_IMX342,
SPINNAKER_CCM_SENSOR_IMX367,
SPINNAKER_CCM_SENSOR_IMX387,
SPINNAKER_CCM_SENSOR_IMX392,
/* Pregius Gen 3 */
SPINNAKER_CCM_SENSOR_IMX420,
SPINNAKER_CCM_SENSOR_IMX421,
SPINNAKER_CCM_SENSOR_IMX422,
SPINNAKER_CCM_SENSOR_IMX425,
SPINNAKER_CCM_SENSOR_IMX428,
SPINNAKER_CCM_SENSOR_IMX429,
SPINNAKER_CCM_SENSOR_IMX430,
/* Onsemi */
SPINNAKER_CCM_SENSOR_AR0521
};
enum CCMColorSpace
{
SPINNAKER_CCM_COLOR_SPACE_OFF,
SPINNAKER_CCM_COLOR_SPACE_SRGB
};
enum CCMApplication
{
SPINNAKER_CCM_APPLICATION_GENERIC,
SPINNAKER_CCM_APPLICATION_MICROSCOPY
};
enum SpinGenApiChunkAdapterType
{
SPIN_GENAPI_CHUNK_ADAPTER_GENERIC,
SPIN_GENAPI_CHUNK_ADAPTER_GENDC
};
enum DisparityProcessingMethod
{
SPINNAKER_DISPARITY_PROCESSING_METHOD_NONE = 0,
SPINNAKER_DISPARITY_PROCESSING_METHOD_HIGH_DENSITY,
SPINNAKER_DISPARITY_PROCESSING_METHOD_BALANCED,
SPINNAKER_DISPARITY_PROCESSING_METHOD_HIGH_PERFORMANCE
};
struct PNGOption
{
bool interlaced;
unsigned int compressionLevel;
unsigned int reserved[16];
PNGOption()
{
interlaced = false;
compressionLevel = 6;
memset(reserved, 0, sizeof(reserved));
}
};
struct PPMOption
{
bool binaryFile;
unsigned int reserved[16];
PPMOption()
{
binaryFile = true;
memset(reserved, 0, sizeof(reserved));
}
};
struct PGMOption
{
bool binaryFile;
unsigned int reserved[16];
PGMOption()
{
binaryFile = true;
memset(reserved, 0, sizeof(reserved));
}
};
struct TIFFOption
{
TIFFCompressionMethod compression;
unsigned int reserved[16];
TIFFOption()
{
compression = SPINNAKER_TIFF_COMPRESS_METHOD_LZW;
memset(reserved, 0, sizeof(reserved));
}
};
struct JPEGOption
{
bool progressive;
unsigned int quality;
unsigned int reserved[16];
JPEGOption()
{
progressive = false;
quality = 75;
memset(reserved, 0, sizeof(reserved));
}
};
struct JPG2Option
{
unsigned int quality;
unsigned int reserved[16];
JPG2Option()
{
quality = 16;
memset(reserved, 0, sizeof(reserved));
}
};
struct BMPOption
{
bool indexedColor_8bit;
unsigned int reserved[16];
BMPOption()
{
indexedColor_8bit = false;
memset(reserved, 0, sizeof(reserved));
}
};
struct SIOption
{
unsigned int reserved[16];
SIOption()
{
memset(reserved, 0, sizeof(reserved));
}
};
struct GenDCOption
{
unsigned int reserved[16];
GenDCOption()
{
memset(reserved, 0, sizeof(reserved));
}
};
struct LibraryVersion
{
unsigned int major;
unsigned int minor;
unsigned int type;
unsigned int build;
};
struct ActionCommandResult
{
unsigned int DeviceAddress; /* IP Address of device that responded to Action Command. */
ActionCommandStatus Status; /* Action Command status return from device. */
};
struct CCMSettings
{
CCMApplication Application; /* Informs Spinnaker to use the CCM optimized for specific application.
Ignored when CustomCCMCode is not empty. */
CCMType Type; /* The type of CCM affects the color accuracy and conversion speed.
Ignored when CustomCCMCode is not empty. */
CCMSensor Sensor; /* Informs Spinnaker to use the CCM calibrated for this sensor.
Ignored when CustomCCMCode is not empty. */
CCMColorTemperature ColorTemperature; /* Determines the tone of the color correction to be applied.
Ignored when CustomCCMCode is not empty. */
CCMColorSpace ColorSpace; /* Informs Spinnaker whether to apply gamma transformation. */
std::string CustomCCMCode; /* Custom encrypted CCM provided by FLIR. */
CCMSettings()
{
Application = SPINNAKER_CCM_APPLICATION_MICROSCOPY;
Type = SPINNAKER_CCM_TYPE_LINEAR;
Sensor = SPINNAKER_CCM_SENSOR_IMX250;
ColorTemperature = SPINNAKER_CCM_COLOR_TEMP_LED_4649K;
ColorSpace = SPINNAKER_CCM_COLOR_SPACE_SRGB;
CustomCCMCode = "";
}
};
struct DeviceEventInferenceData
{
uint32_t result; /* inference classification result of the Inference Event */
float confidence; /* inference confidence result of the Inference Event */
uint64_t frameID; /* frame ID associated with the inference result of the Inference Event */
};
struct DeviceEventExposureEndData
{
uint64_t frameID; /* frame ID associated with the Exposure End Event */
};
struct ImagePixel
{
// u represents horizontal position (analogous to x in Cartesian coordinates, and j in image coordinates (i.e.
// col, width))
unsigned int u; // u image coordinate
// v represents vertical position (analogous to y in Cartesian coordinates, and i in image coordinates (i.e.
// row, height))
unsigned int v; // v image coordinate
};
struct Stereo3DPoint
{
float x; // x world coordinate
float y; // y world coordinate
float z; // z world coordinate
unsigned char r; // r color component
unsigned char g; // g color component
unsigned char b; // b color component
ImagePixel pixel; // Image coordinates
};
struct PointCloudParameters
{
// Factor by which to reduce the resolution of the point cloud.
// A decimation factor of 1 means no decimation (full resolution).
unsigned int decimationFactor;
// The left boundary of the Region of Interest (ROI) in image coordinates.
// This represents the minimum U-coordinate in the image (horizontal).
unsigned int ROIImageLeft;
// The top boundary of the Region of Interest (ROI) in image coordinates.
// This represents the minimum V-coordinate in the image (vertical).
unsigned int ROIImageTop;
// The right boundary of the Region of Interest (ROI) in image coordinates.
// This represents the maximum U-coordinate in the image (horizontal).
unsigned int ROIImageRight;
// The bottom boundary of the Region of Interest (ROI) in image coordinates.
// This represents the maximum V-coordinate in the image (vertical).
unsigned int ROIImageBottom;
// The minimum X coordinate of the ROI in world space, representing the left boundary (in meters),
// relative to Sensor 1's image center as the origin.
float ROIWorldCoordinatesXMin;
// The maximum X coordinate of the ROI in world space, representing the right boundary (in meters),
// relative to Sensor 1's image center as the origin.
float ROIWorldCoordinatesXMax;
// The minimum Y coordinate of the ROI in world space, representing the bottom boundary (in meters),
// relative to Sensor 1's image center as the origin.
float ROIWorldCoordinatesYMin;
// The maximum Y coordinate of the ROI in world space, representing the top boundary (in meters),
// relative to Sensor 1's image center as the origin.
float ROIWorldCoordinatesYMax;
// The minimum Z coordinate of the ROI in world space, representing the near boundary (in meters),
// relative to Sensor 1's image center as the origin.
float ROIWorldCoordinatesZMin;
// The maximum Z coordinate of the ROI in world space, representing the far boundary (in meters),
// relative to Sensor 1's image center as the origin.
float ROIWorldCoordinatesZMax;
PointCloudParameters()
{
decimationFactor = 1;
ROIImageLeft = 0;
ROIImageTop = 0;
ROIImageRight = 2048;
ROIImageBottom = 1536;
// Defines a 1km x 1km x 0.5km arbitrary region of interest to ensure sufficient coverage for a single-shot
// point cloud.
ROIWorldCoordinatesXMin = -500.0f;
ROIWorldCoordinatesXMax = 500.0f;
ROIWorldCoordinatesYMin = -500.0f;
ROIWorldCoordinatesYMax = 500.0f;
ROIWorldCoordinatesZMin = 0.0f;
ROIWorldCoordinatesZMax = 500.0f;
}
};
// Parameters related to the stereo camera's geometry and disparity calculations, such as baseline, focal length,
// and principal point
struct StereoCameraParameters
{
float coordinateOffset;
float baseline;
float focalLength;
float principalPointU;
float principalPointV;
float disparityScaleFactor;
float invalidDataValue;
bool invalidDataFlag;
unsigned int totalDisparity;
StereoCameraParameters()
{
coordinateOffset = 0.0f;
baseline = 0.24f;
focalLength = 1300.0f;
principalPointU = 1024.0f;
principalPointV = 768.0f;
disparityScaleFactor = 1 / 64.0f;
invalidDataValue = 0;
invalidDataFlag = true;
totalDisparity = 256;
}
};
} // namespace Spinnaker
#endif // FLIR_SPINNAKER_DEFS_H