Project title/description
The Shmdata library provide a layer to share streams of framed data between processes via shared memory. It supports any kind of data stream: it has been used with multichannel audio, video frames, 3D models, OSC messages, and various others types of data. Shmdata is server-less, but requires applications to link data streams using socket path (e.g. "/tmp/my-shmdata-stream"). Shmdata is very fast and allows processes to access data streams without the need for extra copies.
However, permissions are not supported, and any stream shared on the system with Shmdata is accessible system-wide. The project will enable the possibility for a Shmdata user to configure streams permission using shared memory right setting at the API level.
More detailed description of the project
The project consists in adding methods for support of Unix Shared memory in the C++ core of the library. C++ tests will be needed in order to ensure the core library handles well permission related issues. Possibly, the new feature will be made available in Shmdata python wrapper and Shmdata GStreamer elements.
Expected outcomes
- contribution of the new feature to the library
- update of the Shmdata documentation
Skills required/preferred
- C++
- SysV Shared Memory, Unix Socket programming
- interest/experience with audio/video/datastream programming
- interest/experience with Python C API
- interest/experience with GStreamer element writing
Possible mentors
Nicolas Bouillot, Valentin Laurent
Expected size of project
175 hours
Rating of difficulty
medium