The goal of GenICam® (Generic Interface for Cameras) is to provide a generic programming interface for all kinds of devices (mainly cameras), no matter what interface technology (GigE Vision, USB3 Vision, CoaXPress, Camera Link HS, Camera Link etc.) they are using or what features they are implementing. The result is that the application programming interface (API) will be identical regardless of interface technology.
GenICam is made up of a range of modules:
GenApi (sometimes simply called the GenICam Standard)
This defines the mechanism used to provide the generic API via a self-describing XML file in the device. It is also the name of the reference implementation of GenICam, provided as production-quality code, as part of the GenICam download. Part of GenApi is the Schema, which defines the format of the XML file.
Current version: GenApi 2.1.1 (PDF)
SFNC (Standard Features Naming Convention)
This is the part of GenICam that most users see. It standardizes the name, type, meaning and use of device features, so that devices from different vendors always use the same names for the same functionality. These features are typically shown in a tree view, or can be directly controlled by an application. A related standard is the PFNC (Pixel Format Naming Convention) which defines how to consistently name pixel formats and lists the formats in use. Another extension to SFNC is OOCI (Open Optics Camera Interface) which provides a standard interface for optical components of, or attached to, cameras, no matter what wire interface technology the cameras are built on.
Current versions: SFNC 2.7 (PDF), PFNC 2.4 (PDF)
GenTL (Transport Layer)
This standardizes the transport layer programming interface. It is a low-level API to provide a standard interface to a device regardless of the transport layer (with or without a frame grabber). It allows enumerating devices, accessing device registers, streaming data and delivering asynchronous events. GenTL also has its own SFNC and a Framework for the implementation of GenTL Producers which is available to associated members of the GenICam standard group.
Current versions: GenTL 1.6 (PDF), GenTL SFNC 1.2 (PDF)
GenDC (Data Container)
This standard defines a portable Generic Data Container (GenDC) format. This allows devices to send any form of data (such as 1D, 2D, 3D, multi-spectral, metadata, …) in a Transport Layer Protocol (TLP) independent format and permits to share a common data container format for all the TLP standards.
Current version: GenDC 1.1 (PDF)
GenCP (Control Protocol)
This is a low-level standard to define the packet format for device control and is used by interface standards to save them needing to re-invent a control protocol for each new standard.
Current version: GenCP 1.3 (PDF)
- PFNC: See above in the SFNC section.
- CLProtocol: Adds GenICam to Camera Link. Current version: CLProtocol 1.2 (PDF)
- FWUpdate: A standardized method to update a device’s firmware. Current version: FWUpdate 1.0 (PDF)
The public releases of GenICam and all documentation are available at the GenICam download page.
Starting from 2018, the overall GenICam release has a year.month naming, e.g. 2021.02. Previously the overall releases followed the numbering of the GenApi module.