Rygel is mostly written in Vala with the occasional C glue code where required. Large parts of the code are available via shared-library APIs (such as librygel-server and librygel-renderer-gst) which are generally expected to be used via the documented C or Vala API.

Rygel is based on GUPnP. See the GUPnP API and tutorial documentation and the GUPnP-AV documentation. Rygel’s default media engine is based on GStreamer, but developers may implement alternative Rygel media engines to use other multimedia frameworks.

A slightly more in-depth description of the code structure and program flows can be found at architecture documentation.

Getting the source code

Getting the dependencies

All dependencies should be available from most distributions. The easiest way would be to use the distribution’s way to get the build dependencies for a specific package, such as

apt build-dep rygel

for Debian-based distributions or

dnf builddep rygel

for Fedora etc.

Building the code

meson setup build
ninja -C build

The build is configurable through various build options. Refer to meson_options.txt for all available options.

One useful option during development is -Duninstalled which will allow you run Rygel directly from the build folder without installing it to your system.

Installing the code

To install what you have built above, just run

sudo ninja -C build install

Notes on debugging