C++ Headers

This is an overview of how the C++ headers are organised in the installation directory for the Core module.

Below, <install-prefix> refers to the path where the SDK is installed. The default values depends on your operating system and installation:

  • Ubuntu: /usr when installing with the packages and /usr/local when building from source code with the deployment step

  • Windows: C:\Program Files\Prophesee

The headers of the SDK Core module are grouped semantically under high-level folders:

├── core
│   ├── algorithms
│   │   ├── detail
│   │   └── ...
│   ├── pipeline
│   │   ├── detail
│   │   └── ...
│   └── utils
│       ├── detail
│       └── ...
└── other modules...

In addition to the headers, each of the folders optionally has a detail folder. The detail folders contain the code that has been removed from the main headers in order to make them more readable. The detail folders include method implementations, helpers, macros, etc. which are not meant to be included directly in your application.


The algorithms folder contains a collection of common algorithms used to process or filter events. These algorithms are, most of the time, implemented as classes with a process_events method working on ranges of events. Similarly to what is used in the C++ STL algorithms (http://www.cplusplus.com/reference/algorithm), we represent the ranges of events by a pair of iterators or pointers for the input and a starting iterator or a pointer for the output.

For example, FlipYAlgorithm implements a simple algorithm that inverts the y coordinates of the input events. It exposes this function template, which takes a pair of iterators as input (first and last) and outputs y-flipped events to the d_first iterator:

template<class InputIt, class OutputIt>
void process_events(InputIt first, InputIt last, OutputIt d_first)


The pipeline folder contains headers that define the Pipeline and BaseStage classes and implementations for a variety of pipeline stages. Pipeline is a class that implements an optionally multi-threaded pipeline, where events are processed in stages. Each stage can receive any type of data as input from the previous stages, and produce data to be fed to the next stages.

For more advanced information on the pipeline, refer to Pipeline. An example of building a simple pipeline is provided as a sample.


The utils folder contains assorted utilities that are deemed generally useful but don’t belong to any other category.