When Iago told about the Totem plugin based on Grilo , Bastien mentioned that it would be great if Grilo could provide the content over D-Bus. This would have a series of benefits, like sources running in a different space than clients, they could be implementend in any language, and so on. He even told about a specification that we could use.
It looked like a very good idea, and after talking with him and Zeeshan, we began to work on it. Zeeshan is the main author of Rygel, and also the author of the specification Bastien talked about. Rygel is able to consume content from any external application that implements that specification, and expose them over UPnP. Thus, implementing this specification has the added benefit that content can be accessed also through UPnP, using Rygel as intermediate.
So now we are proud to present rygel-grilo (yeah, name is not so cool), a daemon that exposes Grilo content through D-Bus, feeding Rygel and any other interested client with that content. As a picture is meaningful than words, you can see here a screencast of rygel-grilo providing content to Rygel, and Totem playing it through its UPnP plugin.
While implementing rygel-grilo, we detected that the current specification does not fit quite fine for content that is quite dynamic and large. For instance, there is no way of limiting how many elements you want to retrieve from a specific category. And you know that Youtube and other on-line sources can have thousands of elements…
This and other issues were discussed with Zeeshan, who kindly started to work on a new spec more suitable for this kind of providers. The good news is that rygel-grilo supports this new spec too! So we are compatible with the present and the future of Rygel.
This is an example of how cool things can be done with Grilo. Future work is to improve rygel-grilo, and adding a set of libraries that would hide all the D-Bus related stuff. These libraries would facilitate both the creation of new backends (even non-Grilo related) and also the creation of new clients, adding a few aditional services that people could use. Stay tuned for them!