Transitioning from IC Imaging Control 3.5 tisgrabbery
This section contains information about the IC Imaging Control 4 C library from the perspective of a user of the IC Imaging Control 3.x tisgrabber DLL.
Differences between IC Imaging Control 3.x tisgrabber and IC Imaging Control 4
The tisgrabber library was a C wrapper around the C++ core library tisudshl. As such, it never had full feature parity with the C++ or .NET libraries.
In contrast, the IC Imaging Control 4 C Library is the core library of IC Imaging Control 4, giving it the same capabilities as its C++, .NET and Python counterparts.
The IC Imaging Control 4 C Library is available for both Windows and multiple Linux platforms.
While tisgrabber supported DirectShow devices, the IC Imaging Control 4 C Library uses the machine vision standard GenTL as its driver interface. This allows the use of advanced camera features such as asynchronous device events or chunk data.
Transition Hints
Familiar Concepts
Grabber
Like HGRABBER
in tisgrabber, the IC4_GRABBER object represents an opened video capture device as well as its possible enabled data stream.
Changed Concepts
Device Enumeration
Instead of providing only a flat list of device names, IC Imaging Control 4 C Library contains a device enumerator object (IC4_DEVICE_ENUM).
The device enumerator allows enumerating video capture devices and exposes device information through IC4_DEVICE_INFO. It also provides information about the system topology, like information about the network adapters or USB controllers GigEVision or USB3 Vision devices are attached to.
Device Properties
The VCDProperty-based accessor functions using strings as property identifiers were replaced with a object-oriented API. Since device drivers describe their property interfaces via GenICam, the new property API can provide a rich set of information about properties, such as descriptions, display names or unit.
Additionally, properties provide a callback mechanism to notify the program when an aspect of the property such as value or availability changes.
Video Formats, Video Norms, Frame Rates
There no longer are API functions for video format or frame rate enumeration. Instead, the image size and frame rate are configured using the Width
, Height
and AcquisitionFrameRate
device Properties.
Sinks
To access image data, one of the Sinks types has to be used. These provide more control about the buffer handling than the IC_SetFrameReadyCallbackEx
or IC_SnapImage
functions from tisgrabber.
Video Files
Video encoding functionality was detached from the grabber. Instead, create a IC4_VIDEO_WRITER object to save images that were captured using one of the Sinks.
Renamed Concepts
Live Mode
Functions that in tisgrabber related to live mode were renamed to match the GenICam GenTL nomenclature consisting of a two-stage initialization: First, a data stream is established, and then image acquisition is started.
IC_PrepareLive
is roughly equivalent to ic4_grabber_stream_setup().IC_StartLive
is roughly equivalent to ic4_grabber_acquisition_start().IC_SuspendLive
is equivalent to ic4_grabber_acquisition_stop().IC_StopLive
is equivalent to ic4_grabber_stream_stop().IC_IsLive
is equivalent to ic4_grabber_is_acquisition_active().