Glossary

ABI

Application Binary Interface

The binary interface used by the linker process, to link compiled libraries. Either defined by the compiler or by a standard agreed to by multiple compilers.

Not to be confused with API, which is the interface used before the code is compiled.

API

Application Programming Interface

Exposed by libraries to compile source code against. Not to be confused with ABI, which is the interface used by the linker - after compilation.

Bonjour

Zero-configuration networking, enabling automatic discovery of devices on a local network.

Camera Property Model

A pre-defined set of properties and/or values for a camera.

CameraSDK

The SDK mediating communication with the camera. One of the SDKs offered from Phase One.

declspec
_P1_SDK_STATIC

Microsoft’s Visual C++ compiler requires functions that are imported from an external dynamically linked library, to be declared using the keyword: __declspec(dllimport). This tells the linker that function will be present at runtime, in a external dynamically loaded library.

In our SDK’s we use the predefine _P1_SDK_STATIC to not prefix library functions with with any declspec in our header files. Thereby enabling static linking.

Debayering
Demosaic
Demosaicing

Conversion from raw Bayer data to RGB data. Demosaicing is also known as “debayering” or “raw conversion”.

Dynamic loader

An OS mechanism that loads dynamic libraries into memory, when the application uses dlopen / LoadLibrary like functionality.

Dynamic linker

An OS service that runs just before an application is launched, automatically resolving all its dynamic library dependencies.

Exceptions

Errors; all error handling in the SDKs is done through exceptions.

Garbage Collector

A runtime mechanism that automatically manages memory allocation and deallocation. Programming languages can include such a mechanism, to free the developer from the task of handling memory.

Notably C, C++ does not have a garbage collector. C# does, however.

Host computer

The user’s computer.

Host system

The operating system on the host computer.

ImageSDK

The SDK relating to processing images. One of the SDKs offered from Phase One.

IQP

IQ protocol - the protocol used to communicate between the camera and the CameraSDK.

Property

A variable in the camera, which can either be read or set atomically through the CameraSDK. E.g. ISO, shutter-time or the serial number.

Property Specification

A description of a property, containing e.g. the property’s name, ID and type.

SDK

Software Development Kit

SONAME

Meta-data field in the ELF file format. Used by shared object files (.so) to state their ABI compatibility and alias name.

In executables the SONAME is used to reference the dynamic libraries.

RPATH

Field in ELF formatted executables (as used on Linux), that directs the dynamic linker where to look for dependent libraries.

Unmanaged code

Code or runtime that does not include a garbage collector or an intermediate representation, used by an execution engine (interpreter or JIT). Examples of unmanaged code are C and C++.

Is the oppersite of managed code which has intermediate representation and / or a garbage collector. Examples are C# (.NET), Python and Java.

Target Build System

In relation to CMake

CMake is a build system compiler, meaning that it translates its CMakeLists.txt files into project files for popular build systems. Such as: Visual Studio C++ projects (.vcxproj), Unix Makefiles, XCode projects, Ninja etc.

When CMake creates Makefiles from your CMakeLists.txt, Makefiles is then the target build system. CMake hands off the actual building process to this target system - also known as the generator in CMake lingo.