Difference between revisions of "SoC 2008/UPnP"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 31: Line 31:
 
=== Schedule ===
 
=== Schedule ===
  
May 26 ===> June 10: very little work in this period (My vacations start as of June 10)
+
* '''May 26 ===> June 10:''' very little work in this period (My vacations start as of June 10)
 
Basically spec reading and current UPnP code hacking.
 
Basically spec reading and current UPnP code hacking.
June 10 ===> July 7: Work work work on the ContentDirectory service (this is the most important part) and if time permits, I'll implement a ConnectionManager service stub in order to have the first real practical results.
+
* '''June 10 ===> July 7:''' Work work work on the ContentDirectory service (this is the most important part) and if time permits, I'll implement a ConnectionManager service stub in order to have the first real practical results.
July 7 ===> July 14: Mid-term evaluations (and some code too)
+
* '''July 7 ===> July 14:''' Mid-term evaluations (and some code too)
July 14 ===> Aug 7: Work work work ConnectionManager and AVTransport.
+
* '''July 14 ===> Aug 7:''' Work work work ConnectionManager and AVTransport.
Aug 8: My birthday ^^
+
* '''Aug 8:''' My birthday ^^
Aug 9 ===> Aug 17: Fix bugs / finish what's late.
+
* '''Aug 9 ===> Aug 17:''' Fix bugs / finish what's late.
Aug 18: Official SoC end.
+
* '''Aug 18:''' Official SoC end.
Aug 19 ===> Sep 1: Final evaluations, party, sleep, code on anything but UPnP
+
* '''Aug 19 ===> Sep 1:''' Final evaluations, party, sleep, code on anything but UPnP
Sep 1 ===> October: Work on the ControlPoint part ^^
+
* '''Sep 1 ===> October:''' Work on the ControlPoint part ^^
  
 
=== Footnotes ===
 
=== Footnotes ===

Revision as of 16:57, 27 May 2008

This project is part of Google Summer of Code 2008.
Student: Mirsal Ennaime
Mentor: Rafaël Carré
soc_header.png




GSoC - DLNA UPnP A/V integration

I will use this page as a placeholder for details and progress information about my SoC 2008 project.

The project

Abstract

Even if it is controverted, UPnP A/V Is a widely used standard set of protocols for networked digital audio and video equipment interoperability, thus making it almost a requirement digital media software that aim to become real part of the average multimedia home network. This project aims to implement at least the Media Server part in VLC media player, which will enable it to advertise and stream media to DNLA UPnP A/V enabled devices, such as the PlayStation 3.

Goals

At the end of the project, VLC media player will be able to advertise its currently playing stream or playlist / media library / discovered services to UPnP clients, that will be able to play them over the network, using DNLA UPnP A/V protocols. VLC media player will also expose its web based interface to permit FreeBox's FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player's current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...). The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.

Details

There are two possible ways to achieve that goals: Implementing the needed services inside VLC media player as modules, written in C (This is the preferred one, and I'm assuming that it will be used), or integrating the Coherence[3] python UPnP framework. Basic UPnP support will be provided through libupnp[4], which is already used in VLC media player for UPnP devices discovery. The UPnP A/V MediaServer specification[5] will be implemented as a module which will provide the ConnectionManager[6], ContentDirectory[7] and AVTransport[8] services as described in their respective specifications. Media will be streamed using the VLC media player's streaming capabilities. The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device's capabilities, and to be able to stream to multiple UPnP devices simultaneously. The ContentDirectory service will expose the playlist, the media library and the discovered services for remote playback. The AVTransport service will enable playback control from a remote UPnP device. Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.

Schedule

  • May 26 ===> June 10: very little work in this period (My vacations start as of June 10)

Basically spec reading and current UPnP code hacking.

  • June 10 ===> July 7: Work work work on the ContentDirectory service (this is the most important part) and if time permits, I'll implement a ConnectionManager service stub in order to have the first real practical results.
  • July 7 ===> July 14: Mid-term evaluations (and some code too)
  • July 14 ===> Aug 7: Work work work ConnectionManager and AVTransport.
  • Aug 8: My birthday ^^
  • Aug 9 ===> Aug 17: Fix bugs / finish what's late.
  • Aug 18: Official SoC end.
  • Aug 19 ===> Sep 1: Final evaluations, party, sleep, code on anything but UPnP
  • Sep 1 ===> October: Work on the ControlPoint part ^^

Footnotes

My progress

Git access

You can checkout my git repository this way:

 $ git clone git://git.videolan.org/vlc-mirsal.git

Progress overview

What WHAT!? When Status
Spec reading Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god May In progress
libupnp / VLC's upnp sd hacking Learn how to use libupnp. Hack the current VLC UPnP modules and fix the services discovery part in order to get used to writing UPnP features in VLC media player. May In progress
Modules architecture / design Find the best way to integrate UPnP features in the current VLC architecture June not started
ContentDirectory service Implement the MediaServer ContentDirectory service June not started
ConnectionManager service Implement the MediaServer ConnectionManager service July not started
AVTransport service Implement the MediaServer AVTransport service July not started
Be late Finish what needs to (I know I won't manage to stick to the schedule) August not started
Polish Fix bugs, do performance testing and stuff like that August not started
Bonus: start the ControlPoint device implementation If time permits ^^ August not started

Wtf am I doing *right now* ?

I'm groking UPnP A/V specs. And they suck hard ;x

I also started hacking the current upnp stuff in VLC