Skip to main content.

Agenda for Training Course Multimedia


This three day training provides in-depth information about modern multimedia applications in Embedded Linux systems. It answers frequently asked questions like:

... and much more

Hands-on sessions are performed on target hardware. Please note that this is not an introductory course to multimedia topics. You should already know how these work and have at least some practical experience, too.

Who should attend?

You already use GNU/Linux for your projects and need to perform some challenging multimedia tasks, like high-end graphical output on systems with restricted resources and limited hardware capabilities, complex handling of sensors and cameras, or embedded GPUs which have don;t have optimal Open Source support yet.

The class is aimed at software and system engineers interested in the gory and ugly details of multimedia support in Linux with a solid knowledge of Embedded GNU/Linux and multimedia applications.


All the training material and the presentation is in English.

The work- and reference books typically stay with the students after the training.

Course Outline

  1. Introduction to multimedia in general
    • What are multimedia devices
      • Video -- cameras, mem2mem devices, GPUs
      • Audio -- simple and complex audio devices
    • How multimedia are done today
      • Zero copy, buffer passing around
      • Simple and complex media pipelines
  2. Video and audio pipeline in kernel
    • V4L2 basics, media controller
    • ALSA basics
  3. Video and audio pipeline in userspace
    • Basic tools, v4l2-ctl, yavta, aplay/arecord/alsaloop
    • Interacting with the kernel, v4l devices, DMABUFs, PCM devices
    • Complex multimedia pipelines, gstreamer, ffmpeg
  4. GPU
    • What are GPUs and how they work
    • Interaction between kernel and userspace drivers
    • Mesa3D internals, GPU driver details
    • Debugging and profiling GPU drivers
    • CI for GPU drivers
  5. Tying it all together
    • Importing DMABUFs into GPU textures, zero copy
    • GPU texture formats, efficient memory accesses
    • Interaction between Linux multimedia and Qt5
    • Interaction between Linux multimedia and web browsers (WPE and QtWebengine)