Releases: Optris/otcsdk_downloads
Release list
Version 11.4.10
The release fixes issues with the install packages of release v11.4.9.
Changes
Bugs
- Windows packages
- Added missing debug libraries.
- Added missing Python bindings.
- Linux packages
- Added missing examples.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.
Updates
- 04. Aug 2026 Added packages for
- Debian 12 (amd64, arm64)
- Ubuntu 24.04 (amd64, arm64)
- Ubuntu 22.04 (amd64, arm64)
Version 11.4.9
Features
- Added a
BRGA(blue, red, green, alpha) format to theImageBuilder.
Changes
- When an autonomous camera reports an unsupported PIF device type (digital PIF), the SDK no longer aborts the connection attempt with a generic error message. Instead, it behaves like like no PIF device is attached (
None) and logs the issue cleanly. IRImager::forceFlagEvent()will no longer triggers a flag cycle, if one is already in progress.- If the acquisition of the calibration files fails from one source, the SDK will now move on to the next source instead of aborting the process entirely.
- Modernized the mechanism for downloading calibration files from Optris servers:
- Enabled the SDK to download calibration files for Chinese clients.
- Added the ability to specify fallback servers for calibration file downloads
API Changes
- Extended
ColorFormatenum with new elementBGRA. - Added method
getOffsetAlpha()toImageInfoclass. - Added methods
addCalibrationFallbackServer()andclearCalibrationFallbackServers()to theSdkclass.
Bugs
- Alarms
- Fixed an issue that caused a newly set Alarm mode on a PIF output channel not to output the current state of its associated alarm channels.
- Fixed an issue that caused PIF alarm channels to drop an active alarm signal when the configuration of an associated alarm channel is changed.
- Fixed an issue that prevented the update of the composite alarm membership when the new alarm configuration did not update the alarm input.
- Hardened the alarm channel creation. Failed creations no longer have the potential to crash the SDK and are now cleanly rolled back.
- Bindings
- Fixed memory leaks in the
clone()methods exposed in the Python 3 and C# bindings. - Fixed issues with regards to the propagation of
SDKExceptions to target languages.
- Fixed memory leaks in the
- Calibration file acquisition
- Fixed an issue that prevented the download of the CSV file specifying the size of source correction (SoS) from the on-board memory of Xi 320MTs.
- Fixed multiple issues that caused crashes when downloading corrupt calibration data from the cameras.
- Connections
- Fixed multiple issues that resulted in crashes when multiple USB cameras were simultaneously connected/disconnected on Windows.
- Fixed an issue that resulted in the release of an already claimed camera when it was accessed through a second
IRImagerinstance. - Fixed an issue that caused a deadlock when API calls were made from the
IRImagerClient::onConnect()callback.
- Enumeration
- Fixed an issue that caused a deadlock in the
EnumerationManagerwhen unplugging a camera.
- Fixed an issue that caused a deadlock in the
- Miscellaneous
- Fixed an issue that disrupted the temperature calculations for cameras with G7 optics.
- Fixed multiple issues that caused crashes due to out-of-bounds access.
- Fixed an issue with reading the radial distortion correction (RDC) parameters from the calibration files when they were not all explicitly specified.
- Fixed an issue in the C++ SimpleView example that could shift the drawn cold spot slightly in the wrong direction.
- Corrections in the documentation.
- Fixed an issue that could cause a deadlock when API calls were made from the
IRImageClient::onFrame()andIRImagerClient::onRawFrame()callbacks.
- Process interface (PIF)
- Fixed an issue that prevented
ProcessInterface::setConfig()from applying the desired configuration to the individual PIF channels. - Fixed an issue that prevented the SDK from updating certain PIF channels when the active operation mode was set between the calls to
IRImager::connect()andIRImager::run()/IRImager::runAsync(). - Fixed issues that prevented the update of already set
MeasurementFieldandUncommittedValuechannel configs with different parameters. - Fixes issues that caused unique channels, flag, emissivity and ambient temperature source to get lock in permanently when setting a channel configuration failed.
- Analog input channels in
UncommittedValuemode are now guaranteed to trigger a callback at least once regardless of the current input voltage to ensure dependent components are updated.
- Fixed an issue that prevented
- Windows
- Fixed an issue that caused the Windows uninstaller to delete start menu entries too aggressively.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.
Version 11.3.0
Changes
This update contains API breaking changes. Please read the log carefully.
Features
- Measurement Fields: Add, remove and manipulate measurement fields in the shape of rectangles, ellipses,
polygons and splines with enhanced statistical evaluation. - Alarms: Add, remove and manipulate alarms. Route their signals to PIF output channels.
- Radial distortion correction for all cameras that support it.
- Download the calibration from device for Xi 80s and Xi 410s.
- Custom user data directory: Define a custom directory where the SDK should store configurations,
calibrations, logs and more. - Improved color palettes: Color palettes for false color conversion are now defined in simple
CSVfiles. You can
now add your own palettes viaCSVfiles or programmatically. - Enhanced callbacks: All
IRImagerClientcallbacks now use event classes to bundle the callback data. Several
previous callbacks were compounded into a singleonFrame()callback that is triggered on a per frame basis. The callbacks are now
executed by dedicated threads and no longer block the processing pipeline.
Changes
- C# Bindings
- The SDK namespace was changed from
Optris.OtcSDKtoOptris.OtcSdk.
- The SDK namespace was changed from
- Configuration file
- Incremented version to 3.
- Added sections to accommodate new features:
- Alarms
- Processing
outputdefines which outputs (raw frames, thermal frames or measurement fields) should be generated.max_result_pool_sizesets the maximum number of buffers used to store processing results.
- Added
rdc_modetoopticssection to specifying the mode of radial distortion correction (RDC). - Reworked the
measurement_fieldsection to accommodate the new shapes and features. - Amended the
pifsection- The
analog_outputsanddigital_outputschannelhave a newmodeoptionalarm. - A
channelin theanalog_outputsusing themeasurement_fieldmodenow has to specify which statistical value
of the field should be output via thestatsetting.
- The
- Added a low pass filter for the automatic temperature scaling in the
ImageBuilderresulting in smoother transitions. - You can now specify which processing outputs (raw frames, thermal frames and measurement fields) should be provided by the
SDK. - The startup (re-)calibrations can now be skipped by calling
IRImager::skipStartupCalibration(). - On-device network settings can now be manipulated on an active
IRImagerEthernet connection. Depending on the changes
the SDK will try to retain the active connection. If they are too severe, the SDK will consider the active connection lost
and will trigger the corresponding callbacks. - Framerate sub-sampling can now be set at runtime.
- The SDK now uses an internal pool of reusable buffers to store the results of the processing pipeline. The pool size can be
configured and manipulated at runtime. ImageBuildercan now render the false color images to an external buffer.- The current version of the
Formats.defcan now be accessed via theSdkclass. - The
IRImagernow establishes a device connection even if the calibration files are missing. Refer to this
section in the documentation on the resulting limitations. - Performance improvements in the processing pipeline and the false color image generation.
- Updated API used to download files on Windows.
- Improved thread safety.
- Improved device enumeration.
API changes
- C#
- The SDK namespace was changed from
Optris.OtcSDKtoOptris.OtcSdk.
- The SDK namespace was changed from
- New classes
- Event classes for all the callbacks defined in
IRImagerclient. - Classes facilitating the implementation of alarms and measurement fields.
ProcessingOutputConfigstruct defining what processing outputs should be provided by the SDK.- Dedicated
Versionclass to represent a version. OperationInfoclass holding debug and performance information of the processing pipeline.UncommittedValueStatusclass bundling the status of an uncommitted value generated by a PIF analog input.RangeFandRangeIstructs definingfloatandintegerranges.Vector2fandVector2istructs defining two-dimensionalfloatandintegervectors.PifIndexstruct encapsulating the device and pin indices of a PIF channel.
- Event classes for all the callbacks defined in
- Removed classes
- The iterator classes for
Frames,MeasurementFields andImages were removed due to poor performance.
- The iterator classes for
- DeviceInfo
- Added method
hasFocusMotor().
- Added method
- IRImager
- Added getter and setter for sub-sampled frame rate.
- Added getter for the
IRImagerConfiguration. - Added method to save the current
IRImagerConfigurationconfiguration. run()now returns aboolindicating, if the processing loop started correctly.- Added getter and setter for the
ProcessingOutputConfigsetting. - Added getter and setter for the maximum size of the processing result buffer pool.
- Added method to skip startup (re-)calibration.
- Added getter and setter for the radial distortion correction mode (RDC).
- Added and updated methods to add, remove and manipulate measurement fields.
- Added methods to add, remove, query and manipulate alarms.
- Added method to configure
OperationInforetrieval. - The method
setDeviceNetworkConfig()now returns a boolean indicating whether an active connection could be retained.
- IRImagerClient
- All callbacks feature event classes encapsulating all relevant data as argument.
onThermalFrame(),onMeasurementField()andonFlagStateChange()were compounded into theonFrame()callback that
is triggered once per processed frame (subject to sub-sampling).onConnectionLost()andonConnectionTimeout()were subsumed into theonConnection()callback that offers additional
functionality (e.g. calibration file acquisition).- Added callback
onRawFrame()providing raw unprocessed frame data. - Added callback
onOperationInfo()for receiving debug and performance information about the processing pipeline. - Removed dead callback
onThermalEvent(). - Removed callback
onProcessExit().
- ImageBuilder
- Added methods to query and adjust the low pass filter for the automatic temperature scaling modes.
- Added getters for the filtered minimum and maximum scaling temperatures.
- Added a variant of the
convertTemperatureToPaletteImage()method that renders the false color image to an external buffer. - Renamed enum
PaletteScalingMethodtoTemperatureScalingMode. - Renamed methods:
setManualTemperatureRange()tosetTemperatureScaling()getIsothermalMin()togetTemperatureScalingMin()getIsothermalMax()togetTemperatureScalingMax()setPaletteScalingMethod()tosetTemperatureScalingMode()getPaletteScalingMethod()togetTemperatureScalingMode()
- ProcessInterface
- Added method to get the supported PIF device types by the current camera.
- PifXXChannelConfig
- Added a simple struct
PifIndexto hold the device and pin indices in the configuration structs.
- Added a simple struct
- VersionInfo
- Added getter for the Sdk and
Formats.defversions. - Removed redundant methods that implemented the functionality of the new
Versionclass.
- Added getter for the Sdk and
- Sdk
- Added methods to set, get and clear a custom user data directory.
- Added methods for managing color palettes.
- Added method to set a callback that receives all the log message generated by the SDK.
- TemperatureConverter
- Added method to convert an internal value in float to degree Celsius.
- The heating mode of the sensor chip is now represented by the enum
ChipHeatingModeinstead of an string. - All classes holding configurations are now plain structs without constructors.
Bugs
- Fixed an issue that crashed the SDK while searching for required files when used on Windows without an installation.
- Fixed an issue that caused the SDK to get stuck when calling
IRImager::disconnect()from a callback. - Fixed Python 3 and C# enumeration examples.
- Fixed bindings access to
IRImager::getPif(). - Fixed the handling of invalid temperature in the
ImageBuilder.- Pixels with invalid temperatures are now converted to black in false color images.
- Pixels with invalid temperatures are now longer considered in
- the automatic temperature scaling methods.
- the calculation of mean, min and max regions.
- Fixed the conversion of invalid temperatures in the
TemperatureConverter. - Fixed an issue where dead pixels could lead to a faulty auto skim calibration resulting in seemingly overexposed false color images.
- Fixes to the USB subsystems to improve stability and the reliability of device enumeration.
- Fixes and improvements to the TCP subsystem to better detect and propagate errors to the client and to improve stability.
- Various corrections in the documentation.
- Miscellaneous minor fixes and improvements.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.
Version 10.1.1
Changes
Features
- Enumeration of Ethernet devices on the network.
- Setting of the active operation mode (optics, temperate range and video format) at runtime.
- Xi 320 MT support.
- Support for size of source correction.
- Improved handling of radiation parameters.
Changes
- Configuration file
- Added option
sos_correctiontoopticssection. It enables size of source correction for devices that support it.
- Added option
- Overhaul of the startup/connection process. It features
- an improved arbitration between detected and configured device connection details.
- an automated reconfiguration of the IP address Ethernet devices send their frame data to.
- an automated adjustment of the video format, if an Ethernet capable device uses a different connection interface as configured.
- a rejection of devices that already have an active connection.
- Radiation parameters
- Added a class
RadiationParametersencapsulating a set of emissivity, transmissivity and ambient temperature values. It also features a flag indicating whether the SDK should estimate the ambient temperature based on internal thermal probe readings. It used throughout the API. - Ambient temperature estimates are now updated when the readings of the internal probes from which it is derived changes.
- Radiation parameters are only updated every 500 ms regardless whether their values are set by the PIF, the SDK or a SDK client.
- The
FrameMetadataobject returned by theIRImagerClient::onThermalFrame()callback now contains the radiation parameters and their respective sources that were used to process the frame. - The
MeasurementFieldobjects returned by theIRImagerClient::onMeasurementField()provide these details for their respective fields.
- Added a class
- Video formats
- Clipped video formats (PI 640I and PI 1M) are now centered within their larger formats.
- API
- DeviceInfo
- Added a busy status indicating whether the device already has an active connection.
- Added MAC-Address information for devices on a network.
- Added a connection interface address that returns the endpoint for USB connections or the IP address of the SDK client with Ethernet connections.
- Enumeration Manager
- Added methods to add and remove detectors for USB and Ethernet devices.
- The
EnumerationClientnow features an additional callbackonDeviceDetectionChanged()that is triggered when the details/status of a detected device changes (for example an available device accepted a connection).
- FrameMetadata
- Added getters for the radiation parameters and their respective sources used to process the thermal frame.
- IRImager
- Added setters for the active operation mode.
- Added a setter and getter to en-/disable
- size of source correction.
- high precision temperature measurements.
- temperature range extension.
- Added getters for the device connection details (connection interface, device IP address and reception port).
- Added getters returning the current source of radiation parameters.
- Updated the setter and getter for the radiation parameters of the overall thermal frame.
- IRImagerClient
- Added callback
onVideoFormatChanged()that is triggered upon a new device connection or when the video format changed due to a new active operation mode.
- Added callback
- MeasurementField
- Added getters for the radiation parameters and their respective sources used to process the field.
- Sdk
- Added a method to reconfigure the logger settings.
- DeviceInfo
- Command line tools
- otc_configure_ethernet. Added command line options to find and configure devices on the network.
- otc_find_devices. Added command line options to support Ethernet device detection and updated output.
- Examples
- All examples add a detector for Ethernet devices on the network
192.168.0.0/24by default. - All Simple View examples can now cycle through the available operation modes and display hot and cold spots.
- All examples add a detector for Ethernet devices on the network
- Various internal improvements to the core library and bindings for better performance and thread safety.
Bugs
- Fixed static linking with MSVC on Windows.
- Fixed debug builds with MSVC on Windows.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.
Version 10.1.0
Changes
Features
- Process interface (PIF) support.
- Fail safe.
Changes
- Configuration file
- Added the following new sections to accommodate the new features
- Fail safe
- Measurement fields
- Process Interface
- Incremented file version to 2 but remains compatible with version 1.
- Added the following new sections to accommodate the new features
- Measurement fields
- All measurement field related headers are now located in
otcsdk/fieldsfolder. - Measurement fields are now created with the help of
MeasurementFieldConfigobjects. - Measurement fields can now be assigned a
modethat defines what data point is returned by theMeasurementField::getDataPoint()method.
- All measurement field related headers are now located in
- API
- The active operation mode can now be accessed via the
getActiveOperationMode()method of theIRImager. - The
ThermalFrameandMeasurementFieldclasses now offer acopyTemperaturesTo()method that copies all their thermal data in degree
Celsius to a target array.
- The active operation mode can now be accessed via the
- Language bindings
- The Python 3 bindings now offers access to the string conversion functions for the C++ enums in the SDK. Since C++ enums are converted to
integer constants the names of these functions must be made more specific by adding a prefix. For example, usedeviceTypeToString()for
anyDeviceType_<Value>constant to get the corresponding string representation.
- The Python 3 bindings now offers access to the string conversion functions for the C++ enums in the SDK. Since C++ enums are converted to
- Examples
- All simple view examples now feature the ability to display the FPS and shutter flag state as well as the possibility to trigger a
manual flag cycle. - Reduced the overall console output of the examples.
- All simple view examples now feature the ability to display the FPS and shutter flag state as well as the possibility to trigger a
- Windows
- The default installation path changed to
C:\Program Files\Optris\otcsdk. The installer automatically removes the old version and adjust
all relevant environment variables and registry entries. An empty folder in the old SDK location may persist.
- The default installation path changed to
- Linux
- The OTC SDK Debian packages not longer conflicts with the ones of the IR Direct SDK.
Bugs
- Fixed issues that prevented the SDK from correctly parsing and probing all available download sites for calibration data.
- Fixed an issue that prevented the SDK from performing required automatic skim calibrations.
- Fixed an issue that created pointless dependencies on other language bindings when using CMake to compile C++ SDK applications.
- Fixed a memory access issue that caused the compilation with an active Address Sanitizer to fail.
- Fixed an issue that caused memory access violations in multi-threaded environments with USB cameras while disconnecting.
- Other minor bug fixes and improvements.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.
Version 10.0.1
Changes
Features
- Extended and enhanced the documentation.
- Improved Python 3 bindings downwards compatibility on Windows to Python 3.9 and NumPy 2.0.0.
Bugs
- Fixed an issue that caused the installation of the Debian packages to fail on headless systems.
- The method
EnumerationManger::getDetectedDevices()will no longer block indefinitely, if its argument is set to0. - The Simple View terminal windows will no longer close immediately upon an error.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.
Version 10.0.0
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.