Skip to content

Releases: Optris/otcsdk_downloads

Version 11.4.10

Choose a tag to compare

@martplas martplas released this 03 Aug 09:37

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

Version 11.4.9 Pre-release
Pre-release

Choose a tag to compare

@martplas martplas released this 24 Jul 13:45

Features

  • Added a BRGA (blue, red, green, alpha) format to the ImageBuilder.

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 ColorFormat enum with new element BGRA.
  • Added method getOffsetAlpha() to ImageInfo class.
  • Added methods addCalibrationFallbackServer() and clearCalibrationFallbackServers() to the Sdk class.

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.
  • 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 IRImager instance.
    • 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 EnumerationManager when unplugging a camera.
  • 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() and IRImagerClient::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() and IRImager::run()/IRImager::runAsync().
    • Fixed issues that prevented the update of already set MeasurementField and UncommittedValue channel 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 UncommittedValue mode are now guaranteed to trigger a callback at least once regardless of the current input voltage to ensure dependent components are updated.
  • 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

Choose a tag to compare

@martplas martplas released this 06 May 11:48

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 CSV files. You can
    now add your own palettes via CSV files or programmatically.
  • Enhanced callbacks: All IRImagerClient callbacks now use event classes to bundle the callback data. Several
    previous callbacks were compounded into a single onFrame() 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.OtcSDK to Optris.OtcSdk.
  • Configuration file
    • Incremented version to 3.
    • Added sections to accommodate new features:
      • Alarms
      • Processing
        • output defines which outputs (raw frames, thermal frames or measurement fields) should be generated.
        • max_result_pool_size sets the maximum number of buffers used to store processing results.
    • Added rdc_mode to optics section to specifying the mode of radial distortion correction (RDC).
    • Reworked the measurement_field section to accommodate the new shapes and features.
    • Amended the pif section
      • The analog_outputs and digital_outputs channel have a new mode option alarm.
      • A channel in the analog_outputs using the measurement_field mode now has to specify which statistical value
        of the field should be output via the stat setting.
  • Added a low pass filter for the automatic temperature scaling in the ImageBuilder resulting 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 IRImager Ethernet 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.
  • ImageBuilder can now render the false color images to an external buffer.
  • The current version of the Formats.def can now be accessed via the Sdk class.
  • The IRImager now 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.OtcSDK to Optris.OtcSdk.
  • New classes
    • Event classes for all the callbacks defined in IRImager client.
    • Classes facilitating the implementation of alarms and measurement fields.
    • ProcessingOutputConfig struct defining what processing outputs should be provided by the SDK.
    • Dedicated Version class to represent a version.
    • OperationInfo class holding debug and performance information of the processing pipeline.
    • UncommittedValueStatus class bundling the status of an uncommitted value generated by a PIF analog input.
    • RangeF and RangeI structs defining float and integer ranges.
    • Vector2f and Vector2i structs defining two-dimensional float and integer vectors.
    • PifIndex struct encapsulating the device and pin indices of a PIF channel.
  • Removed classes
    • The iterator classes for Frames, MeasurementFields and Images were removed due to poor performance.
  • DeviceInfo
    • Added method hasFocusMotor().
  • IRImager
    • Added getter and setter for sub-sampled frame rate.
    • Added getter for the IRImagerConfiguration.
    • Added method to save the current IRImagerConfiguration configuration.
    • run() now returns a bool indicating, if the processing loop started correctly.
    • Added getter and setter for the ProcessingOutputConfig setting.
    • 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 OperationInfo retrieval.
    • 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() and onFlagStateChange() were compounded into the onFrame() callback that
      is triggered once per processed frame (subject to sub-sampling).
    • onConnectionLost() and onConnectionTimeout() were subsumed into the onConnection() 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 PaletteScalingMethod to TemperatureScalingMode.
    • Renamed methods:
      • setManualTemperatureRange() to setTemperatureScaling()
      • getIsothermalMin() to getTemperatureScalingMin()
      • getIsothermalMax() to getTemperatureScalingMax()
      • setPaletteScalingMethod() to setTemperatureScalingMode()
      • getPaletteScalingMethod() to getTemperatureScalingMode()
  • ProcessInterface
    • Added method to get the supported PIF device types by the current camera.
  • PifXXChannelConfig
    • Added a simple struct PifIndex to hold the device and pin indices in the configuration structs.
  • VersionInfo
    • Added getter for the Sdk and Formats.def versions.
    • Removed redundant methods that implemented the functionality of the new Version class.
  • 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 ChipHeatingMode instead 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

Choose a tag to compare

@martplas martplas released this 08 Dec 13:47

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_correction to optics section. It enables size of source correction for devices that support it.
  • 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 RadiationParameters encapsulating 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 FrameMetadata object returned by the IRImagerClient::onThermalFrame() callback now contains the radiation parameters and their respective sources that were used to process the frame.
    • The MeasurementField objects returned by the IRImagerClient::onMeasurementField() provide these details for their respective fields.
  • 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 EnumerationClient now features an additional callback onDeviceDetectionChanged() 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.
    • 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.
  • 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/24 by default.
    • All Simple View examples can now cycle through the available operation modes and display hot and cold spots.
  • 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

Choose a tag to compare

@martplas martplas released this 05 Sep 13:28

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.
  • Measurement fields
    • All measurement field related headers are now located in otcsdk/fields folder.
    • Measurement fields are now created with the help of MeasurementFieldConfig objects.
    • Measurement fields can now be assigned a mode that defines what data point is returned by the MeasurementField::getDataPoint() method.
  • API
    • The active operation mode can now be accessed via the getActiveOperationMode() method of the IRImager.
    • The ThermalFrame and MeasurementField classes now offer a copyTemperaturesTo() method that copies all their thermal data in degree
      Celsius to a target array.
  • 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, use deviceTypeToString() for
      any DeviceType_<Value> constant to get the corresponding string representation.
  • 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.
  • 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.
  • 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

Choose a tag to compare

@martplas martplas released this 12 Jun 10:03

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 to 0.
  • 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

Choose a tag to compare

@martplas martplas released this 23 May 07:59

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.