Add support of Unix permission in the Shmdata library (filled)

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