GoSoC 2009 UPnP Proposal -first draft

Bart Cerneels bart.cerneels at essensium.com
Fri Mar 6 16:02:46 UTC 2009


I'll give my feedback since I'll be the mentor for this subject. In my day job 
I have/still work on a DLNA DMC implementation.

Sorry for the later then usual response. I was skiing in Austria and now am at 
CeBIT.

On Thu, Mar 5, 2009 at 10:40 PM, Jeff Balinsky <jebsky at gmail.com> wrote:
> Hello again
>
> This is a draft of a gosoc project proposal that i am posting for feedback.
>
> I have never written anything like this and was semi-unsure when I was
> writing. So there is frequent use of subjective language that I will later
> (hopefully) remove.
>
> It also could be more formally written.
>
> all feedback welcome.
>
> Jeff
>
> Amarok UPnP support
>
> Jeff Balinsky
>
> Summary
>
> Many modern home entertainment devices (most notably the Xbox 360 and PS3)
> have the ability to play content of of UPnP shares. In the public domain
> there are several backends allowing a user to set up a mediaserver on their
> linux pc (coherence, ushare) and others allowing the browsing of and
> rendering of those shares(coherence, djmount).
This is already a very well written situation sketch of the UPnP "market". But 
in order to be complete you should definitely mention DLNA and it's device 
classes.
You'll notice that I tend to use the DLNA terminology (Digital Media Server, 
Digital Media Renderer, Digital Media Controller) most of the time.

>
> Primarily, I will add the ability to use amarok to share music in the amarok
> library as an UPnP share creating a UPnP MediaServer DCP . A main goal while
> doing this will be making configuration as easy as possible.
As mentioned on [1] this will be your second target. Accessing DMS' on the 
network is a lot higher on the wish list.

>
> Secondarily, I will add the ability to use amarok as an UPnP MediaServer
> ControlPoint which would allow the playing of media off other shares.
So this second target would use the local Amarok Collection (SQL) and expose 
it as a DMS. My target for this is full DLNA compliance, which means you'll 
have to include album art, support sorting and filtering, etc.

>
> Details
>
> In my experience on the user end using UPnP and linux (I have used ushare to
> share movies to my Xbox 360) things are not seamless. There is no graphical
> way to configure ushare just a .conf. When something in the filesystem
> changes (say I add a movie) I must manually restart the server. Wifi is also
> hit or miss. I will aim to address all of these issues.
ushare was never meant to be userfriendly, it's an offshoot of geexbox, the 
mediacenter project.
But this does not really influence this GSoC proposal.

>
> As far as amarok is concerned one of the biggest issues with sharing
> collections will be unsupported files. If I try to share music with ushare
> between unsupported files and weird meta tags it renders the graphical
> browsing on my 360 useless. This can be addressed by incorporating the
> ability to only share a subset of the amarok collection via UPnP. A possible
> preexisting framework for this would be to use a playlist for the shared
> media. Another possibility would be to have preset filters for popular
> devices.
In order to handle the unsupported formats problem you'll need to use on the 
fly transcoding. Coherence already does this so it's just a matter of using 
that framework correctly.
You'll probably need to work with the Coherence developers (#coherence) to 
extend the DBUS-API with this.

>
> Djmount discovers automatically all UPnP AV Media Servers a network and
> makes the content available in a directory tree. A backend such as this
> could be used to allow amarok to browse and play media off of other servers.
> Servers may be able to be browsed right under the local collection in the
> collection browser.
I strongly suggest to investigate Coherence. It will be used by kdelibs for a 
KIO slave and is multiplatform. It's DBUS API ensures we won't need to depend 
on python:

>
> Implementation?
>
> My guess is that I would implement this as two scripts. This is unless this
> is better implemented in the main options dialog
No scripts, at least not for part 1.
For the DMS browsing you will need to write a new Collection and Media:* 
classes. Look in the Amarok code for multiple examples.

Amarok as a DMS functionality could be implemented as a script. I would 
actually prefer this since those can be optional enabled and be easily 
updated. A C++ plug-in would need an extra page in the config dialog.
>
> Fuzzy Work Timeline
>
> GoSoC Has two evaluation deadlines midterm in early July and final in late
> August thus I split this in two parts
>
> First Part – Make it work
>
> Functionality – get to the point where amarok can share and play UPnP
>
> Second Part
>
> Creme Filling – This is where things get pretty. Make it so a 4th grader can
> configure with a easy gui. Add fun features(subsets etc, automatic port
> forwarding if necessary). While I am in there so to speak it may be easy to
> use the same server to add simple directory based sharing of other *gasp*
> non audio sharing.

From my proposal [1] I suggest to split the available time in 3 major parts

1. DMC (DMS browsing): is absolutely required and needs to work 100%
2. DMS (exporting Collection to network): can live with it not being done at 
the end of the GSoC
3. Controlling DMR's: cherry on cake, but probably won't be used that much.

>
> Qualifications
>
> In the fall of '09 I will be a senior CS major at Hood College
> (http://cs.hood.edu). I have been programming for about 5 years through high
> school and college. I am currently using Qt and C++ and am comfortable with
> both. The idea of using kdelibs doesn't particularly bother me. I consider
> myself functionally knowledgeable in networking and data com theory. I want
> to do more network type programming.
>
> _______________________________________________
> Amarok mailing list
> Amarok at kde.org
> https://mail.kde.org/mailman/listinfo/amarok
>
>

[1] 
http://techbase.kde.org/Projects/Summer_of_Code/2009/Ideas#Project:_DLNA.2FUPnP_Support



More information about the Amarok mailing list