Hello again<br><br>First I must thank those who have given me feedback<br><br>I have rewritten my project proposal using said feedback.<br><br>It is not done. But this one feels a lot better than the first one.<br><br>


        <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
        <title></title>
        <meta name="GENERATOR" content="OpenOffice.org 2.4  (Linux)">
        <style type="text/css">
        <!--
                @page { size: 8.5in 11in; margin: 0.79in }
                P { margin-bottom: 0.08in }
        -->
        </style>

<p style="margin-bottom: 0in;"><b>Amarok UPnP support</b></p>

<p style="margin-bottom: 0in;"><b>Jeff Balinsky</b></p>

<p style="margin-bottom: 0in;"><b>Summary</b></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;">UPnP MediaServer
ControlPoint – this is the client device class. It can auto-detect
servers on the  network in order to browse and stream content. - this
is the goal of this project</p>
<p style="margin-bottom: 0in;">UPnP MediaServer
DCP- this is the server device class that shares and streams media. -
this is a       secondary goal of this project.</p>
<p style="margin-bottom: 0in;">Rendering devices
(UPnP MediaRenderer DCP, UPnP RenderingControl DCP) – this
functionality   would likely only be useful to a relatively small
niche and most probably is beyond the scope of  this project</p>
<p style="margin-bottom: 0in;"> </p>
<p style="margin-bottom: 0in;"><b>Goals</b></p>
<p style="margin-bottom: 0in;"><b>        </b><span style="">The
primary goal of this project is to add the functionality of an UPnP
MediaServer ControlPoint to amarok. Thus allowing the playing of
media off of servers on the network. This would make amarok much more
useful and robust especially on systems which contain no local
media(notebooks, netbooks, workstations, etc). The goal is for full
DLNA compliance*.</span></p>
<p style="margin-bottom: 0in;"><span style="">  The
secondary goal of this project is to add the functionality of an UPnP
MediaServer DCP which would allow amarok to share its local
collection over the network. This would be very useful to users
wishing to play their music on their home theater systems via their
Xbox, Playstaion or other compatible device. Also this will allow the
sharing to other installations of amarok.</span></p>
<p style="margin-bottom: 0in;"><span style="">  Anything
I manage to accomplish past this is to be considered icing on the
cake.</span></p>

<p style="margin-bottom: 0in;"><b>Details/Implementation</b></p>
<p style="margin-bottom: 0in;"> 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;"> </p>
<p style="margin-bottom: 0in;"> For the DMS
browsing I will need to write a new Collection and Media class*.</p>

<p style="margin-bottom: 0in;">I will implement
the DMS I will write 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;"> </p>

<p style="margin-bottom: 0in;"><b>Fuzzy Work Timeline</b><span style="">
</span>
</p>
<p style="margin-bottom: 0in;">GoSoC Has two
evaluation deadlines midterm in early July and final in late August
thus I will probably split this in two parts</p>

<p style="margin-bottom: 0in;">(to attempt to do
this at this point I feel is slightly premature)</p>
<p style="margin-bottom: 0in;"><span style="">But
so far from what I have looked into I will probably (in the
beginning) go through chronologically through the steps in the UPnP
protocol:</span></p>
<p style="margin-bottom: 0in;"><span style="">Discovery</span></p>
<p style="margin-bottom: 0in;"><span style="">Description</span></p>
<p style="margin-bottom: 0in;"><span style="">Control
</span>
</p>

<p style="margin-bottom: 0in;"><span style="">Event
Notification</span></p><p style="margin-bottom: 0in;"><span style="">Presentation</span></p>

<p style="margin-bottom: 0in;"><b>Qualifications</b></p>
<p style="margin-bottom: 0in;">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;">The asterisks *
denote somewhere where I need to do research to elaborate</p>

<p style="margin-bottom: 0in;">my current to do
list for this proposal finishing this proposal is:</p>

<p style="margin-bottom: 0in;">-get myself where
I can view/edit/compile the amarok code (any and all help welcome)</p>
<p style="margin-bottom: 0in;"> -find the
specifications for DLNA compliance 
</p>
<br>All feedback welcome/helpful. You are not going to hurt my feelings.<br><br>-Jeff<br>