GSoC 2011 Banshee uPnP server/client integration
First off I must say its such an honor being picked by the mono community for this years Google summer of Code. The project will be adding uPnP Client/Server support to the incredible Banshee Media Player, an application I love and use very much in my daily life.
My main media consumption consists of Banshee for playing music and XBMC for video playback (on my TV), this is why I feel uPnP would be such an interesting project as it would allow me to have the same content available with the same standard on all devices and only needing to manage them in one location and from one application.
The goal of the project is as said to integrate a uPnP server and client into Banshee, making it possible to both share media and consume media from other devices simply and dynamically. Banshee is already a very simple application to use in managing media and given that more and more portable devices supports uPnP, it can and should easily serve them with that media. My proposal can be viewed fully here but I will go through the key points here nevertheless.
Every day it becomes more and more common to have multiple computers in a household and even more so to have multiple portable devices like tablets, phones and even laptops which all may have media to share or media you want them to be able to acquire from a local server. Given that media is such an integral part of many users’ use of a desktop, the consuming of this media needs to fit the dynamic lifestyle we expect these devices to conform to.
- A friend comes over to your house with his Banshee powered laptop bursting with songs he wants you to hear. Instead of copying these files over to you or plugging his laptop into the stereo, you simply ask him to connect to your network, navigate to his computer from yours, and starts the playback.
- You sit out on the porch with your cellphone, listening to the music files on the phone’s local drive. Your banshee powered laptop is already started in a room all the way on the other side of your home, and you get the urge to listen to a song you do not yet have synced to your device. You simply start the uPnP client on the device and begin listening to what your laptop has shared.
- You have a few friends over to watch a movie which is sitting on your Banshee powered laptop. Instead of watching this movie on the small laptop screen, you start your uPnP powered TV and navigate to the movie. Playback starts at the touch of a button.
This proposal consists of two separate parts, one being the client and one being the server. Let us begin with the server. First and foremost I must consider the fact that most users who intend to share media will wish to continue sharing the media even while Banshee isn’t running. As such, Banshee role is state what to be shared and the metadata regarding it where some other instance share the files. Given this requirement it might make sense to leverage a session wide server and with the guidance of the nice people from Banshee and Gnome I have been pointed to the Gnome project Rygel. As noted in the mailing list communication, when the instance hooked up to D-Bus disconnects, the media stops being shared, this is by design from Rygel, and, as suggested, this could be circumvented by creating a thin client feeding Rygel the data which Banshee controls.
As for the client, a C# project called mono uPnP exists which can be used to power Banshee to acquire media in a manner similar to many of the other extensions found in Banshee already. While this project (and Banshee alone) most likely can power the server part as well, it may make more sense to use Rygel. That aspect is something which will need further discussion and examination, which is why the following timeline has Server Implementation scheduled for a later stage of programming. The intervening time will allow for all necessary discussion.
I hope that after this summer is done Banshee will be able to play along nicely with all your other media devices. During the summer I will keep you all up to date with progress on this blog. Most of the stuff will most likely be very technical but isn’t that the most interesting anyways :)
Till next time, yours truly, Tobias.