Skip to content

Software

daviderovell0 edited this page Apr 20, 2020 · 17 revisions

This section provides a detailed description of the software layer of bzzzbz on a high level perspective. The code is documented with Doxygen for details on the specific functions. You can find the HTML generated docuentation in the docs/ folder, or run

doxygen Doxyfile

in the main folder to generate it from the code.

Overview

To meet the real-time requirements of the system, the core functionalities of the software were implemented using C/C++.

Below you can find a conceptual software diagram that outlines single components and their interactions.

Software diagram

The diagram will be used as a reference for the following sections that will outline the implementation of the main functionalities:

  • Video Processing
  • Audio Processing
  • Control Processing

Video Processing

bzzzbz uses OpenGL ES 2.0 to generate visuals. OpenGL is the standard cross-platform API for video generation, used in the majority of interactive visuals (such as game development). The OpenGL ES (Embedded System) is optimised for microcontrollers and systems with limited hardware resources. It is therefore suitable for the Raspberry Pi environment.

The main.cpp program and all the ex_.cpp* programs in the examples/ folder use OpenGL functions to:

  • Initialise the display window and the graphic algorithms: init_resources().
  • Set up an "update screen" function in between frames: onIdle().
  • Render the frame: onDisplay()
  • Start the rendering loop.

The graphical algorithms are called shaders and are defined externally in .glsl files, a language specific to create GPU accelerated graphics. During the init_resources() phase the shaders are "read in" by OpenGL and will be used later during the rendering.

Audio Processing

JACK audio.

Control Processing

Testing

Clone this wiki locally