To apply for this task please complete this mandatory coding challenge together with your application: T1227
Applications without matching coding challenge completed will not be considered.
Read our Google Summer of Code Overview page:
https://wiki.apertus.org/index.php/GSoC_Overview
The AXIOM recorder software is envisioned to record moving images from AXIOM cameras via either USB3 or Ethernet. Currently in that software data is copied multiple times which is not optimal in terms of performance. Using the dma-buf subsystem memory redundant copies between CPU and GPU, as well as external systems like vaapi or v4l2 can be avoided and would therefore be suitable performance optimization developments.
**Goals**:
* Make the recorder use dmabufs where possible
* There are several directions that can be explored here, either using a low level framework like `libdrm` to create the buffers or using something like `vulkan` to allocate the buffers.
* After the recorder is made to use dmabuf, this can be used to implement a multitude of additional functionality very efficiently, like for example
* v4l2 output
* a obs plugin
* vaapi accelerated video encoding
* implement one of these
**Prerequisites**:
* Vulkan / GPU / Dmabuf Know-How
* Linux Know-How
**Language Skills**:
* Rust
**Useful** Links:
* https://github.com/apertus-open-source-cinema/axiom-recorder
* https://01.org/linuxgraphics/gfx-docs/drm/driver-api/dma-buf.html
Difficulty: Hard
Mentors: vup
To get in touch with any mentor check the Mentor Contact List.