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. Depending on the choice this project will likely include upstreaming dmabuf support to one of the rust crates we are using.
- 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
- Open Broadcaster Software (OBS) plugin
- VAAPI accelerated video encoding / decoding
- gstreamer input / output
- 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
- https://obsproject.com/forum/resources/categories/obs-studio-plugins.6/?page=1
Difficulty: Hard
Hours: Depending on the number and which nodes you choose to implement this can either be a small project (175h) or a large one (350h). If you want to do a small project you will likely only implement basic dmabuf export support and some of the simpler nodes that could use that like V4L2 output. A larger project would implement more and more complicated nodes like VAAPI video encoding / decoding.
Mentors: vup, anuejn
To get in touch with any mentor check the Mentor Contact List.