File SpinnakerDefsC.h¶
File List > include > spinc > SpinnakerDefsC.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_C_H
#define FLIR_SPINNAKER_DEFS_C_H
#include "SpinnakerPlatformC.h"
#include <memory.h>
typedef uint8_t bool8_t;
static const bool8_t False = 0;
static const bool8_t True = 1;
typedef void* spinSystem;
typedef void* spinInterfaceList;
typedef void* spinInterface;
typedef void* spinCameraList;
typedef void* spinCamera;
typedef void* spinImage;
typedef void* spinImageList;
typedef void* spinImageProcessor;
typedef void* spinImageStatistics;
typedef void* spinDeviceEventHandler;
typedef void* spinImageEventHandler;
typedef void* spinImageListEventHandler;
typedef void* spinDeviceArrivalEventHandler;
typedef void* spinDeviceRemovalEventHandler;
typedef void* spinInterfaceEventHandler;
typedef void* spinLogEventHandler;
typedef void* spinLogEventData;
typedef void* spinDeviceEventData;
typedef void* spinVideo;
typedef void (*spinDeviceEventFunction)(const spinDeviceEventData hEventData, const char* pEventName, void* pUserData);
typedef void (*spinImageEventFunction)(const spinImage hImage, void* pUserData);
typedef void (*spinImageListEventFunction)(const spinImageList hImage, void* pUserData);
typedef void (*spinArrivalEventFunction)(const spinCamera hCamera, void* pUserData);
typedef void (*spinRemovalEventFunction)(const spinCamera hCamera, void* pUserData);
typedef void (*spinLogEventFunction)(const spinLogEventData hEventData, void* pUserData);
typedef enum _spinError
{
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_CUSTOM_ID = -10000
} spinError;
typedef enum _spinColorProcessingAlgorithm
{
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
} spinColorProcessingAlgorithm;
typedef enum _spinStatisticsChannel
{
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
} spinStatisticsChannel;
typedef enum _spinImageFileFormat
{
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_FORCE_32BITS = 0x7FFFFFFF
} spinImageFileFormat;
typedef enum _spinTLPixelFormatNamespace
{
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_PIXELFORMAT_NAMESPACE_CUSTOM_ID = 1000
} spinTLPixelFormatNamespace;
typedef enum _spinImageStatus
{
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
} spinImageStatus;
typedef enum _spinLogLevel
{
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.
} spinnakerLogLevel;
/* Enumeration of TLType dependent payload types. Introduced in GenTL v1.2 */
typedef enum _spinTLPayloadType
{
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_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
} spinTLPayloadType;
typedef enum _spinTIFFCompressionMethod
{
SPINNAKER_TIFF_COMPRESS_METHOD_NONE = 1, // Save without any compression.
SPINNAKER_TIFF_COMPRESS_METHOD_PACKBITS, // Save using PACKBITS compression.
SPINNAKER_TIFF_COMPRESS_METHOD_DEFLATE, // Save using DEFLATE compression (ZLIB compression).
SPINNAKER_TIFF_COMPRESS_METHOD_ADOBE_DEFLATE, // Save using ADOBE DEFLATE compression
// Save using CCITT Group 3 fax encoding. This is only valid for
// 1-bit images only. Default to LZW for other bit depths.
//
SPINNAKER_TIFF_COMPRESS_METHOD_CCITTFAX3,
// Save using CCITT Group 4 fax encoding. This is only valid for
// 1-bit images only. Default to LZW for other bit depths.
SPINNAKER_TIFF_COMPRESS_METHOD_CCITTFAX4,
SPINNAKER_TIFF_COMPRESS_METHOD_LZW, //< Save using LZW compression.
//
// Save using JPEG compression. This is only valid for 8-bit
// greyscale and 24-bit only. Default to LZW for other bit depths.
//
SPINNAKER_TIFF_COMPRESS_METHOD_JPG
} spinTIFFCompressionMethod;
typedef enum _spinActionCommandStatus
{
SPINNAKER_ACTION_COMMAND_STATUS_OK = 0,
/* 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_NO_REF_TIME = 0x8013,
/* Returned when the scheduled action commands queue is full and the device cannot accept the additional request. */
SPINNAKER_ACTION_COMMAND_STATUS_OVERFLOW = 0x8015,
/* The requested scheduled action command was requested at a point in time that is in the past. */
SPINNAKER_ACTION_COMMAND_STATUS_ACTION_LATE = 0x8016,
/* 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. */
SPINNAKER_ACTION_COMMAND_STATUS_ERROR = 0x8FFF
} spinActionCommandStatus;
typedef struct _spinPNGOption
{
bool8_t interlaced;
unsigned int compressionLevel;
unsigned int reserved[16];
} spinPNGOption;
typedef struct _spinPPMOption
{
bool8_t binaryFile;
unsigned int reserved[16];
} spinPPMOption;
typedef struct _spinPGMOption
{
bool8_t binaryFile;
unsigned int reserved[16];
} spinPGMOption;
typedef struct _spinTIFFOption
{
spinTIFFCompressionMethod compression;
unsigned int reserved[16];
} spinTIFFOption;
typedef struct _spinJPEGOption
{
bool8_t progressive;
unsigned int quality;
unsigned int reserved[16];
} spinJPEGOption;
typedef struct _spinJPG2Option
{
unsigned int quality;
unsigned int reserved[16];
} spinJPG2Option;
typedef struct _spinBMPOption
{
bool8_t indexedColor_8bit;
unsigned int reserved[16];
} spinBMPOption;
typedef struct _spinMJPGOption
{
float frameRate;
unsigned int quality;
unsigned int width;
unsigned int height;
unsigned int reserved[192];
} spinMJPGOption;
typedef struct _spinH264Option
{
float frameRate;
unsigned int width;
unsigned int height;
unsigned int bitrate;
unsigned int reserved[256];
bool8_t useMP4;
/* Crf values range from 1 to 51 */
unsigned int crf;
} spinH264Option;
typedef struct _spinAVIOption
{
float frameRate;
unsigned int width;
unsigned int height;
unsigned int reserved[192];
} spinAVIOption;
typedef struct _spinLibraryVersion
{
unsigned int major;
unsigned int minor;
unsigned int type;
unsigned int build;
} spinLibraryVersion;
typedef struct _actionCommandResult
{
/* IP Address of device that responded to Action Command */
unsigned int DeviceAddress;
/* Action Command status return from device */
spinActionCommandStatus Status;
} actionCommandResult;
#endif // FLIR_SPINNAKER_DEFS_C_H