Rygel Documentation

Over the last few months, I have worked on Rygel‘s documentation, along with Krzesimir Nowak and Jens Georg here at Openismus. Most of that work is now finished. It’s been a great investment of time that should be of real benefit to the project.

We’ve massively improved Rygel’s (C) API documentation, which was rather bare after Rygel’s initial split into shared libraries. We had to investigate how the current plugins use the API, and sometimes improved the API in response. (The very latest API documentation improvements will be online soon, when we do a new Rygel release.)

We’ve added both simple and real-world examples, linking to them from sections in the API documentation and describing how those examples work. Those real-world examples are standalone GStreamer-0.10-based versions of the regular Rygel media engine and of its media-export server plugins, plus a GStreamer-0.10 version of the standalone renderer example.The original code for these (now using GStreamer-1.0) was in Vala, like the rest of Rygel, so we had to convert them to C. To maintain functionality, we chose to clean up the horribly-obfuscated C code generated by Vala. That took us a few frustrating weeks to finish but we got it done.

The new Rygel Integration page provides an overview of the APIs that platforms should find interesting, linking to the various documents that we’ve created during this effort. That Integration page is part of a complete overhaul of Rygel’s wiki project pages to make them more attractive and useful.

To help with maintenance of Rygel itself, we now have a Rygel Architecture page with descriptions of Rygel’s program flow in various situations, and a Rygel architecture diagram showing how the various parts of Rygel work together.

 

 

11 thoughts on “Rygel Documentation

  1. “Rygel architecture diagram”: ASCII art – seriously? I guess you do your programming using cheap
    DEC VT100 knock-offs connected to a mini computer via 9600 baud modem lines :)

  2. librygel-server and librygel-renderer is providing the high level api to create media server and media renderer/Player. if so, what is the use of having the different server and renderer plugins. If we are not using the plugins, we will not get any benefits???

    1. The plugins add capabilities to the Rygel server. For instance, to serve files found by Tracker. The library APIs are for implementing your own servers or renderers.
      If you have no wish to create your own servers or renderers then you don’t need to use the API.
      If you have no wish to use the regular Rygel server then the Rygel server’s plugins are of no use to you.

      1. Hi Murray.

        Thank you very much for your quick reply. I got your point. Plugins are just helping to add additional capabiliites if we use only regular rygel server . If i want to create my own renderer using librygel-renderer-gst library, Plugins(playbin) will not be useful. is it right?

        Murray —-If you have no wish to use the regular Rygel server then the Rygel server’s plugins are of no use to you.

        But in the architecture diagram, Third party applications ( Media Player / Simple Device) are using plugins(MPRIS Plugin and Playbin plugin). How it possible?

  3. > But in the architecture diagram, Third party applications ( Media Player / Simple Device) are using
    > plugins(MPRIS Plugin and Playbin plugin). How it possible?

    The older version of the architecture diagram has some hints about this, which I need to add to the new prettier version:
    https://live.gnome.org/action/recall/Rygel/Architecture%20Diagram?action=recall&rev=4

    The “Simple Device” one is easiest. For instance, a networked loudspeaker often doesn’t need anything other than a single renderer plugin to play sound.

  4. Hi Murray,

    You mentioned that “If you have no wish to use the regular Rygel server then the Rygel server?s plugins are of no use to you”

    — Does it mean that Plugins can be used by third party applicaitons only when Rygel server is running ?
    — How 3rd party applications be aware of Rygel Server running status and whether plugins are loaded or not ?
    — Plugins is a seperate process or a library that can be loaded by applications ?

    Thanks,
    Madan

    1. Maybe the rygel maiing list would be more useful for you.

      The answers are:
      Yes.
      It depends on the plugin.
      Rygel Plugins are in the Rygel process. They are libraries that are loaded by Rygel, which should only be loaded by Rygel.

  5. Hi Murray,

    Sorry, but I cannot use Rygel Mailing List due to company restrictions.

    I hope you can understand.

    I have a question regarding GStreamer usage for providing transcoding functionality
    1) In Rygel website, it is mentioned that Media Engine Plugin uses Gstreamer for providing the following functionalities
    – Streaming
    – Transcoding
    – Seeking Capabilities
    a) I would like to know how “Transcoding” is used by “librygel-renderer”. If I try to play wma file from a control point, will “librygel-renderer” use GStreamer to convert to “MP3”, “LPCM” or “AAC” formats and then play the content?
    b) I would like to know how “Transcoding” is used by “librygel-server”. If I try to host wma file in the DMS(media server), will “librygel-server” use GStreamer to convert to “MP3”, “LPCM” or “AAC” formats and then host the content in the DMS(Media Server)?

  6. Hi,

    a) The renderer part will use whatever codecs are installed to decode and playback the content. There’s no transcoding to an intermediate format.
    b) If you host WMA on the server, it will offer transcoded ressources to the file in MP3, AAC (ADTS framing) and LPCM. It will do the transcoding on the fly upon request and not transcode them beforehand.

Leave a Reply

Your email address will not be published. Required fields are marked *