GoSoC 2009 DLNA UPnP Proposal - final draft (what I submitted to google)

Jeff Balinsky jebsky at gmail.com
Fri Mar 27 20:01:38 UTC 2009


Bart Cerneels contacted me today and urged me to submit my proposal to
Google so I did. this is what I sent exactly

Title: Amarok DLNA UPnP Functionality

Abstract:

Provide the functionality of DLNA DMP, DMS, DMR and DMC to the amarok audio
player.

Many modern home entertainment devices (most notably the Xbox 360 and PS3)
have the ability to play content of of UPnP shares. There are several open
source 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).

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:

DMS (DLNA Digital Media Server) - These devices store content and make it
available to networked digital media players (DMP) and digital media
renderers (DMR).

DMP (DLNA Digital Media Player) - These devices find and browse content on
digital media servers (DMS) and provide playback and rendering capabilities.

DMC (DLNA Digital Media Controller) – More easily understood as a protocol.
DMC can browse a DMS and control a DMR.

DMR (DLNA Digital Media Renderer) – Provide the ability to be controlled by
a DMC. Renders content.

Content

*Name:*

Jeff Balinsky

*Email Address:*

jebsky at gmail.com

*Freenode IRC Nick:*

jebsky

*Location (City, Country and/or Time Zone):*

Edgewater, Maryland United States Eastern Time Zone

*Proposal Name:*

Amarok DLNA UPnP Functionality

*Motivation for Proposal / Goal:*

  *Me and Open Source*

About 2 years ago I changed to using almost exclusively open source software
and operating systems. This was after being raised and taught using
proprietary everything. After some years of study in the computer science
field I have come to believe that open source is the future. In utopia
computers help people and they don't have their figurative hands out asking
for money to do so.

*Why Amarok? Why This Project?*

I listen to music all day, I always have. Amarok was the reason I switched
to linux in my daily life. Amarok was the best tool for playing and managing
my music that I had ever used (I have tried countless music
players/managers). This project allows me to contribute and make my favorite
music manager better and more useful in my daily life.

I have a large music collection and I like having access to it where ever I
go. At the completion of this project all my devices that play music in my
life would be able to sing in harmony.

I am a Computer Science major because computer programming was intuitive to
me from the moment I started. This project will allow me to combine one of
my greatest passions with one of my best skills.

*Implementation Details:*

  *Goals *

* *

DLNA – DMP

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.

DLNA – DMR

Theoretically after having DMS functionality adding DMR functionality
shouldn't be absurdly difficult. This being because (to my current
understanding) DMPs and DMRs are both handled by the same media_renderer.py
class in coherence.

DLNA – DMS

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.

DLNA – DMC

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.

*Details/Implementation*

Coherence (http://coherence.beebits.net/) 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 will need to work
with the coherence developers in progressing their API as it is not
currently very through. The classes in coherence that I will be most likely
dealing with are the media_renderer.py, media_server.py and control_point.py
UPnP device classes.

 For the DMP functionality I will write a new Collection class. This will
allow browsing of DMS and will Allow files on a DMS to be inserted in the
playlist.

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.

 I will work with the amarok developers to determine the best and most
effective methods of implementing DMR and DMC functionality. In theory once
DMP is implemented DMR capabilities could be added transparent in difference
to the user. That is the user does not need to understand UPnP device
classes to understand that they can browse and play of DMS and also be
controlled via DMC. To implement DMC the same collection class could be used
to browse but there will need to be work done to have the playlist act to
control DMR.

*Tentative Timeline:*

  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.

Start May 23rd

~1-2 weeks make sure I am set up. Investigate Coherence, Contact Coherence
developers, investigate Collection classes in Amarokk and DLNA compliance
specifications

~1 week write DMS Browser (for DMP) Collection class.

~1 week raise to DLNA DMP full compliance specifications

~1-2 weeks Investigate Scripting in amarok possibly more into Coherence
(Qtscript whatever I need)

- Midterm evaluation?

~1-3 weeks write DMS script

~1 week raise to DLNA DMS full compliance

~remainder investigate DMR/DMC

*Do you have other obligations from late May to early August (school, work,
etc.)?*:

None, This project would be the focus of my life this summer.

*About Me (let us know who you are!):*

  *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.

*Fun*

Growing up in Annapolis Maryland I play and love the game of lacrosse (
http://en.wikipedia.org/wiki/Lacrosse). I do not own a car and I ride my
longboard skateboard to school every day. I am a very auditory person and
music is an obsession of my life.

I am still able to edit this on the gosoc site so if there are any glaring
mistakes please let me know.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/amarok/attachments/20090327/398a9b5a/attachment.html>


More information about the Amarok mailing list