<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)">
<style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
</style>
<p style="margin-bottom: 0in;">My third draft. Thanks for the input again. Did amarok get accepted by google for GoSoC?</p><p style="margin-bottom: 0in;"><br></p><p style="margin-bottom: 0in;">I think I am on top of things now.<br>
</p><p style="margin-bottom: 0in;"><b><br></b></p><p style="margin-bottom: 0in;"><b>Amarok UPnP support</b></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><b>Jeff Balinsky</b></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><b>Summary</b></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"> 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).
</p>
<p style="margin-bottom: 0in;"> UPnP is a standard maintained by the
DLNA (digital living network alliance). The standard has several
types of devices. Most notable for amarok and this project are:</p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DMS
(DLNA Digital Media Server) - </span>These devices store content and
make it available to networked <strong><span style="font-weight: normal;">digital
media players (DMP)</span></strong><span style="font-weight: normal;">
and </span><strong><span style="font-weight: normal;">digital media
renderers (DMR)</span></strong><span style="font-weight: normal;">. </span>
</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DMP
(DLNA Digital Media Player) - </span>These devices find content on
<strong><span style="font-weight: normal;">digital media servers (DMS)</span></strong><span style="font-weight: normal;">
and provide playback and rendering capabilities.</span></p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DMC
(DLNA Digital Media Controller) - </span>These devices find content
on <strong><span style="font-weight: normal;">digital media servers
(DMS)</span></strong><span style="font-weight: normal;"> and play it
on </span><strong><span style="font-weight: normal;">digital media
renderers (DMR)</span></strong><span style="font-weight: normal;">.</span></p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in; font-weight: normal;">-I do not believe
DMR would be that useful to amarok or its users</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DMR
(DLNA Digital Media Renderer) - </span>These devices play content
received from a<span style="font-weight: normal;"> </span><strong><span style="font-weight: normal;">digital
media controller (DMC)</span></strong><span style="font-weight: normal;">,
which will find content from a </span><strong><span style="font-weight: normal;">digital
media server (DMS)</span></strong><span style="font-weight: normal;">.</span></p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in;"> </p>
<p style="margin-bottom: 0in;"><b>Goals </b><span style="font-weight: normal;">I
now understand the DLNA classes better so this is much more concise</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">[<a href="http://www.dlna.org/digital_living/devices/">http://www.dlna.org/digital_living/devices/</a>]</span></p>
<p style="margin-bottom: 0in;"><b> </b></p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DLNA
DMP</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">The
most useful for amarok and its user base would to be able to play
content off of networked DMS. This is also probably the least
complicated. This is the primary goal of this project.</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DLNA
DMS</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">Also
useful would be the ability to share the content of the amarok
library as a DMS allowing other DMPs and DMRs to play the content.
The secondary goal of this project will be DMS functionality. An
amarok goal for this part would be to update the amarok library on a
remote play.</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DLNA
DMC</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">Useful
to some users would be DMC functionality (those that have both a DMS
and DMR on the network). A tertiary goal of this project will be DMC
functionality.</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">DLNA
DMR</span></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">This
is not ruled out for this project. This is only of use to people that
have a DMS and a DMC on the network and want to use amarok to render
content remotely.</span></p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in;"><b>Details/Implementation</b></p>
<p style="margin-bottom: 0in; font-weight: normal;"> Coherence
(<a href="http://coherence.beebits.net/">http://coherence.beebits.net/</a>) is to be used as a backend for the
implementation of this project. It has an emerging DBus API. It
is to be used by kdelibs for a KIO slave and is multiplatform. I am
told that I will need to work with the coherence developers in
progressing their API.</p>
<p style="margin-bottom: 0in; font-weight: normal;"> </p>
<p style="margin-bottom: 0in; font-weight: normal;"> For the DMP
functionality I will write a new Collection and Media class. Allowing
files on a DMS to be inserted in the playlist.</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in; font-weight: normal;"> I plan implement
the DMS as a script. This allows it to be optional for the end user
and also allows it to be upgraded fairly easily.</p>
<p style="margin-bottom: 0in; font-weight: normal;"> </p>
<p style="margin-bottom: 0in; font-weight: normal;"> Possibilities for
DMC functionality include the writing of a custom plasmoid. This
plasmoid could be the external DMRs playlist. You would drag from the
new DMS browsing collection and media class(that I will write for DMP
functionality) into the custom plasmoid.</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in; font-weight: normal;"> DMR functionality
could be implemented so for the user it is similar to playing a radio
stream. Just drag to the playlist and select
</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in;"><b>Fuzzy Work Timeline</b><span style="font-weight: normal;">
</span>
</p>
<p style="margin-bottom: 0in; font-weight: normal;">GoSoC Has two
evaluation deadlines midterm in early July (~6 weeks in) and final in
late August thus I will probably split this in two parts. It is
around 13 weeks long.</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in; font-weight: normal;">Start May 23<sup>rd</sup></p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-2 weeks make
sure I am set up. Investigate Coherence, Collection and Media Classes
and DLNA compliance specifications</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week write DMS
Browser Collection and media class.</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week raise to
DLNA DMP full compliance specifications</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-2 weeks
Investigate Scripting in amarok possibly more into Coherence
(Qtscript whatever I need)</p>
<p style="margin-bottom: 0in; font-weight: normal;">- Midterm
evaluation?</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-2 week write
DMS script</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week raise to
DLNA DMS full compliance</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week
Investigate Plasma more Coherence</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-2 weeks write
DMC plasmoid</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in; font-weight: normal;"><br>
</p>
<p style="margin-bottom: 0in;"><b>Qualifications</b></p>
<p style="margin-bottom: 0in; font-weight: normal;">In the fall of '09
I will be a senior CS major at Hood College (<a href="http://cs.hood.edu">http://cs.hood.edu</a>). 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.</p><p style="margin-bottom: 0in; font-weight: normal;"><br></p><p style="margin-bottom: 0in; font-weight: normal;"><b>Other<br></b></p><p style="margin-bottom: 0in; font-weight: normal;">
I spent some time with the amarok svn last week. I had never used svn before. Got it to compile and run eventually. Got to say I really liked the <a href="http://last.fm">last.fm</a> stuff. And the idea of a more customizable playlist.<br>
<b></b></p><p style="margin-bottom: 0in; font-weight: normal;"></p>