Content

Headers

This is an overview of how the headers are organised in the installation directory for . Here, the architecture for the Core module is presented, and it is similar to other SDK modules.

Below, <install-prefix> refers to the path where the SDK is installed. The default values are:

  • /usr for Ubuntu

  • C:\Program Files\Prophesee for Windows

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

<install-prefix>/include/metavision/sdk
├── 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 to your application.

Algorithms

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 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(InputIt first, InputIt last, OutputIt d_first)

Pipeline

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 can be found here.

Utils

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