Sunday 23 November 2014

SoK : UPnP Support in PMC progress report

Well, it's been a great experience working on an awesome project Plasma Media Center. Till now I have learnt a lot of things, from which using C library in C++ using wrappers is the one I really like the most.
As PMC is being ported to Plasma 5, it would be worthless merging it in qt4 based branch of PMC. So, I am making standalone app based on Qt5 and would merge it later on once it gets ported completely.

I have used GUPnP library for this as it is the best and most stable library available to implement UPnP. I have used gupnp-tools as the reference. Till Now I have successfully finished the very first step of my project, i.e. show up the files of the MediaServer. I am able to browse the files on the Media Server successfully and that media is accessible over HTTP protocol using the URLs which is terminal output.
Here's the screen shots of the working application :



In the root of the tree in application, there's Device name being shown up in the first column and respective IDs in the other column. So, we can expand it down and browse the files further present on the media server. As we keep expanding it down, we will be getting URLs of all the audio, video, image and text files of those directories as the output on the terminal.

As I have got the URLs of the media, now I just have to pass those URLs to the existing PMC backend which would automatically be opening up the media file over the HTTP protocol, process up the metadata and shows all the controls like play, pause etc. But as I have said previously, I would be doing that integrating in PMC stuff later on.
If you wanna try it out, you can get the sources from here.

What's Next :
Now I am gonna work on implementation of Media Server in PMC using the same library. Using that, the user would be able to play the media files from PMC to any other device. I am using some boilerplate code from here which includes some of the examples of UPnP Standard Services like ContentDirectory, ConnectionManager and AVTransport.

Season of KDE participants are required to blog about the work progress report but I am really kinda lazy in that and this is my first blog post I have ever made in my life :p

At last I would like to thank my mentors Shantanu and Bhushan, who helped me in each and every problem where I got stuck.

2 comments: