<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mr+Mirsal</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mr+Mirsal"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Mr_Mirsal/"/>
	<updated>2026-11-04T16:16:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VDD13&amp;diff=24707</id>
		<title>VDD13</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VDD13&amp;diff=24707"/>
		<updated>2013-08-31T16:21:28Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Add the location of the day wrap up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= VideoLAN Dev Days &#039;13 =&lt;br /&gt;
&#039;&#039;&#039;The Multimedia Conference that frees the cone in you!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is a technical un-conference, please bring laptops, cords, RJ45 cables, and a good mood with you.&lt;br /&gt;
&lt;br /&gt;
=== Nota Bene ===&lt;br /&gt;
* The hotel is the [http://www.ibishotel.com/gb/hotel-5543-ibis-paris-avenue-d-italie-13eme/index.shtml Ibis] Avenue d&#039;Italie.&lt;br /&gt;
&lt;br /&gt;
* If you expect us to refund your travel, please bring a printed copy of your tickets, one that shows the total cost. If you are not in our reimbursement database, bring a printed IBAN too.&lt;br /&gt;
 &lt;br /&gt;
* On Saturday and Sunday, enter the Free HQ by the &#039;&#039;&#039;16 Rue de la Ville-l&#039;Évêque&#039;&#039;&#039; ([http://goo.gl/EKHWEc map]).&lt;br /&gt;
** There will be a smoking area inside the building, as the entrance cannot be used once inside the building for security reasons.&lt;br /&gt;
&lt;br /&gt;
* There will be a WiFi connection.&amp;lt;!-- under the &#039;&#039;&#039;???????&#039;&#039;&#039; ESSID. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
== Thursday, August 29th 2013 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
| 21h00 || Meeting at the Sputnik, for the brave... || NB: VideoLAN will not pay for expenses at the bar...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[http://www.sputnik.fr/ Sputnik bar]&lt;br /&gt;
&lt;br /&gt;
== Friday, August 30th 2013 ==&lt;br /&gt;
[[Image:Asterix VLC.svg|right|270px]]&lt;br /&gt;
Friday is an &#039;&#039;&#039;&amp;lt;u&amp;gt;optional&amp;lt;/u&amp;gt;&#039;&#039;&#039; day in the Asterix amusement park to bind together our community. If you wish to attend, the meeting in front of the hotel is at 8:30.&lt;br /&gt;
There will be a bus that will be responsible for bringing everyone to and back from the park. More details on the park are available below.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* that bus and park entrance fees are paid by us, so there are NO costs with the exception of food and drinks&lt;br /&gt;
* do not burden yourself too much with unneeded stuff and particularly &#039;&#039;&#039;don&#039;t bring your laptop&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time !! Place !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 8h30 || [http://www.ibishotel.com/gb/hotel-5543-ibis-paris-avenue-d-italie-13eme/index.shtml Hotel] || Meeting point in front of the hotel&lt;br /&gt;
|-&lt;br /&gt;
| 10h00 – 18h00 || Visit to Asterix park&lt;br /&gt;
|-&lt;br /&gt;
| 21h00 || Meeting at the Sputnik, for the brave... || NB: VideoLAN will not pay for expenses at the bar...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you cannot be present at the meeting point, you will be able to join us directly there, but you &#039;&#039;&#039;MUST&#039;&#039;&#039; tell us. For reference here are directions to the park: Take RER B3 from Paris Gare du Nord, platform 43 and get off at “Aéroport Charles De Gaulle Terminal 1, Terminal 3”. Go to the “Parcs de Loisirs” counter and board the Parc Astérix shuttle buses.&lt;br /&gt;
&lt;br /&gt;
== Saturday, August 31st 2013 ==&lt;br /&gt;
All the meetings happen in the &#039;&#039;&#039;auditorium&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Morning ===&lt;br /&gt;
Schedule information is not currently available.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 9h30 – 10h00 || Welcome, registration, coffee, juice and croissants&lt;br /&gt;
|-&lt;br /&gt;
| 10h00 – 10h15 || Welcome, VideoLAN, VLC&lt;br /&gt;
|-&lt;br /&gt;
| 10h20 – 10h45 || x265&lt;br /&gt;
|-&lt;br /&gt;
| 10h50 – 11h15 || VLC and DCP&lt;br /&gt;
|-&lt;br /&gt;
| 11h15 – 11h30 || &#039;&#039;&#039;Coffee Break&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 11h30 – 11h55 || VLC annotations&lt;br /&gt;
|-&lt;br /&gt;
| 11h55 – 12h15 || VP9&lt;br /&gt;
|-&lt;br /&gt;
| 12h15 – 12h30 || VLC 2.1.0 and next&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Lunch ===&lt;br /&gt;
Individual tray meal (chicken, salmon, vegetarian or beef) with dessert and drinks.&lt;br /&gt;
&lt;br /&gt;
=== UnConference ===&lt;br /&gt;
[[wikipedia:Unconference|What is an UnConference?]]&lt;br /&gt;
&lt;br /&gt;
UnConference schedule to be published...&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
! Time !! Hacking Room 1 !! Hacking Room 2 !! Hacking Room 3 !! Hacking Room 4 !! Hacking Room 5&lt;br /&gt;
|-&lt;br /&gt;
| 14h00 - 16h00 || libav technical discussion || FFmpeg technical discussion || - Open -  || VLC technical discussion || HACKING ROOM&lt;br /&gt;
|-&lt;br /&gt;
| 16h00 - 16h30  ||  &#039;&#039;Break&#039;&#039; ||&#039;&#039;Break&#039;&#039; ||&#039;&#039;Break&#039;&#039; ||&#039;&#039;Break&#039;&#039; || HACKING ROOM&lt;br /&gt;
|-&lt;br /&gt;
| 16h30 - 18h30 || libav documentation session || x264 || - Open - || VLC mobile ports || HACKING ROOM&lt;br /&gt;
|-&lt;br /&gt;
| 18h30 - 19h00 || || || || || Day Wrap up (In the cafeteria)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dinner ===&lt;br /&gt;
[http://www.tripadvisor.fr/Restaurant_Review-g187147-d2459770-Reviews-Restaurant_Du_Paradis-Paris_Ile_de_France.html Restaurant du Paradis]&amp;lt;br /&amp;gt;&lt;br /&gt;
66 Rue du Faubourg Poissonniere&amp;lt;br /&amp;gt;&lt;br /&gt;
75010 Paris&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Metro: Line 7, Poissonière&lt;br /&gt;
&lt;br /&gt;
Starting at 20h00, dinner will consist of 2 special menus prepared by the chef. (drinks included - wine and non-alcoholic)&lt;br /&gt;
&lt;br /&gt;
The menu will consist of 4 choices for starters, principal meal and deserts. There is also a vegan menu available.&lt;br /&gt;
&lt;br /&gt;
== Sunday, September 1st 2013 ==&lt;br /&gt;
=== Session Proposals ===&lt;br /&gt;
* Opus in MPEG TS design session&lt;br /&gt;
* Daala video codec discussion&lt;br /&gt;
* VLC Mac session&lt;br /&gt;
* Building an official VLC SDK for C#/Winform that is cross platform&lt;br /&gt;
* keysigning&lt;br /&gt;
&lt;br /&gt;
=== Morning ===&lt;br /&gt;
Schedule to be posted.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time !! B559 !! B555 !! B551 !! B549 !! B567 !! B312&lt;br /&gt;
|-&lt;br /&gt;
| 9h30 - 11h00  || TBD&amp;lt;!-- VideoLAN association meeting --&amp;gt; || TBD&amp;lt;!-- FFmtech meeting. --&amp;gt; ||  || || HACKING ROOM  || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 11h00 - 12h00  || TBD&amp;lt;!-- Videolan cont. --&amp;gt; || TBD &amp;lt;!-- SOC --&amp;gt; ||  ||  ||  HACKING ROOM  || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 12h00 - 13h00  || TBD&amp;lt;!-- Bounties --&amp;gt; ||  ||  ||  ||  HACKING ROOM  || N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
=== Lunch ===&lt;br /&gt;
Location: Cafeteria of Free HQ (a really beautiful and spacious place!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sandwiches&#039;&#039;&#039; with coleslaw or crisps and choices of drinks (including Dr Pepper) + desserts (Pecan pies, Oreo pies, lemon pies, or cheese cakes).&lt;br /&gt;
&lt;br /&gt;
=== Afternoon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time !! B559 !! B555 !! B551 !! B549 !! B567 !! B312&lt;br /&gt;
|-&lt;br /&gt;
| 14h00 - 15h00  || TBD&amp;lt;!-- ARM --&amp;gt; ||  ||  ||  ||  HACKING ROOM  || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 15h00 - 16h00  || Hack || TBD&amp;lt;!-- Broadcasting --&amp;gt; || TBD&amp;lt;!-- MSVC --&amp;gt;  || ||  HACKING ROOM  || N/A &lt;br /&gt;
|-&lt;br /&gt;
| 16h00 - 17h00  || Hack  || TBD&amp;lt;!-- Captions --&amp;gt; || Hack || Hack ||  HACKING ROOM  || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 17h00 - 18h00  || Hack  || TBD&amp;lt;!-- FOMS info --&amp;gt; || Hack || Hack ||  HACKING ROOM  || N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
= Places =&lt;br /&gt;
&lt;br /&gt;
== Map and Itinerary ==&lt;br /&gt;
&lt;br /&gt;
[http://goo.gl/EGmdKQ Here], a Google Map for all places.&lt;br /&gt;
&lt;br /&gt;
[http://images.videolan.org/videolan/events/vdd13/Itinerary.pdf Here] a map with itineraries to go between the different places.&lt;br /&gt;
&lt;br /&gt;
== Asterix Park ==&lt;br /&gt;
60128 Plailly, France&amp;lt;br /&amp;gt;&lt;br /&gt;
Metro / RER: &#039;&#039;&#039;B3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.parcasterix.fr/&lt;br /&gt;
&lt;br /&gt;
== Free HQ ==&lt;br /&gt;
16 Rue de la Ville-l&#039;Évêque&amp;lt;br /&amp;gt;&lt;br /&gt;
75008 Paris, France ([http://goo.gl/EKHWEc map])&lt;br /&gt;
&lt;br /&gt;
Metro 8: Madeleine&amp;lt;br /&amp;gt;&lt;br /&gt;
Metro 12: Madeleine&amp;lt;br /&amp;gt;&lt;br /&gt;
Metro 14: Madeleine&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From CDG airport, take:&amp;lt;br /&amp;gt;&lt;br /&gt;
the RER B (Paris by train) to Châtelet-les-Halles&amp;lt;br /&amp;gt;&lt;br /&gt;
then Metro line 14 to Madeleine.&lt;br /&gt;
&lt;br /&gt;
http://www.free.fr/&lt;br /&gt;
&lt;br /&gt;
== Hotel Ibis ==&lt;br /&gt;
[http://www.ibishotel.com/gb/hotel-5543-ibis-paris-avenue-d-italie-13eme/index.shtml Hotel IBIS Paris Avenue d&#039;Italie]&amp;lt;br /&amp;gt;&lt;br /&gt;
15 bis Avenue d&#039;Italie&amp;lt;br /&amp;gt;&lt;br /&gt;
75013 Paris ([http://goo.gl/MKmwjx map])&lt;br /&gt;
&lt;br /&gt;
== Emergencies ==&lt;br /&gt;
* In case of emergency, call the European emergency number &#039;&#039;&#039;112&#039;&#039;&#039;.&lt;br /&gt;
* To place a call most credit cards can be used directly in public phones.&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=23607</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=23607"/>
		<updated>2012-12-09T11:42:03Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m a software developer focused on Free Software technology, web scale applications and cool new stuff. I also do design, and I build horizontally scalable server infrastructures because it&#039;s fun. I&#039;m a really committed FOSS advocate and GNU/Linux power-user (I&#039;m one of those who think that Free software can change the world to something better, and I&#039;ll do my best to make that happen).&lt;br /&gt;
&lt;br /&gt;
I am maintaining the D-Bus control module as an implementation of the MPRIS [http://www.mpris.org] of which I am a co-author and maintainer.&lt;br /&gt;
&lt;br /&gt;
I worked on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] which started as my [[SoC_2008_projects|Google Summer of Code]] project, mentored by [[User:funman|Rafaël Carré]]. I wrote a few bits of code in the VLC core and I am currently rewriting the UPnP services discovery module in C.&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal at mirsal dot fr&lt;br /&gt;
or bug me on IRC, (mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://www.mirsal.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=23606</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=23606"/>
		<updated>2012-12-09T11:40:54Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: MPRIS web page URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m a software developer focused on Free Software technology, web scale applications and cool new stuff. I also do design, and I build horizontally scalable server infrastructures because it&#039;s fun. I&#039;m a really committed FOSS advocate and GNU/Linux power-user (I&#039;m one of those who think that Free software can change the world to something better, and I&#039;ll do my best to make that happen).&lt;br /&gt;
&lt;br /&gt;
I am maintaining the D-Bus control module as an implementation of the MPRIS [http://www.mpris.org] of which I am a co-author and maintainer.&lt;br /&gt;
&lt;br /&gt;
I worked on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] which started as my [[SoC_2008_projects|Google Summer of Code]] project, mentored by [[User:funman|Rafaël Carré]]. I am currently rewriting the UPnP services discovery module in C.&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal at mirsal dot fr&lt;br /&gt;
or bug me on IRC, (mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://www.mirsal.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=23605</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=23605"/>
		<updated>2012-12-09T11:39:43Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Dust removal :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m a software developer focused on Free Software technology, web scale applications and cool new stuff. I also do design, and I build horizontally scalable server infrastructures because it&#039;s fun. I&#039;m a really committed FOSS advocate and GNU/Linux power-user (I&#039;m one of those who think that Free software can change the world to something better, and I&#039;ll do my best to make that happen).&lt;br /&gt;
&lt;br /&gt;
I am maintaining the D-Bus control module as an implementation of the MPRIS [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces] of which I am a co-author and maintainer.&lt;br /&gt;
&lt;br /&gt;
I worked on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] which started as my [[SoC_2008_projects|Google Summer of Code]] project, mentored by [[User:funman|Rafaël Carré]]. I am currently rewriting the UPnP services discovery module in C.&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal at mirsal dot fr&lt;br /&gt;
or bug me on IRC, (mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://www.mirsal.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=16338</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=16338"/>
		<updated>2010-06-16T00:06:41Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: change wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m a software developer focused on Free Software technology, web scale applications and cool new stuff. I also do design, and I build horizontally scalable server infrastructures because it&#039;s fun. I&#039;m a really committed FOSS advocate and GNU/Linux power-user (I&#039;m one of those who think that Free software can change the world to something better, and I&#039;ll do my best to make that happen).&lt;br /&gt;
&lt;br /&gt;
After a two years hiatus, I&#039;m in the process of coming back maintaining the D-Bus control module as an implementation of the MPRIS [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces]&lt;br /&gt;
&lt;br /&gt;
I worked on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] which started as my [[SoC_2008_projects|Google Summer of Code]] project, mentored by [[User:funman|Rafaël Carré]]&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com&lt;br /&gt;
or bug me on IRC, (mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://blog.mirsal.ennaime.org&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=16337</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=16337"/>
		<updated>2010-06-16T00:05:25Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: remove the dust&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m a software developer focused on Free Software technology, web scale applications and cool new stuff. I also do design, and I build horizontally scalable server infrastructures because it&#039;s fun. I&#039;m a really committed FOSS advocate and GNU/Linux power-user (I&#039;m one of those who think that Free software can change the world to something better, and I&#039;ll do my best to make that happen).&lt;br /&gt;
&lt;br /&gt;
After a two years hiatus, I&#039;m maintaining the D-Bus control module as an implementation of the MPRIS [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces]&lt;br /&gt;
&lt;br /&gt;
I worked on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] which started as my [[SoC_2008_projects|Google Summer of Code]] project, mentored by [[User:funman|Rafaël Carré]]&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com&lt;br /&gt;
or bug me on IRC, (mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://blog.mirsal.ennaime.org&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=13222</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=13222"/>
		<updated>2009-01-15T03:46:03Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Things change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lyon, France.&lt;br /&gt;
&lt;br /&gt;
I&#039;m maintaining the D-Bus control module as an implementation of the MPRIS [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces] and I&#039;m working on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] which started as my [[SoC_2008_projects|Google Summer of Code]] project, mentored by [[User:funman|Rafaël Carré]]&lt;br /&gt;
&lt;br /&gt;
I work at Winux, a company I just created with some really cool guys&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com / mirsal at winux dot fr&lt;br /&gt;
or bug me on IRC, (mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://mirsal.ennaime.free.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=12281</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=12281"/>
		<updated>2008-08-17T00:54:00Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Wtf am I doing *right now* ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;May 26 to June 10:&#039;&#039;&#039; || very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;June 10 to July 7:&#039;&#039;&#039; || Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 7 to July 14:&#039;&#039;&#039; || Mid-term evaluations (and some code too)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 14 to Aug 7:&#039;&#039;&#039; || Work work work ConnectionManager and AVTransport.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; || My birthday ^^&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 9 to Aug 17:&#039;&#039;&#039; || Fix bugs / finish what&#039;s late.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; || Official SoC end.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 19 to Sep 1:&#039;&#039;&#039; || Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sep 1 to October:&#039;&#039;&#039; || Work on the ControlPoint part ^^&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || style=&amp;quot;background: #fff5dd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || style=&amp;quot;background: #ffdddd&amp;quot;|Won&#039;t do during SoC.&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || style=&amp;quot;background: #fff5dd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || style=&amp;quot;background: #ffdddd&amp;quot;|Won&#039;t do during SoC.&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || style=&amp;quot;background: #ffdddd&amp;quot;|Won&#039;t do during SoC.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
Trying to solve problem with the PS3 being a bit too strict on DLNA specs.&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=12280</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=12280"/>
		<updated>2008-08-17T00:52:44Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;May 26 to June 10:&#039;&#039;&#039; || very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;June 10 to July 7:&#039;&#039;&#039; || Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 7 to July 14:&#039;&#039;&#039; || Mid-term evaluations (and some code too)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 14 to Aug 7:&#039;&#039;&#039; || Work work work ConnectionManager and AVTransport.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; || My birthday ^^&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 9 to Aug 17:&#039;&#039;&#039; || Fix bugs / finish what&#039;s late.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; || Official SoC end.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 19 to Sep 1:&#039;&#039;&#039; || Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sep 1 to October:&#039;&#039;&#039; || Work on the ControlPoint part ^^&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || style=&amp;quot;background: #fff5dd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || style=&amp;quot;background: #ddffdd&amp;quot;|Done.&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || style=&amp;quot;background: #ffdddd&amp;quot;|Won&#039;t do during SoC.&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || style=&amp;quot;background: #fff5dd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || style=&amp;quot;background: #ffdddd&amp;quot;|Won&#039;t do during SoC.&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || style=&amp;quot;background: #ffdddd&amp;quot;|Won&#039;t do during SoC.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11879</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11879"/>
		<updated>2008-06-15T18:24:08Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;May 26 to June 10:&#039;&#039;&#039; || very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;June 10 to July 7:&#039;&#039;&#039; || Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 7 to July 14:&#039;&#039;&#039; || Mid-term evaluations (and some code too)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 14 to Aug 7:&#039;&#039;&#039; || Work work work ConnectionManager and AVTransport.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; || My birthday ^^&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 9 to Aug 17:&#039;&#039;&#039; || Fix bugs / finish what&#039;s late.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; || Official SoC end.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 19 to Sep 1:&#039;&#039;&#039; || Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sep 1 to October:&#039;&#039;&#039; || Work on the ControlPoint part ^^&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #f5ffdd&amp;quot;|In progress / okish&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #fff5dd&amp;quot;|In progress / reported&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11865</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11865"/>
		<updated>2008-06-12T04:00:41Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;May 26 to June 10:&#039;&#039;&#039; || very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;June 10 to July 7:&#039;&#039;&#039; || Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 7 to July 14:&#039;&#039;&#039; || Mid-term evaluations (and some code too)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 14 to Aug 7:&#039;&#039;&#039; || Work work work ConnectionManager and AVTransport.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; || My birthday ^^&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 9 to Aug 17:&#039;&#039;&#039; || Fix bugs / finish what&#039;s late.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; || Official SoC end.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 19 to Sep 1:&#039;&#039;&#039; || Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sep 1 to October:&#039;&#039;&#039; || Work on the ControlPoint part ^^&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #f5ffdd&amp;quot;|In progress / okish&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #fff5dd&amp;quot;|In progress / reported&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11864</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11864"/>
		<updated>2008-06-12T03:56:00Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;May 26 to June 10:&#039;&#039;&#039; || very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;June 10 to July 7:&#039;&#039;&#039; || Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 7 to July 14:&#039;&#039;&#039; || Mid-term evaluations (and some code too)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 14 to Aug 7:&#039;&#039;&#039; || Work work work ConnectionManager and AVTransport.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; || My birthday ^^&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 9 to Aug 17:&#039;&#039;&#039; || Fix bugs / finish what&#039;s late.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; || Official SoC end.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 19 to Sep 1:&#039;&#039;&#039; || Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sep 1 to October:&#039;&#039;&#039; || Work on the ControlPoint part ^^&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ddffdd&amp;quot;|In progress / okish&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ddffdd&amp;quot;|In progress / reported&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11703</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11703"/>
		<updated>2008-05-27T17:14:56Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;May 26 to June 10:&#039;&#039;&#039; || very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;June 10 to July 7:&#039;&#039;&#039; || Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 7 to July 14:&#039;&#039;&#039; || Mid-term evaluations (and some code too)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;July 14 to Aug 7:&#039;&#039;&#039; || Work work work ConnectionManager and AVTransport.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; || My birthday ^^&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 9 to Aug 17:&#039;&#039;&#039; || Fix bugs / finish what&#039;s late.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; || Official SoC end.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aug 19 to Sep 1:&#039;&#039;&#039; || Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sep 1 to October:&#039;&#039;&#039; || Work on the ControlPoint part ^^&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11701</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11701"/>
		<updated>2008-05-27T16:57:49Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;May 26 ===&amp;gt; June 10:&#039;&#039;&#039; very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
* &#039;&#039;&#039;June 10 ===&amp;gt; July 7:&#039;&#039;&#039; Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
* &#039;&#039;&#039;July 7 ===&amp;gt; July 14:&#039;&#039;&#039; Mid-term evaluations (and some code too)&lt;br /&gt;
* &#039;&#039;&#039;July 14 ===&amp;gt; Aug 7:&#039;&#039;&#039; Work work work ConnectionManager and AVTransport.&lt;br /&gt;
* &#039;&#039;&#039;Aug 8:&#039;&#039;&#039; My birthday ^^&lt;br /&gt;
* &#039;&#039;&#039;Aug 9 ===&amp;gt; Aug 17:&#039;&#039;&#039; Fix bugs / finish what&#039;s late.&lt;br /&gt;
* &#039;&#039;&#039;Aug 18:&#039;&#039;&#039; Official SoC end.&lt;br /&gt;
* &#039;&#039;&#039;Aug 19 ===&amp;gt; Sep 1:&#039;&#039;&#039; Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
* &#039;&#039;&#039;Sep 1 ===&amp;gt; October:&#039;&#039;&#039; Work on the ControlPoint part ^^&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11700</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11700"/>
		<updated>2008-05-27T16:56:08Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
May 26 ===&amp;gt; June 10: very little work in this period (My vacations start as of June 10)&lt;br /&gt;
Basically spec reading and current UPnP code hacking.&lt;br /&gt;
June 10 ===&amp;gt; July 7: Work work work on the ContentDirectory service (this is the most important part) and if time permits, I&#039;ll implement a ConnectionManager service stub in order to have the first real practical results.&lt;br /&gt;
July 7 ===&amp;gt; July 14: Mid-term evaluations (and some code too)&lt;br /&gt;
July 14 ===&amp;gt; Aug 7: Work work work ConnectionManager and AVTransport.&lt;br /&gt;
Aug 8: My birthday ^^&lt;br /&gt;
Aug 9 ===&amp;gt; Aug 17: Fix bugs / finish what&#039;s late.&lt;br /&gt;
Aug 18: Official SoC end.&lt;br /&gt;
Aug 19 ===&amp;gt; Sep 1: Final evaluations, party, sleep, code on anything but UPnP&lt;br /&gt;
Sep 1 ===&amp;gt; October: Work on the ControlPoint part ^^&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11566</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11566"/>
		<updated>2008-05-17T14:30:23Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Wtf am I doing *right now* ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
* &#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
* &#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
* &#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11565</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11565"/>
		<updated>2008-05-17T14:29:37Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* My progress */ git access&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
* &#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
* &#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
* &#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Git access ===&lt;br /&gt;
&lt;br /&gt;
You can checkout my git repository this way:&lt;br /&gt;
  $ git clone git://git.videolan.org/vlc-mirsal.git&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11564</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11564"/>
		<updated>2008-05-17T14:24:04Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Wtf am I doing *right now* ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
* &#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
* &#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
* &#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;br /&gt;
I also started hacking the current upnp stuff in VLC&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11563</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11563"/>
		<updated>2008-05-17T14:22:54Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
* &#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
* &#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
* &#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11551</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11551"/>
		<updated>2008-05-15T16:11:42Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
* &#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
* &#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
* &#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || not started&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11550</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11550"/>
		<updated>2008-05-15T16:08:48Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevant UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || not started&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11549</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11549"/>
		<updated>2008-05-15T16:01:01Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevent UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || not started&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11548</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11548"/>
		<updated>2008-05-15T16:00:25Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevent UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|libupnp / VLC&#039;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 || not started&lt;br /&gt;
|-&lt;br /&gt;
|Modules architecture / design || Find the best way to integrate UPnP features in the current VLC architecture || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ContentDirectory service || Implement the MediaServer ContentDirectory service || June || not started&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionManager service || Implement the MediaServer ConnectionManager service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|AVTransport service || Implement the MediaServer AVTransport service || July || not started&lt;br /&gt;
|-&lt;br /&gt;
|Be late || Finish what needs to (I know I won&#039;t manage to stick to the schedule) || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Polish || Fix bugs, do performance testing and stuff like that || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|Bonus: start the ControlPoint device implementation || If time permits ^^ || August || not started&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
June: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
July: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
August: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11547</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11547"/>
		<updated>2008-05-15T15:47:51Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== Progress overview ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
|Spec reading || Read the relevent UPnP A/V specifications, understand them fully and eventually become a UPnP A/V semi-god || May || style=&amp;quot;background: #ffffdd&amp;quot;|In progress&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wtf am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11546</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11546"/>
		<updated>2008-05-15T15:38:00Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Footnotes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
* [1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
* [2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
* [3] https://coherence.beebits.net/&lt;br /&gt;
* [4] http://pupnp.sourceforge.net/&lt;br /&gt;
* [5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
* [6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
* [7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
* [8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
* [9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11545</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11545"/>
		<updated>2008-05-15T15:37:25Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* The project */ footnotes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&lt;br /&gt;
[1] http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance&lt;br /&gt;
[2] http://en.wikipedia.org/wiki/Freebox&lt;br /&gt;
[3] https://coherence.beebits.net/&lt;br /&gt;
[4] http://pupnp.sourceforge.net/&lt;br /&gt;
[5] http://www.upnp.org/specs/av/UPnP-av-MediaServer-v2-Device-20060531.pdf&lt;br /&gt;
[6] http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v2-Service-20060531.pdf&lt;br /&gt;
[7] http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf&lt;br /&gt;
[8] http://www.upnp.org/specs/av/UPnP-av-AVTransport-v2-Service-20060531.pdf&lt;br /&gt;
[9] http://libdlna.geexbox.org/&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11544</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11544"/>
		<updated>2008-05-15T15:35:38Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* What am I doing *right now* ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m groking UPnP A/V specs.&lt;br /&gt;
And they suck hard ;x&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11543</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11543"/>
		<updated>2008-05-15T15:34:15Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* The project */ added schedule section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is not precise, as many parameters will make the timeline vary, this schedule is not meant to be strict.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;April / May&#039;&#039;&#039;: Read UPnP A/V specifications, fully understand them and become familiar with the UPnP A/V concepts and architecture. 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;June&#039;&#039;&#039;: Evaluate different approaches, discuss with the team about technology choices and start to design the modules architecture. Implement the ContentDirectory service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July&#039;&#039;&#039;: Implement the ConnectionManager and AVTransport services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August&#039;&#039;&#039;: Finish what&#039;s needed, fix bugs, start to implement the ControlPoint part.&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11542</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11542"/>
		<updated>2008-05-15T15:32:46Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
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&#039;m assuming that it will be used), or integrating the Coherence[3] python UPnP framework.&lt;br /&gt;
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&#039;s streaming capabilities.&lt;br /&gt;
The ConnectionManager service will implement the optional PrepareForConnection() action in order to select a streaming protocol matching with the remote device&#039;s capabilities, and to be able to stream to multiple UPnP devices simultaneously.&lt;br /&gt;
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.&lt;br /&gt;
Libdlna[9] will be given a close look, may it be for linking to it, or to use it as reference code.&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11541</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11541"/>
		<updated>2008-05-15T15:32:27Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
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&#039;s FreePlayer[2]-like features for UPnP devices. As a secondary goal, VLC media player&#039;s current UPnP capabilities will be improved with room made for future further UPnP support (Media renderer, Control point...).&lt;br /&gt;
The reference for success will be the ability to be discovered by, and stream to a PlayStation 3 device.&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11540</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11540"/>
		<updated>2008-05-15T15:32:00Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11359</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11359"/>
		<updated>2008-04-24T16:31:03Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11358</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11358"/>
		<updated>2008-04-24T16:28:17Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: yay an image :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;http://people.videolan.org/~mirsal/images/soc_header.png&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ===&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11351</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11351"/>
		<updated>2008-04-24T15:17:46Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* GSoC - DLNA UPnP A/V integration */ add a bit of structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;br /&gt;
&lt;br /&gt;
== The project ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
== My progress ==&lt;br /&gt;
&lt;br /&gt;
=== What am I doing *right now* ? ==&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11350</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11350"/>
		<updated>2008-04-24T15:13:27Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* GSoC - DLNA UPnP A/V integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;br /&gt;
&lt;br /&gt;
I will use this page as a placeholder for details and progress information about my SoC 2008 project.&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=11349</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=11349"/>
		<updated>2008-04-24T14:59:33Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Add a reference to MPRIS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lyon, France.&lt;br /&gt;
&lt;br /&gt;
I&#039;m maintaining the D-Bus control module as an implementation of the MPRIS [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces] and I&#039;m working on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] as a [[SoC_2008_projects|Google Summer of Code]] student, mentored by [[User:funman|Rafaël Carré]]&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com&lt;br /&gt;
or bug me on IRC, (Mr_Mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://mirsal.ennaime.free.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=11348</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=11348"/>
		<updated>2008-04-24T14:55:56Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: add GSoC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lyon, France.&lt;br /&gt;
&lt;br /&gt;
I&#039;m maintaining the D-Bus control module and I&#039;m working on [[SoC_2008/UPnP|DLNA UPnP A/V integration]] as a [[SoC_2008_projects|Google Summer of Code]] student, mentored by [[User:funman|Rafaël Carré]]&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com&lt;br /&gt;
or bug me on IRC, (Mr_Mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
I (sometimes) blog here: http://mirsal.ennaime.free.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11347</id>
		<title>SoC 2008 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11347"/>
		<updated>2008-04-24T12:22:23Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* Create a new VLC interface for Maemo (internet tablet) */ Idem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2OO8.&lt;br /&gt;
&lt;br /&gt;
= List of current projects =&lt;br /&gt;
&lt;br /&gt;
== Panorama Viewing ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/PanoramaViewing]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Plouj|Michael Ploujnikov]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Yuval Levy, [[User:J-b|Jean-Baptiste Kempf]], [[User:Dionoea|Antoine Cellerier]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: The goal of this project is to make VLC a one-stop solution for viewing panoramas of various formats. Currently, FreePV is the best/only cross-platform, non-proprietary solution for viewing QuickTimeVR and plain image panoramas. However it suffers from a few drawbacks, which include difficult installation, browser plug-in conflicts and low popularity. The intent is to integrate the FreePV rendering code with VLC. This should not only automatically alleviate installation difficulty and plug-in conflicts, but also bring panorama viewing to a much larger audience. This project will initially focus on basic support for QTVR files and equirectangular images.&lt;br /&gt;
&lt;br /&gt;
== Qt improvements ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Qt improvements]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: Lukas Durfina&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: In my project I should do fullscreen controller, backend for Phonon and playlist improvements. FS controller have to be clickable, dragable with all VLC functionality. Phonon backend will help spread VLC and support its using by other developers. And finally I will upgrade playlist, fix and update DragAndDrop and other bugs.&lt;br /&gt;
&lt;br /&gt;
== Enhance PVR capabilities of VLC ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Enhance PVR capabilities of VLC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Dylan|Dylan Yudaken]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Pdherbemont|Pierre d&#039;Herbemont]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: VLC has fast become one of the most common video players available for &#039;non-technical&#039; users. The ability to watch streams easily and efficiently is a huge advantage for VLC. The ability to timeshift streams has been added to the latest unstable builds, however it is vastly underfeatured and not nearly ready for release. The features would enhance VLC to a new level which would allow a new set of users to use it.&lt;br /&gt;
&lt;br /&gt;
: I propose to extend &amp;amp; improve the PVR capabilities of VLC. The current version is severely lacking in functionality and performance. There is a very basic timeshift capability already. To this I will add the ability to randomly seek through the buffer (fast forward, rewind, etc ). The ability to save buffers and continue recording to the new file will be added. These recordings will be in any chosen format. These features will help anyone who uses VLC to watch TV shows to easily turn their client into a MythTV/Media Centre style client.  &lt;br /&gt;
: I will tie the module in with the user interface properly so that the state of the buffer and the current position can be easily seen. &lt;br /&gt;
: I then plan to begin work on a framework that combines all of these features into a simple interface easily accessible with a remote control. The interface will combine VLM and the media library into a single easily accesible place. The interface will have the ability to &#039;talk&#039; to the server sending commands such as changing tv channel or switching input source.&lt;br /&gt;
&lt;br /&gt;
: With this and the completion of VLM and the playlist managing system VLC will have the capabilities to become a fully featured PVR system with the massive advantage of it being run off a streaming server if need be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WinCE Port ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/WinCE Port]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Geal|Geoffroy Couprie]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Jérôme Decoodt&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
:The VLC media player has been port to many different platforms, but it lacks Windows CE support since some versions. This project aims at making VLC work on a Windows CE platform, with a few features:&lt;br /&gt;
:*RTSP&lt;br /&gt;
:*H264&lt;br /&gt;
:*Snapshots&lt;br /&gt;
:*Playlist&lt;br /&gt;
:*Rebuild of interface to adapt it to small screens&lt;br /&gt;
&lt;br /&gt;
== Create a new VLC interface for Maemo (internet tablet) ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/New VLC interface for Maemo]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Phytos|Antoine Lejeune]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:funman|Rafaël Carré]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
: The goal is to create a new interface for VLC with Maemo, a Debian-based development platform for handheld devices used by Nokia N800 and N810 devices and to package VLC for this platform.&lt;br /&gt;
: The main constraint are the small size of the screen which means the GUI must be thought specifically for this platform and the fact that the devices is not very powerful.&lt;br /&gt;
&lt;br /&gt;
== DLNA UPnP A/V integration ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/UPnP]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Mr_Mirsal|Mirsal Ennaime]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:funman|Rafaël Carré]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
  Even if it is controverted, UPnP A/V Is a widely used standard set of protocols for networked digital &lt;br /&gt;
  audio and video equipment interoperability, thus making it almost a requirement digital media software &lt;br /&gt;
  that aim to become real part of the average multimedia home network. This project aims to implement &lt;br /&gt;
  at least the Media Server part in VLC media player, which will enable it to advertise and stream media &lt;br /&gt;
  to DNLA UPnP A/V enabled devices, such as the PlayStation 3.&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11346</id>
		<title>SoC 2008 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11346"/>
		<updated>2008-04-24T12:21:48Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* DLNA UPnP A/V integration */ Add a link to funman&amp;#039;s page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2OO8.&lt;br /&gt;
&lt;br /&gt;
= List of current projects =&lt;br /&gt;
&lt;br /&gt;
== Panorama Viewing ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/PanoramaViewing]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Plouj|Michael Ploujnikov]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Yuval Levy, [[User:J-b|Jean-Baptiste Kempf]], [[User:Dionoea|Antoine Cellerier]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: The goal of this project is to make VLC a one-stop solution for viewing panoramas of various formats. Currently, FreePV is the best/only cross-platform, non-proprietary solution for viewing QuickTimeVR and plain image panoramas. However it suffers from a few drawbacks, which include difficult installation, browser plug-in conflicts and low popularity. The intent is to integrate the FreePV rendering code with VLC. This should not only automatically alleviate installation difficulty and plug-in conflicts, but also bring panorama viewing to a much larger audience. This project will initially focus on basic support for QTVR files and equirectangular images.&lt;br /&gt;
&lt;br /&gt;
== Qt improvements ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Qt improvements]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: Lukas Durfina&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: In my project I should do fullscreen controller, backend for Phonon and playlist improvements. FS controller have to be clickable, dragable with all VLC functionality. Phonon backend will help spread VLC and support its using by other developers. And finally I will upgrade playlist, fix and update DragAndDrop and other bugs.&lt;br /&gt;
&lt;br /&gt;
== Enhance PVR capabilities of VLC ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Enhance PVR capabilities of VLC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Dylan|Dylan Yudaken]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Pdherbemont|Pierre d&#039;Herbemont]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: VLC has fast become one of the most common video players available for &#039;non-technical&#039; users. The ability to watch streams easily and efficiently is a huge advantage for VLC. The ability to timeshift streams has been added to the latest unstable builds, however it is vastly underfeatured and not nearly ready for release. The features would enhance VLC to a new level which would allow a new set of users to use it.&lt;br /&gt;
&lt;br /&gt;
: I propose to extend &amp;amp; improve the PVR capabilities of VLC. The current version is severely lacking in functionality and performance. There is a very basic timeshift capability already. To this I will add the ability to randomly seek through the buffer (fast forward, rewind, etc ). The ability to save buffers and continue recording to the new file will be added. These recordings will be in any chosen format. These features will help anyone who uses VLC to watch TV shows to easily turn their client into a MythTV/Media Centre style client.  &lt;br /&gt;
: I will tie the module in with the user interface properly so that the state of the buffer and the current position can be easily seen. &lt;br /&gt;
: I then plan to begin work on a framework that combines all of these features into a simple interface easily accessible with a remote control. The interface will combine VLM and the media library into a single easily accesible place. The interface will have the ability to &#039;talk&#039; to the server sending commands such as changing tv channel or switching input source.&lt;br /&gt;
&lt;br /&gt;
: With this and the completion of VLM and the playlist managing system VLC will have the capabilities to become a fully featured PVR system with the massive advantage of it being run off a streaming server if need be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WinCE Port ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/WinCE Port]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Geal|Geoffroy Couprie]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Jérôme Decoodt&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
:The VLC media player has been port to many different platforms, but it lacks Windows CE support since some versions. This project aims at making VLC work on a Windows CE platform, with a few features:&lt;br /&gt;
:*RTSP&lt;br /&gt;
:*H264&lt;br /&gt;
:*Snapshots&lt;br /&gt;
:*Playlist&lt;br /&gt;
:*Rebuild of interface to adapt it to small screens&lt;br /&gt;
&lt;br /&gt;
== Create a new VLC interface for Maemo (internet tablet) ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/New VLC interface for Maemo]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Phytos|Antoine Lejeune]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Rafaël Carré&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
: The goal is to create a new interface for VLC with Maemo, a Debian-based development platform for handheld devices used by Nokia N800 and N810 devices and to package VLC for this platform.&lt;br /&gt;
: The main constraint are the small size of the screen which means the GUI must be thought specifically for this platform and the fact that the devices is not very powerful.&lt;br /&gt;
&lt;br /&gt;
== DLNA UPnP A/V integration ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/UPnP]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Mr_Mirsal|Mirsal Ennaime]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:funman|Rafaël Carré]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
  Even if it is controverted, UPnP A/V Is a widely used standard set of protocols for networked digital &lt;br /&gt;
  audio and video equipment interoperability, thus making it almost a requirement digital media software &lt;br /&gt;
  that aim to become real part of the average multimedia home network. This project aims to implement &lt;br /&gt;
  at least the Media Server part in VLC media player, which will enable it to advertise and stream media &lt;br /&gt;
  to DNLA UPnP A/V enabled devices, such as the PlayStation 3.&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11345</id>
		<title>SoC 2008 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11345"/>
		<updated>2008-04-24T12:19:08Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* List of current projects */ Added UPnP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2OO8.&lt;br /&gt;
&lt;br /&gt;
= List of current projects =&lt;br /&gt;
&lt;br /&gt;
== Panorama Viewing ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/PanoramaViewing]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Plouj|Michael Ploujnikov]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Yuval Levy, [[User:J-b|Jean-Baptiste Kempf]], [[User:Dionoea|Antoine Cellerier]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: The goal of this project is to make VLC a one-stop solution for viewing panoramas of various formats. Currently, FreePV is the best/only cross-platform, non-proprietary solution for viewing QuickTimeVR and plain image panoramas. However it suffers from a few drawbacks, which include difficult installation, browser plug-in conflicts and low popularity. The intent is to integrate the FreePV rendering code with VLC. This should not only automatically alleviate installation difficulty and plug-in conflicts, but also bring panorama viewing to a much larger audience. This project will initially focus on basic support for QTVR files and equirectangular images.&lt;br /&gt;
&lt;br /&gt;
== Qt improvements ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Qt improvements]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: Lukas Durfina&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: In my project I should do fullscreen controller, backend for Phonon and playlist improvements. FS controller have to be clickable, dragable with all VLC functionality. Phonon backend will help spread VLC and support its using by other developers. And finally I will upgrade playlist, fix and update DragAndDrop and other bugs.&lt;br /&gt;
&lt;br /&gt;
== Enhance PVR capabilities of VLC ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Enhance PVR capabilities of VLC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Dylan|Dylan Yudaken]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Pdherbemont|Pierre d&#039;Herbemont]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: VLC has fast become one of the most common video players available for &#039;non-technical&#039; users. The ability to watch streams easily and efficiently is a huge advantage for VLC. The ability to timeshift streams has been added to the latest unstable builds, however it is vastly underfeatured and not nearly ready for release. The features would enhance VLC to a new level which would allow a new set of users to use it.&lt;br /&gt;
&lt;br /&gt;
: I propose to extend &amp;amp; improve the PVR capabilities of VLC. The current version is severely lacking in functionality and performance. There is a very basic timeshift capability already. To this I will add the ability to randomly seek through the buffer (fast forward, rewind, etc ). The ability to save buffers and continue recording to the new file will be added. These recordings will be in any chosen format. These features will help anyone who uses VLC to watch TV shows to easily turn their client into a MythTV/Media Centre style client.  &lt;br /&gt;
: I will tie the module in with the user interface properly so that the state of the buffer and the current position can be easily seen. &lt;br /&gt;
: I then plan to begin work on a framework that combines all of these features into a simple interface easily accessible with a remote control. The interface will combine VLM and the media library into a single easily accesible place. The interface will have the ability to &#039;talk&#039; to the server sending commands such as changing tv channel or switching input source.&lt;br /&gt;
&lt;br /&gt;
: With this and the completion of VLM and the playlist managing system VLC will have the capabilities to become a fully featured PVR system with the massive advantage of it being run off a streaming server if need be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WinCE Port ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/WinCE Port]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Geal|Geoffroy Couprie]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Jérôme Decoodt&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
:The VLC media player has been port to many different platforms, but it lacks Windows CE support since some versions. This project aims at making VLC work on a Windows CE platform, with a few features:&lt;br /&gt;
:*RTSP&lt;br /&gt;
:*H264&lt;br /&gt;
:*Snapshots&lt;br /&gt;
:*Playlist&lt;br /&gt;
:*Rebuild of interface to adapt it to small screens&lt;br /&gt;
&lt;br /&gt;
== Create a new VLC interface for Maemo (internet tablet) ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/New VLC interface for Maemo]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Phytos|Antoine Lejeune]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Rafaël Carré&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
: The goal is to create a new interface for VLC with Maemo, a Debian-based development platform for handheld devices used by Nokia N800 and N810 devices and to package VLC for this platform.&lt;br /&gt;
: The main constraint are the small size of the screen which means the GUI must be thought specifically for this platform and the fact that the devices is not very powerful.&lt;br /&gt;
&lt;br /&gt;
== DLNA UPnP A/V integration ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/UPnP]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Mr_Mirsal|Mirsal Ennaime]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Rafaël Carré&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
  Even if it is controverted, UPnP A/V Is a widely used standard set of protocols for networked digital &lt;br /&gt;
  audio and video equipment interoperability, thus making it almost a requirement digital media software &lt;br /&gt;
  that aim to become real part of the average multimedia home network. This project aims to implement &lt;br /&gt;
  at least the Media Server part in VLC media player, which will enable it to advertise and stream media &lt;br /&gt;
  to DNLA UPnP A/V enabled devices, such as the PlayStation 3.&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11344</id>
		<title>SoC 2008/UPnP</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008/UPnP&amp;diff=11344"/>
		<updated>2008-04-24T12:16:02Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2008|student=[[User:Mr_Mirsal|Mirsal Ennaime]]|mentor=[[User:funman|Rafaël Carré]]}}&lt;br /&gt;
&lt;br /&gt;
= GSoC - DLNA UPnP A/V integration =&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008&amp;diff=11158</id>
		<title>SoC 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008&amp;diff=11158"/>
		<updated>2008-03-31T00:39:42Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: /* UPnP media service */ Oops, I clicked on Save page instead of Show preview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2008.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;VideoLAN is an official mentoring organization&#039;&#039; for {{VLC}} and [[x264]] for Google Summer of Code 2008.&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp; Information ==&lt;br /&gt;
&lt;br /&gt;
This wiki page covers the attempt by the [[VideoLAN]] project to act as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve {{VLC}} and [[x264]], the H.264 video encoder.&lt;br /&gt;
&lt;br /&gt;
* This page list the ideas for VLC.&lt;br /&gt;
* There is also a separate page for project ideas for the [[x264]]: [[SoC x264]].&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read the [[SoC_2008_Rules|rules]] and [[SoC_2008_Rules#Advices|advices]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform Multimedia player, and encoding and streaming application.&lt;br /&gt;
It is one of the most successful open-source projects without any professional structure underneath.&lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 4 millions from the main website (not including third-party distributions (Linux)), which means about 30 million people have downloaded VLC 0.8.5 from the main website!&lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main_Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC ideas will be included in the VLC 0.9.1 or any later version release, and covered by the GPL licence.&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We (the VideoLAN team, and [[User:J-b|jb]], the author of this page) have split this page in three lists of ideas:&lt;br /&gt;
* The &#039;&#039;main ideas&#039;&#039; are the ones we would like to focus on, and seem to be key projects for VLC and a lot more &#039;&#039;thrilling&#039;&#039; than the other ones; we have assigned a potential mentor to each of these.&lt;br /&gt;
* The other ideas are less detailed but could be good ideas too.&lt;br /&gt;
* Original good ideas will be valued. Last year, half of the ideas were given by students. [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
We don&#039;t want to impose anything. This is free and Open Source software. Last year, many projects were external ideas.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to apply for SoC but want other ideas to develop on, check the [[Mini Projects]] page!&lt;br /&gt;
&lt;br /&gt;
And on IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===x264===&lt;br /&gt;
For x264 ideas, please see [[SoC_x264]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Suite ===&lt;br /&gt;
This project aims at making automatic tests to improve VLC quality.&lt;br /&gt;
&lt;br /&gt;
* Write a series of tests for vlc-internal&lt;br /&gt;
* Integrate a framework for automated plugins testing with the automake build system&lt;br /&gt;
* Automate the different codec playback/mux/etc tests&lt;br /&gt;
* Automate the subtitles tests&lt;br /&gt;
* Write tests for the different bindings: Mac OS X Framework/Python Bindings... etc.&lt;br /&gt;
&lt;br /&gt;
This project is a code project, require some knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Pdherbemont]]&#039;&#039; (backup: courmisch)&lt;br /&gt;
&lt;br /&gt;
=== MTP Device Service Discovery ===&lt;br /&gt;
This projects consists of adding support for finding and reading content from attached USB MTP (Media Transfer Protocol) devices,&lt;br /&gt;
such as the Apple iPod, as a Service Discovery and input plugins for VLC.&lt;br /&gt;
&lt;br /&gt;
This project might need improvements in the Service Discovery subsystem for hotplug.&lt;br /&gt;
&lt;br /&gt;
This project needs a student to have a MP3 player device...&lt;br /&gt;
&lt;br /&gt;
You should have a look at [http://libmtp.sf.net libmtp library] and at [http://blog.songbirdnest.com/2008/02/29/mtp-device-support-for-windows/ Songbird MTP implementation].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: funman&#039;&#039; (backup jb)&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
Other panoramic data inputs include video surveillance cameras with a 360° lens, regular images, etc.&lt;br /&gt;
&lt;br /&gt;
This project is likely to require some modification of the VLC image handling code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#039;&#039; (backup Yuval Levy)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested students:&#039;&#039; [[User:Plouj]], [[User:Otarid|Otarid]]&lt;br /&gt;
&lt;br /&gt;
=== UPnP media service ===&lt;br /&gt;
This project involves adding support for advertizing the stream on the LAN using Universal Plug&#039;n&#039;Play A/V  / DLNA.&lt;br /&gt;
&lt;br /&gt;
Streaming to the PS3 can be one achievement of it.&lt;br /&gt;
&lt;br /&gt;
Using [http://libdlna.geexbox.org/ libdlna] might be a good idea.&lt;br /&gt;
&lt;br /&gt;
Having a cross platform solution is almost a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: funman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested students: [http://wiki.videolan.org/User_talk:Suheaven Hang Su] [[User:Mr_Mirsal | Mirsal Ennaime]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===  GUI interfaces for the browsers plug-ins ===&lt;br /&gt;
This project focuses on adding interfaces to our browser plug-ins, in order to have, in the web pages embedded mode, buttons to control {{VLC}} as in WMP or Youtube player. These buttons need to be cross-platform and cross-browsers.&lt;br /&gt;
&lt;br /&gt;
The second part of this project aims to provide a replacement for all preconfigured media players embedded in web pages, if possible.&lt;br /&gt;
 &lt;br /&gt;
For example, when a webpage asks for WMP embedded plugin, youtube player, quicktime player or any other, VLC would detect the stream and display it. This would mean less CPU needed than Flash based players...&lt;br /&gt;
&lt;br /&gt;
This project may need to work in concert with some improvements on the cache handling module access.&lt;br /&gt;
&lt;br /&gt;
The look of the interface should not be a problem (it can be added later on).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Fullscreen Controller ===&lt;br /&gt;
This project is easy to describe, it would provide a fullscreen controller for Linux/Unix and Windows, as {{VLC}} already has on Mac OS X version since 0.8.6.&lt;br /&gt;
&lt;br /&gt;
It should:&lt;br /&gt;
* be draggable, &lt;br /&gt;
* be clickable,&lt;br /&gt;
* support the classical control buttons to control VLC playback in fullscreen mode,&lt;br /&gt;
* have all the VLC functionalities in it.&lt;br /&gt;
&lt;br /&gt;
With this project, which is not too long, there should be some related work on Vout (Making sure the video output does not close and reopen between files for example...)&lt;br /&gt;
&lt;br /&gt;
This project needs basic C++ knowledge. Qt knowledge would be a plus.&lt;br /&gt;
&lt;br /&gt;
This project should be doable by any serious student in a summer.&lt;br /&gt;
&lt;br /&gt;
Aim: [http://download.videolan.org/vlc/screenshots/0.8.6/VLC-mac-Fullscreen.jpg VLC on Mac fullscreen controller]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039; (backup atmo)&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: BigBen&#039;&#039; (backup feepk)&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: pdherbemont, feepk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== iPhone / iPod touch port ===&lt;br /&gt;
Port VLC to the iPhone / iPod touch platform. &lt;br /&gt;
&lt;br /&gt;
The student is not required to own such a device due to the availability of a simulator as part of the official SDK, although it may be helpful.&lt;br /&gt;
&lt;br /&gt;
This project requires good C, preferably Obj-C, knowledge and basic skills in shell programming (autotools, ...). Previous experience with development for embedded devices is a strong plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: pdherbemont&#039;&#039; (backup feepk)&lt;br /&gt;
&lt;br /&gt;
=== Vista acceleration and DirectX improvements ===&lt;br /&gt;
Current versions of {{VLC}} have a lot of problems on Windows Vista (check the forums for specifics).&lt;br /&gt;
&lt;br /&gt;
We need support for the new EVR (enhanced video renderer) in Windows Vista, and make it the default Video Output module for that OS.&lt;br /&gt;
&lt;br /&gt;
See [http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/MED134_WH06.ppt Windows Vista Video Pipeline Architecture And Implementation] and [http://msdn2.microsoft.com/en-us/library/ms788119.aspx DirectShow Improvements in Vista]&lt;br /&gt;
&lt;br /&gt;
Some rework and enhancements of the DirectX and Direct3D Video Output modules may also be necessary.&lt;br /&gt;
&lt;br /&gt;
This project requires C++ experience. Knowledge of the related Win32 APIs is obviously a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: atmo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mentoring would be done by courmisch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Assembly optimizations in VLC ===&lt;br /&gt;
&lt;br /&gt;
If you are fond of writing ASM and you are fluent in MMX/SSE2, there are many interesting things in VLC to speed up.&lt;br /&gt;
* memcpy implementations in SSE2&lt;br /&gt;
* video filters ASM speedups&lt;br /&gt;
* audio filters ASM speedups&lt;br /&gt;
* Porting other ASM video filters to VLC.&lt;br /&gt;
* Profiling VLC.&lt;br /&gt;
&lt;br /&gt;
This project needs some good ASM knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jb, Dark_Shikari&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Matroska (mkv) muxing ===&lt;br /&gt;
&lt;br /&gt;
This project is about writing a mkv muxer for VLC with advanced support (chapters, multiple audio and multiple subtitles, etc...) like when you need to rip or archive a DVD.&lt;br /&gt;
&lt;br /&gt;
FFMPEG project has a similar project, and we could use the libavformat muxer and adapt ourselves, but we are not sure if we will be able to use therefore all the advanced features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;robUx4 can do the mentoring. He has already wrote the demux and has worked for matroska, so knows it very well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== WinCE port ===&lt;br /&gt;
The WinCE port has been broken for some time now before 0.8.4. Repairing the builds of all the external libraries build and making VLC build and work should take some time :D&lt;br /&gt;
&lt;br /&gt;
Then a rework of the interface should happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: djc.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
See with [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: rockyb.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mini Projects - More ideas ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Original&#039;&#039;&#039; ideas will be &#039;&#039;&#039;rewarded.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].&lt;br /&gt;
&lt;br /&gt;
* Visualisation improvements (libprojectM implementation ? )&lt;br /&gt;
* Video rework.&lt;br /&gt;
&lt;br /&gt;
== Questions? Contact us? ==&lt;br /&gt;
If you need to contact us for any questions, you can:&lt;br /&gt;
* use this [[Talk:SoC_2008| Talk page]], &lt;br /&gt;
* use the [http://www.videolan.org/developers/lists.html vlc-devel] mailing list,&lt;br /&gt;
* come on IRC irc://irc.videolan.org #videolan&lt;br /&gt;
* contact one of the mentors or the backup mentors,&lt;br /&gt;
* or contact [[User:J-b| Jean-Baptiste Kempf]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
The proposed mentors are:&lt;br /&gt;
* courmisch,&lt;br /&gt;
* dionoea,&lt;br /&gt;
* djc&lt;br /&gt;
* feepk,&lt;br /&gt;
* pdherbemont,&lt;br /&gt;
* jb,&lt;br /&gt;
* funman,&lt;br /&gt;
* robUx4,&lt;br /&gt;
* BigBen&lt;br /&gt;
* rockyb (for VCD/SVCD)&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]]&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008&amp;diff=11157</id>
		<title>SoC 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008&amp;diff=11157"/>
		<updated>2008-03-31T00:38:30Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2008.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;VideoLAN is an official mentoring organization&#039;&#039; for {{VLC}} and [[x264]] for Google Summer of Code 2008.&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp; Information ==&lt;br /&gt;
&lt;br /&gt;
This wiki page covers the attempt by the [[VideoLAN]] project to act as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve {{VLC}} and [[x264]], the H.264 video encoder.&lt;br /&gt;
&lt;br /&gt;
* This page list the ideas for VLC.&lt;br /&gt;
* There is also a separate page for project ideas for the [[x264]]: [[SoC x264]].&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read the [[SoC_2008_Rules|rules]] and [[SoC_2008_Rules#Advices|advices]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform Multimedia player, and encoding and streaming application.&lt;br /&gt;
It is one of the most successful open-source projects without any professional structure underneath.&lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 4 millions from the main website (not including third-party distributions (Linux)), which means about 30 million people have downloaded VLC 0.8.5 from the main website!&lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main_Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC ideas will be included in the VLC 0.9.1 or any later version release, and covered by the GPL licence.&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We (the VideoLAN team, and [[User:J-b|jb]], the author of this page) have split this page in three lists of ideas:&lt;br /&gt;
* The &#039;&#039;main ideas&#039;&#039; are the ones we would like to focus on, and seem to be key projects for VLC and a lot more &#039;&#039;thrilling&#039;&#039; than the other ones; we have assigned a potential mentor to each of these.&lt;br /&gt;
* The other ideas are less detailed but could be good ideas too.&lt;br /&gt;
* Original good ideas will be valued. Last year, half of the ideas were given by students. [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
We don&#039;t want to impose anything. This is free and Open Source software. Last year, many projects were external ideas.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to apply for SoC but want other ideas to develop on, check the [[Mini Projects]] page!&lt;br /&gt;
&lt;br /&gt;
And on IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===x264===&lt;br /&gt;
For x264 ideas, please see [[SoC_x264]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Suite ===&lt;br /&gt;
This project aims at making automatic tests to improve VLC quality.&lt;br /&gt;
&lt;br /&gt;
* Write a series of tests for vlc-internal&lt;br /&gt;
* Integrate a framework for automated plugins testing with the automake build system&lt;br /&gt;
* Automate the different codec playback/mux/etc tests&lt;br /&gt;
* Automate the subtitles tests&lt;br /&gt;
* Write tests for the different bindings: Mac OS X Framework/Python Bindings... etc.&lt;br /&gt;
&lt;br /&gt;
This project is a code project, require some knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Pdherbemont]]&#039;&#039; (backup: courmisch)&lt;br /&gt;
&lt;br /&gt;
=== MTP Device Service Discovery ===&lt;br /&gt;
This projects consists of adding support for finding and reading content from attached USB MTP (Media Transfer Protocol) devices,&lt;br /&gt;
such as the Apple iPod, as a Service Discovery and input plugins for VLC.&lt;br /&gt;
&lt;br /&gt;
This project might need improvements in the Service Discovery subsystem for hotplug.&lt;br /&gt;
&lt;br /&gt;
This project needs a student to have a MP3 player device...&lt;br /&gt;
&lt;br /&gt;
You should have a look at [http://libmtp.sf.net libmtp library] and at [http://blog.songbirdnest.com/2008/02/29/mtp-device-support-for-windows/ Songbird MTP implementation].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: funman&#039;&#039; (backup jb)&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
Other panoramic data inputs include video surveillance cameras with a 360° lens, regular images, etc.&lt;br /&gt;
&lt;br /&gt;
This project is likely to require some modification of the VLC image handling code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#039;&#039; (backup Yuval Levy)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested students:&#039;&#039; [[User:Plouj]], [[User:Otarid|Otarid]]&lt;br /&gt;
&lt;br /&gt;
=== UPnP media service ===&lt;br /&gt;
This project involves adding support for advertizing the stream on the LAN using Universal Plug&#039;n&#039;Play A/V  / DLNA.&lt;br /&gt;
&lt;br /&gt;
Streaming to the PS3 can be one achievement of it.&lt;br /&gt;
&lt;br /&gt;
Using [http://libdlna.geexbox.org/ libdlna] might be a good idea.&lt;br /&gt;
&lt;br /&gt;
Having a cross platform solution is almost a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: funman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested students: [http://wiki.videolan.org/User_talk:Suheaven Hang Su] [[User:Mr_Mirsal Mirsal Ennaime]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===  GUI interfaces for the browsers plug-ins ===&lt;br /&gt;
This project focuses on adding interfaces to our browser plug-ins, in order to have, in the web pages embedded mode, buttons to control {{VLC}} as in WMP or Youtube player. These buttons need to be cross-platform and cross-browsers.&lt;br /&gt;
&lt;br /&gt;
The second part of this project aims to provide a replacement for all preconfigured media players embedded in web pages, if possible.&lt;br /&gt;
 &lt;br /&gt;
For example, when a webpage asks for WMP embedded plugin, youtube player, quicktime player or any other, VLC would detect the stream and display it. This would mean less CPU needed than Flash based players...&lt;br /&gt;
&lt;br /&gt;
This project may need to work in concert with some improvements on the cache handling module access.&lt;br /&gt;
&lt;br /&gt;
The look of the interface should not be a problem (it can be added later on).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Fullscreen Controller ===&lt;br /&gt;
This project is easy to describe, it would provide a fullscreen controller for Linux/Unix and Windows, as {{VLC}} already has on Mac OS X version since 0.8.6.&lt;br /&gt;
&lt;br /&gt;
It should:&lt;br /&gt;
* be draggable, &lt;br /&gt;
* be clickable,&lt;br /&gt;
* support the classical control buttons to control VLC playback in fullscreen mode,&lt;br /&gt;
* have all the VLC functionalities in it.&lt;br /&gt;
&lt;br /&gt;
With this project, which is not too long, there should be some related work on Vout (Making sure the video output does not close and reopen between files for example...)&lt;br /&gt;
&lt;br /&gt;
This project needs basic C++ knowledge. Qt knowledge would be a plus.&lt;br /&gt;
&lt;br /&gt;
This project should be doable by any serious student in a summer.&lt;br /&gt;
&lt;br /&gt;
Aim: [http://download.videolan.org/vlc/screenshots/0.8.6/VLC-mac-Fullscreen.jpg VLC on Mac fullscreen controller]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039; (backup atmo)&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: BigBen&#039;&#039; (backup feepk)&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: pdherbemont, feepk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== iPhone / iPod touch port ===&lt;br /&gt;
Port VLC to the iPhone / iPod touch platform. &lt;br /&gt;
&lt;br /&gt;
The student is not required to own such a device due to the availability of a simulator as part of the official SDK, although it may be helpful.&lt;br /&gt;
&lt;br /&gt;
This project requires good C, preferably Obj-C, knowledge and basic skills in shell programming (autotools, ...). Previous experience with development for embedded devices is a strong plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: pdherbemont&#039;&#039; (backup feepk)&lt;br /&gt;
&lt;br /&gt;
=== Vista acceleration and DirectX improvements ===&lt;br /&gt;
Current versions of {{VLC}} have a lot of problems on Windows Vista (check the forums for specifics).&lt;br /&gt;
&lt;br /&gt;
We need support for the new EVR (enhanced video renderer) in Windows Vista, and make it the default Video Output module for that OS.&lt;br /&gt;
&lt;br /&gt;
See [http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/MED134_WH06.ppt Windows Vista Video Pipeline Architecture And Implementation] and [http://msdn2.microsoft.com/en-us/library/ms788119.aspx DirectShow Improvements in Vista]&lt;br /&gt;
&lt;br /&gt;
Some rework and enhancements of the DirectX and Direct3D Video Output modules may also be necessary.&lt;br /&gt;
&lt;br /&gt;
This project requires C++ experience. Knowledge of the related Win32 APIs is obviously a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: atmo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mentoring would be done by courmisch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Assembly optimizations in VLC ===&lt;br /&gt;
&lt;br /&gt;
If you are fond of writing ASM and you are fluent in MMX/SSE2, there are many interesting things in VLC to speed up.&lt;br /&gt;
* memcpy implementations in SSE2&lt;br /&gt;
* video filters ASM speedups&lt;br /&gt;
* audio filters ASM speedups&lt;br /&gt;
* Porting other ASM video filters to VLC.&lt;br /&gt;
* Profiling VLC.&lt;br /&gt;
&lt;br /&gt;
This project needs some good ASM knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jb, Dark_Shikari&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Matroska (mkv) muxing ===&lt;br /&gt;
&lt;br /&gt;
This project is about writing a mkv muxer for VLC with advanced support (chapters, multiple audio and multiple subtitles, etc...) like when you need to rip or archive a DVD.&lt;br /&gt;
&lt;br /&gt;
FFMPEG project has a similar project, and we could use the libavformat muxer and adapt ourselves, but we are not sure if we will be able to use therefore all the advanced features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;robUx4 can do the mentoring. He has already wrote the demux and has worked for matroska, so knows it very well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== WinCE port ===&lt;br /&gt;
The WinCE port has been broken for some time now before 0.8.4. Repairing the builds of all the external libraries build and making VLC build and work should take some time :D&lt;br /&gt;
&lt;br /&gt;
Then a rework of the interface should happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: djc.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
See with [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: rockyb.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mini Projects - More ideas ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Original&#039;&#039;&#039; ideas will be &#039;&#039;&#039;rewarded.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].&lt;br /&gt;
&lt;br /&gt;
* Visualisation improvements (libprojectM implementation ? )&lt;br /&gt;
* Video rework.&lt;br /&gt;
&lt;br /&gt;
== Questions? Contact us? ==&lt;br /&gt;
If you need to contact us for any questions, you can:&lt;br /&gt;
* use this [[Talk:SoC_2008| Talk page]], &lt;br /&gt;
* use the [http://www.videolan.org/developers/lists.html vlc-devel] mailing list,&lt;br /&gt;
* come on IRC irc://irc.videolan.org #videolan&lt;br /&gt;
* contact one of the mentors or the backup mentors,&lt;br /&gt;
* or contact [[User:J-b| Jean-Baptiste Kempf]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
The proposed mentors are:&lt;br /&gt;
* courmisch,&lt;br /&gt;
* dionoea,&lt;br /&gt;
* djc&lt;br /&gt;
* feepk,&lt;br /&gt;
* pdherbemont,&lt;br /&gt;
* jb,&lt;br /&gt;
* funman,&lt;br /&gt;
* robUx4,&lt;br /&gt;
* BigBen&lt;br /&gt;
* rockyb (for VCD/SVCD)&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]]&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=11156</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=11156"/>
		<updated>2008-03-31T00:35:52Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lyon, France.&lt;br /&gt;
&lt;br /&gt;
Helping a bit with D-Bus stuff,&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com&lt;br /&gt;
or bug me on IRC, (Mr_Mirsal on irc.freenode.net)&lt;br /&gt;
&lt;br /&gt;
http://mirsal.ennaime.free.fr&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=8921</id>
		<title>User:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Mr_Mirsal&amp;diff=8921"/>
		<updated>2007-06-01T12:33:41Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lyon, France.&lt;br /&gt;
&lt;br /&gt;
Helping a bit with D-Bus stuff,&lt;br /&gt;
&lt;br /&gt;
Contact me at mirsal dot ennaime at gmail dot com&lt;br /&gt;
Or bug me on IRC, (Mr_Mirsal on irc.freenode.net)&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User_talk:Mr_Mirsal&amp;diff=8920</id>
		<title>User talk:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User_talk:Mr_Mirsal&amp;diff=8920"/>
		<updated>2007-06-01T12:31:55Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;\_o&amp;lt; Coin.&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User_talk:Mr_Mirsal&amp;diff=8912</id>
		<title>User talk:Mr Mirsal</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User_talk:Mr_Mirsal&amp;diff=8912"/>
		<updated>2007-06-01T10:45:37Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mirsal dot ennaime at gmail dot com&lt;br /&gt;
Mr_Mirsal on irc.freenode.net&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=7505</id>
		<title>DBus-spec</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=7505"/>
		<updated>2007-02-02T08:13:01Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Edited signals names.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specification for a Common, Desktop neutral, Media Player D-Bus interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note this document is not specific to VLC and is a work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red; font-weight: bold&amp;quot;&amp;gt;THIS IS A DRAFT&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What follows has been largely stolen from http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
This is an attempt to create a specification for media players to use, for &#039;&#039;&#039;YOUR&#039;&#039;&#039; applications to be able to interact with &#039;&#039;&#039;ANY&#039;&#039;&#039; Media Player &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use on &#039;&#039;&#039;ANY&#039;&#039;&#039; desktop &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use.&lt;br /&gt;
&lt;br /&gt;
This is in the spirit of http://www.freedesktop.org and uses code and ideas from this project, most notably D-Bus : http://dbus.freedesktop.org and uses ideas from http://www.musicbrainz.org&lt;br /&gt;
&lt;br /&gt;
= Other players =&lt;br /&gt;
&lt;br /&gt;
How other &amp;quot;Media Players&amp;quot; interact with D-Bus&lt;br /&gt;
&lt;br /&gt;
== bmpx ==&lt;br /&gt;
&lt;br /&gt;
http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
== banshee ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/*checkout*/banshee/src/Banshee.Base/DBusPlayer.cs&lt;br /&gt;
&lt;br /&gt;
== rhythmbox ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/rhythmbox/remote/dbus/rb-client.c?view=markup&lt;br /&gt;
&lt;br /&gt;
== muine ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/muine/DBusLib/Player.cs?view=markup&lt;br /&gt;
&lt;br /&gt;
== amarok ==&lt;br /&gt;
&lt;br /&gt;
http://amarok.kde.org/wiki/DCOP_Functions&lt;br /&gt;
(D-Bus will replace dcop in kde4 ?)&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Media Player&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
An application, either with GUI or GUI-less (or which allows for both modes of operation) which is capable of playing back audio/video streams. The means by which it does accomplish that (e.g. which audio backend to use, and which output method) is out of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Media Player&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Be able to play back at least local storage file streams.&lt;br /&gt;
* Be able to play back at least one stream at a time.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Client&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The Client is an unspecified application that will interact with the &amp;quot;Media Player&amp;quot; using D-Bus protocol.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A softphone, that pauses, or step the volume down, when a call is being received.&lt;br /&gt;
* An applet that nicely integrates in your desktop environment, to control your &amp;quot;Media Player&amp;quot;.&lt;br /&gt;
* An instant messaging client which informs your buddies of what you&#039;re listening to.&lt;br /&gt;
* A monitor that stores in a database what you are listening to, for statistics purpose.&lt;br /&gt;
* A video editing software that calls an external &amp;quot;Media Player&amp;quot; to preview your work.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Tracklist&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
A list of media files which resides within the &amp;quot;Media Player&amp;quot;, and whose implementation is opaque to the remote interface.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Hold an ordered list of locations of the media files as URIs (e.g. file:// or &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;). The implementation of this can be opaque, which means, it does not neccesarily need to store URIs, but upon remote request, it must be able to return an URI for a given media file.&lt;br /&gt;
* Keep the list in an ordered fashion. The order can be changed at any time trough e.g. sorting algorithms, in which case the &amp;quot;Media Player&amp;quot; must send information about the reordering trough it&#039;s remote interface&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;can&#039;&#039;&#039;, but does not &#039;&#039;&#039;need&#039;&#039;&#039; to:&lt;br /&gt;
* Hold &amp;quot;Metadata&amp;quot; about media files&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Metadata&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is data that the files carry within themselves as a means of self-identification (commonly known as &amp;quot;tags&amp;quot;), or data that has been retrieved about the files trough other means, e.g. an internet service that provides additional data about particular media files.&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is an array of dict entries, like (&amp;quot;length&amp;quot;, 253), (&amp;quot;name&amp;quot;, &amp;quot;Bolero&amp;quot;), (&amp;quot;video-codec&amp;quot;, &amp;quot;DIVX&amp;quot;). The dict entry is in the form (string, variant) eg: {sv}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, &amp;quot;Metadata&amp;quot; can be split into two categories:&lt;br /&gt;
&lt;br /&gt;
1) Technical metadata:&lt;br /&gt;
* &amp;quot;URI&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;length&amp;quot;:&amp;quot;i&amp;quot; (length in seconds)&lt;br /&gt;
* &amp;quot;video-codec&amp;quot;:&amp;quot;s&amp;quot; (video codec as a fourcc)&lt;br /&gt;
* &amp;quot;audio-codec&amp;quot;:&amp;quot;s&amp;quot; (audio codec as a fourcc)&lt;br /&gt;
* &amp;quot;video-bitrate&amp;quot;:&amp;quot;i&amp;quot; video bitrate&lt;br /&gt;
* &amp;quot;audio-bitrate&amp;quot;:&amp;quot;i&amp;quot; audio bitrate&lt;br /&gt;
* &amp;quot;audio-samplerate&amp;quot;:&amp;quot;i&amp;quot; (audio samplerate)&lt;br /&gt;
&lt;br /&gt;
2) Informational metadata&lt;br /&gt;
* &amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;artist&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;album&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;unique-id&amp;quot;:&amp;quot;s&amp;quot; : Musicbrainz Track Identifier as specified on http://musicbrainz.org/docs/specs/metadata_tags.html&lt;br /&gt;
* &amp;quot;genre&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This list is informative, and can be extended up to your needs, for example: &amp;quot;age of the captain&amp;quot;:&amp;quot;i&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only Required fields are: &amp;quot;URI&amp;quot; and &amp;quot;length&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= D-Bus =&lt;br /&gt;
&lt;br /&gt;
== The Service ==&lt;br /&gt;
&lt;br /&gt;
org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
All &amp;quot;Media Players&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039; request this name and do not let other &amp;quot;Media Players&amp;quot; &#039;steal&#039; this name.&lt;br /&gt;
Using libdbus, that would be:&lt;br /&gt;
&lt;br /&gt;
 DBusConnection *dbus_connection;&lt;br /&gt;
 DBusError dbus_error;&lt;br /&gt;
 dbus_bus_request_name( dbus_connection, &amp;quot;org.freedesktop.MediaPlayer&amp;quot;, 0, &amp;amp;dbus_error );&lt;br /&gt;
&lt;br /&gt;
To be able to request the name, and so, be able to communicate via D-Bus, no &amp;quot;Media Player&amp;quot; must be running. The &amp;quot;Media Player&amp;quot; may call the Quit method, and wait till the name is unregistered, to ensure this is the case.&lt;br /&gt;
&lt;br /&gt;
: I think this is a bad idea, it&#039;s not the place for a interop Spec to force single instance behaviour without a good reason (i run amarok all the time and use vlc to play videos or streams...). Why not suggest that mediaplayers register with the well known service name (&amp;quot;org.freedesktop.MediaPlayer&amp;quot;) with the options QueueService and suggest the media player should register an application specific service in addition?&lt;br /&gt;
&lt;br /&gt;
: if done that way we gain the feature to query the dbus daemon for all clients queued for that dbus name, so enumerating all current musicplayers that support the Spec is not problem. Contacting the players is not problem to because every client on dbus has a unique name anyway. DBus signal do AFAIK carry the dbus service name of the sending client, so there is no trouble knowing which player send a signal. [[User:textshell|textshell]]&lt;br /&gt;
&lt;br /&gt;
== The Object Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* / : Media Player identification&lt;br /&gt;
&lt;br /&gt;
* /Player : Playback control&lt;br /&gt;
&lt;br /&gt;
* /TrackList : TrackList management&lt;br /&gt;
&lt;br /&gt;
== The interface ==&lt;br /&gt;
&lt;br /&gt;
All methods must be accessed through the interface org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
i.e. calling Quit with qdbus would be:&lt;br /&gt;
 $ qdbus org.freedesktop.MediaPlayer /Player org.freedesktop.MediaPlayer.Quit&lt;br /&gt;
&lt;br /&gt;
== The Methods ==&lt;br /&gt;
&lt;br /&gt;
* /&lt;br /&gt;
&lt;br /&gt;
Identity : Identify the &amp;quot;Media Player&amp;quot; as in &amp;quot;VLC 0.9.0&amp;quot;, &amp;quot;bmpx 0.34.9&amp;quot;, &amp;quot;Totem 2.16.2&amp;quot; ...&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Identity&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /TrackList&lt;br /&gt;
&lt;br /&gt;
GetMetadata : Gives all meta data available for element at given position in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;method name=&amp;quot;GetMetadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;in&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;a{sv}&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetCurrentTrack : Position of Current URI in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetCurrentTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetLength : Number of elements in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetLength&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddTrack : Appends an URI in the &amp;quot;TrackList&amp;quot;, play it immediately if the 2nd argument is TRUE&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;AddTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DelTrack : Removes an URI from the &amp;quot;TrackList&amp;quot;, given its position&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;DelTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /Player&lt;br /&gt;
&lt;br /&gt;
Next : Goes to the next element (what if we&#039;re at the end?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Next&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prev : Goes to the previous element (what if we&#039;re at the beginning?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Prev&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pause : If playing : pause. If paused : unpause. If stopped : start playing&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Pause&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop : Stop playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Stop&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play : If playing : rewind to the beginning of current track, else : start playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Play&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit : Makes the &amp;quot;Media Player&amp;quot; exit.&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Quit&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetStatus : Return the status of &amp;quot;Media Player&amp;quot;: 0 = Playing, 1 = Paused, 2 = Stopped.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetStatus&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VolumeSet : Sets the volume (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetVolume : Returns the current volume (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionSet : Sets the playing position (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionGet : Returns the playing position (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The signals ==&lt;br /&gt;
&lt;br /&gt;
TrackChange : Signal is emitted when the &amp;quot;Media Player&amp;quot; plays another &amp;quot;Track&amp;quot;. Argument of the signal is the metadata attached to the new &amp;quot;Track&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;TrackChange&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;a{sv}&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
StatusChange : Signal is emitted when the status of the &amp;quot;Media Player&amp;quot; change. The argument has the same meaning than the value returned by GetStatus.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;StatusChange&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CapabilityChange : [TODO] Signal is emitted when the &amp;quot;Media Player&amp;quot; changes capabilities, Flags are CAN_GO_NEXT CAN_GO_PREV CAN_PAUSE CAN_PLAY CAN_SEEK CAN_PROVIDE_METADATA PROVIDES_TIMING&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;CapabilityChange&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=TODO /&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification MPRIS Interfacing Specification] (BMPx wiki)&lt;br /&gt;
* [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces Media Player Interfaces] (XMMS2 wiki)&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=7504</id>
		<title>DBus-spec</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=7504"/>
		<updated>2007-02-02T08:06:31Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Edited method names.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specification for a Common, Desktop neutral, Media Player D-Bus interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note this document is not specific to VLC and is a work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red; font-weight: bold&amp;quot;&amp;gt;THIS IS A DRAFT&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What follows has been largely stolen from http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
This is an attempt to create a specification for media players to use, for &#039;&#039;&#039;YOUR&#039;&#039;&#039; applications to be able to interact with &#039;&#039;&#039;ANY&#039;&#039;&#039; Media Player &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use on &#039;&#039;&#039;ANY&#039;&#039;&#039; desktop &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use.&lt;br /&gt;
&lt;br /&gt;
This is in the spirit of http://www.freedesktop.org and uses code and ideas from this project, most notably D-Bus : http://dbus.freedesktop.org and uses ideas from http://www.musicbrainz.org&lt;br /&gt;
&lt;br /&gt;
= Other players =&lt;br /&gt;
&lt;br /&gt;
How other &amp;quot;Media Players&amp;quot; interact with D-Bus&lt;br /&gt;
&lt;br /&gt;
== bmpx ==&lt;br /&gt;
&lt;br /&gt;
http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
== banshee ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/*checkout*/banshee/src/Banshee.Base/DBusPlayer.cs&lt;br /&gt;
&lt;br /&gt;
== rhythmbox ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/rhythmbox/remote/dbus/rb-client.c?view=markup&lt;br /&gt;
&lt;br /&gt;
== muine ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/muine/DBusLib/Player.cs?view=markup&lt;br /&gt;
&lt;br /&gt;
== amarok ==&lt;br /&gt;
&lt;br /&gt;
http://amarok.kde.org/wiki/DCOP_Functions&lt;br /&gt;
(D-Bus will replace dcop in kde4 ?)&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Media Player&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
An application, either with GUI or GUI-less (or which allows for both modes of operation) which is capable of playing back audio/video streams. The means by which it does accomplish that (e.g. which audio backend to use, and which output method) is out of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Media Player&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Be able to play back at least local storage file streams.&lt;br /&gt;
* Be able to play back at least one stream at a time.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Client&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The Client is an unspecified application that will interact with the &amp;quot;Media Player&amp;quot; using D-Bus protocol.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A softphone, that pauses, or step the volume down, when a call is being received.&lt;br /&gt;
* An applet that nicely integrates in your desktop environment, to control your &amp;quot;Media Player&amp;quot;.&lt;br /&gt;
* An instant messaging client which informs your buddies of what you&#039;re listening to.&lt;br /&gt;
* A monitor that stores in a database what you are listening to, for statistics purpose.&lt;br /&gt;
* A video editing software that calls an external &amp;quot;Media Player&amp;quot; to preview your work.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Tracklist&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
A list of media files which resides within the &amp;quot;Media Player&amp;quot;, and whose implementation is opaque to the remote interface.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Hold an ordered list of locations of the media files as URIs (e.g. file:// or &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;). The implementation of this can be opaque, which means, it does not neccesarily need to store URIs, but upon remote request, it must be able to return an URI for a given media file.&lt;br /&gt;
* Keep the list in an ordered fashion. The order can be changed at any time trough e.g. sorting algorithms, in which case the &amp;quot;Media Player&amp;quot; must send information about the reordering trough it&#039;s remote interface&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;can&#039;&#039;&#039;, but does not &#039;&#039;&#039;need&#039;&#039;&#039; to:&lt;br /&gt;
* Hold &amp;quot;Metadata&amp;quot; about media files&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Metadata&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is data that the files carry within themselves as a means of self-identification (commonly known as &amp;quot;tags&amp;quot;), or data that has been retrieved about the files trough other means, e.g. an internet service that provides additional data about particular media files.&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is an array of dict entries, like (&amp;quot;length&amp;quot;, 253), (&amp;quot;name&amp;quot;, &amp;quot;Bolero&amp;quot;), (&amp;quot;video-codec&amp;quot;, &amp;quot;DIVX&amp;quot;). The dict entry is in the form (string, variant) eg: {sv}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, &amp;quot;Metadata&amp;quot; can be split into two categories:&lt;br /&gt;
&lt;br /&gt;
1) Technical metadata:&lt;br /&gt;
* &amp;quot;URI&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;length&amp;quot;:&amp;quot;i&amp;quot; (length in seconds)&lt;br /&gt;
* &amp;quot;video-codec&amp;quot;:&amp;quot;s&amp;quot; (video codec as a fourcc)&lt;br /&gt;
* &amp;quot;audio-codec&amp;quot;:&amp;quot;s&amp;quot; (audio codec as a fourcc)&lt;br /&gt;
* &amp;quot;video-bitrate&amp;quot;:&amp;quot;i&amp;quot; video bitrate&lt;br /&gt;
* &amp;quot;audio-bitrate&amp;quot;:&amp;quot;i&amp;quot; audio bitrate&lt;br /&gt;
* &amp;quot;audio-samplerate&amp;quot;:&amp;quot;i&amp;quot; (audio samplerate)&lt;br /&gt;
&lt;br /&gt;
2) Informational metadata&lt;br /&gt;
* &amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;artist&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;album&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;unique-id&amp;quot;:&amp;quot;s&amp;quot; : Musicbrainz Track Identifier as specified on http://musicbrainz.org/docs/specs/metadata_tags.html&lt;br /&gt;
* &amp;quot;genre&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This list is informative, and can be extended up to your needs, for example: &amp;quot;age of the captain&amp;quot;:&amp;quot;i&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only Required fields are: &amp;quot;URI&amp;quot; and &amp;quot;length&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= D-Bus =&lt;br /&gt;
&lt;br /&gt;
== The Service ==&lt;br /&gt;
&lt;br /&gt;
org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
All &amp;quot;Media Players&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039; request this name and do not let other &amp;quot;Media Players&amp;quot; &#039;steal&#039; this name.&lt;br /&gt;
Using libdbus, that would be:&lt;br /&gt;
&lt;br /&gt;
 DBusConnection *dbus_connection;&lt;br /&gt;
 DBusError dbus_error;&lt;br /&gt;
 dbus_bus_request_name( dbus_connection, &amp;quot;org.freedesktop.MediaPlayer&amp;quot;, 0, &amp;amp;dbus_error );&lt;br /&gt;
&lt;br /&gt;
To be able to request the name, and so, be able to communicate via D-Bus, no &amp;quot;Media Player&amp;quot; must be running. The &amp;quot;Media Player&amp;quot; may call the Quit method, and wait till the name is unregistered, to ensure this is the case.&lt;br /&gt;
&lt;br /&gt;
: I think this is a bad idea, it&#039;s not the place for a interop Spec to force single instance behaviour without a good reason (i run amarok all the time and use vlc to play videos or streams...). Why not suggest that mediaplayers register with the well known service name (&amp;quot;org.freedesktop.MediaPlayer&amp;quot;) with the options QueueService and suggest the media player should register an application specific service in addition?&lt;br /&gt;
&lt;br /&gt;
: if done that way we gain the feature to query the dbus daemon for all clients queued for that dbus name, so enumerating all current musicplayers that support the Spec is not problem. Contacting the players is not problem to because every client on dbus has a unique name anyway. DBus signal do AFAIK carry the dbus service name of the sending client, so there is no trouble knowing which player send a signal. [[User:textshell|textshell]]&lt;br /&gt;
&lt;br /&gt;
== The Object Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* / : Media Player identification&lt;br /&gt;
&lt;br /&gt;
* /Player : Playback control&lt;br /&gt;
&lt;br /&gt;
* /TrackList : TrackList management&lt;br /&gt;
&lt;br /&gt;
== The interface ==&lt;br /&gt;
&lt;br /&gt;
All methods must be accessed through the interface org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
i.e. calling Quit with qdbus would be:&lt;br /&gt;
 $ qdbus org.freedesktop.MediaPlayer /Player org.freedesktop.MediaPlayer.Quit&lt;br /&gt;
&lt;br /&gt;
== The Methods ==&lt;br /&gt;
&lt;br /&gt;
* /&lt;br /&gt;
&lt;br /&gt;
Identity : Identify the &amp;quot;Media Player&amp;quot; as in &amp;quot;VLC 0.9.0&amp;quot;, &amp;quot;bmpx 0.34.9&amp;quot;, &amp;quot;Totem 2.16.2&amp;quot; ...&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Identity&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /TrackList&lt;br /&gt;
&lt;br /&gt;
GetMetadata : Gives all meta data available for element at given position in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;method name=&amp;quot;GetMetadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;in&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;a{sv}&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetCurrentTrack : Position of Current URI in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetCurrentTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetLength : Number of elements in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetLength&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddTrack : Appends an URI in the &amp;quot;TrackList&amp;quot;, play it immediately if the 2nd argument is TRUE&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;AddTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DelTrack : Removes an URI from the &amp;quot;TrackList&amp;quot;, given its position&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;DelTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /Player&lt;br /&gt;
&lt;br /&gt;
Next : Goes to the next element (what if we&#039;re at the end?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Next&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prev : Goes to the previous element (what if we&#039;re at the beginning?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Prev&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pause : If playing : pause. If paused : unpause. If stopped : start playing&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Pause&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop : Stop playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Stop&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play : If playing : rewind to the beginning of current track, else : start playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Play&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit : Makes the &amp;quot;Media Player&amp;quot; exit.&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Quit&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetStatus : Return the status of &amp;quot;Media Player&amp;quot;: 0 = Playing, 1 = Paused, 2 = Stopped.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetStatus&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VolumeSet : Sets the volume (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetVolume : Returns the current volume (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionSet : Sets the playing position (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionGet : Returns the playing position (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The signals ==&lt;br /&gt;
&lt;br /&gt;
New_Track : Signal is emitted when the &amp;quot;Media Player&amp;quot; plays another &amp;quot;Track&amp;quot;. Argument of the signal is the metadata attached to the new &amp;quot;Track&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;New_Track&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;a{sv}&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
New_Status : Signal is emitted when the status of the &amp;quot;Media Player&amp;quot; change. The argument has the same meaning than the value returned by Get_Status.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;New_Status&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
New_Capabilities : [TODO] Signal is emitted when the &amp;quot;Media Player&amp;quot; changes capabilities, Flags are CAN_GO_NEXT CAN_GO_PREV CAN_PAUSE CAN_PLAY CAN_SEEK CAN_PROVIDE_METADATA PROVIDES_TIMING&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;New_Capabilities&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=TODO /&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification MPRIS Interfacing Specification] (BMPx wiki)&lt;br /&gt;
* [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces Media Player Interfaces] (XMMS2 wiki)&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=7503</id>
		<title>DBus-spec</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=7503"/>
		<updated>2007-02-01T23:17:07Z</updated>

		<summary type="html">&lt;p&gt;Mr Mirsal: Added New_Capabilities signal definition draft.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specification for a Common, Desktop neutral, Media Player D-Bus interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note this document is not specific to VLC and is a work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red; font-weight: bold&amp;quot;&amp;gt;THIS IS A DRAFT&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What follows has been largely stolen from http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
This is an attempt to create a specification for media players to use, for &#039;&#039;&#039;YOUR&#039;&#039;&#039; applications to be able to interact with &#039;&#039;&#039;ANY&#039;&#039;&#039; Media Player &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use on &#039;&#039;&#039;ANY&#039;&#039;&#039; desktop &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use.&lt;br /&gt;
&lt;br /&gt;
This is in the spirit of http://www.freedesktop.org and uses code and ideas from this project, most notably D-Bus : http://dbus.freedesktop.org and uses ideas from http://www.musicbrainz.org&lt;br /&gt;
&lt;br /&gt;
= Other players =&lt;br /&gt;
&lt;br /&gt;
How other &amp;quot;Media Players&amp;quot; interact with D-Bus&lt;br /&gt;
&lt;br /&gt;
== bmpx ==&lt;br /&gt;
&lt;br /&gt;
http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
== banshee ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/*checkout*/banshee/src/Banshee.Base/DBusPlayer.cs&lt;br /&gt;
&lt;br /&gt;
== rhythmbox ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/rhythmbox/remote/dbus/rb-client.c?view=markup&lt;br /&gt;
&lt;br /&gt;
== muine ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/muine/DBusLib/Player.cs?view=markup&lt;br /&gt;
&lt;br /&gt;
== amarok ==&lt;br /&gt;
&lt;br /&gt;
http://amarok.kde.org/wiki/DCOP_Functions&lt;br /&gt;
(D-Bus will replace dcop in kde4 ?)&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Media Player&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
An application, either with GUI or GUI-less (or which allows for both modes of operation) which is capable of playing back audio/video streams. The means by which it does accomplish that (e.g. which audio backend to use, and which output method) is out of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Media Player&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Be able to play back at least local storage file streams.&lt;br /&gt;
* Be able to play back at least one stream at a time.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Client&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The Client is an unspecified application that will interact with the &amp;quot;Media Player&amp;quot; using D-Bus protocol.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A softphone, that pauses, or step the volume down, when a call is being received.&lt;br /&gt;
* An applet that nicely integrates in your desktop environment, to control your &amp;quot;Media Player&amp;quot;.&lt;br /&gt;
* An instant messaging client which informs your buddies of what you&#039;re listening to.&lt;br /&gt;
* A monitor that stores in a database what you are listening to, for statistics purpose.&lt;br /&gt;
* A video editing software that calls an external &amp;quot;Media Player&amp;quot; to preview your work.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Tracklist&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
A list of media files which resides within the &amp;quot;Media Player&amp;quot;, and whose implementation is opaque to the remote interface.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Hold an ordered list of locations of the media files as URIs (e.g. file:// or &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;). The implementation of this can be opaque, which means, it does not neccesarily need to store URIs, but upon remote request, it must be able to return an URI for a given media file.&lt;br /&gt;
* Keep the list in an ordered fashion. The order can be changed at any time trough e.g. sorting algorithms, in which case the &amp;quot;Media Player&amp;quot; must send information about the reordering trough it&#039;s remote interface&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;can&#039;&#039;&#039;, but does not &#039;&#039;&#039;need&#039;&#039;&#039; to:&lt;br /&gt;
* Hold &amp;quot;Metadata&amp;quot; about media files&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Metadata&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is data that the files carry within themselves as a means of self-identification (commonly known as &amp;quot;tags&amp;quot;), or data that has been retrieved about the files trough other means, e.g. an internet service that provides additional data about particular media files.&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is an array of dict entries, like (&amp;quot;length&amp;quot;, 253), (&amp;quot;name&amp;quot;, &amp;quot;Bolero&amp;quot;), (&amp;quot;video-codec&amp;quot;, &amp;quot;DIVX&amp;quot;). The dict entry is in the form (string, variant) eg: {sv}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, &amp;quot;Metadata&amp;quot; can be split into two categories:&lt;br /&gt;
&lt;br /&gt;
1) Technical metadata:&lt;br /&gt;
* &amp;quot;URI&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;length&amp;quot;:&amp;quot;i&amp;quot; (length in seconds)&lt;br /&gt;
* &amp;quot;video-codec&amp;quot;:&amp;quot;s&amp;quot; (video codec as a fourcc)&lt;br /&gt;
* &amp;quot;audio-codec&amp;quot;:&amp;quot;s&amp;quot; (audio codec as a fourcc)&lt;br /&gt;
* &amp;quot;video-bitrate&amp;quot;:&amp;quot;i&amp;quot; video bitrate&lt;br /&gt;
* &amp;quot;audio-bitrate&amp;quot;:&amp;quot;i&amp;quot; audio bitrate&lt;br /&gt;
* &amp;quot;audio-samplerate&amp;quot;:&amp;quot;i&amp;quot; (audio samplerate)&lt;br /&gt;
&lt;br /&gt;
2) Informational metadata&lt;br /&gt;
* &amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;artist&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;album&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;unique-id&amp;quot;:&amp;quot;s&amp;quot; : Musicbrainz Track Identifier as specified on http://musicbrainz.org/docs/specs/metadata_tags.html&lt;br /&gt;
* &amp;quot;genre&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This list is informative, and can be extended up to your needs, for example: &amp;quot;age of the captain&amp;quot;:&amp;quot;i&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only Required fields are: &amp;quot;URI&amp;quot; and &amp;quot;length&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= D-Bus =&lt;br /&gt;
&lt;br /&gt;
== The Service ==&lt;br /&gt;
&lt;br /&gt;
org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
All &amp;quot;Media Players&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039; request this name and do not let other &amp;quot;Media Players&amp;quot; &#039;steal&#039; this name.&lt;br /&gt;
Using libdbus, that would be:&lt;br /&gt;
&lt;br /&gt;
 DBusConnection *dbus_connection;&lt;br /&gt;
 DBusError dbus_error;&lt;br /&gt;
 dbus_bus_request_name( dbus_connection, &amp;quot;org.freedesktop.MediaPlayer&amp;quot;, 0, &amp;amp;dbus_error );&lt;br /&gt;
&lt;br /&gt;
To be able to request the name, and so, be able to communicate via D-Bus, no &amp;quot;Media Player&amp;quot; must be running. The &amp;quot;Media Player&amp;quot; may call the Quit method, and wait till the name is unregistered, to ensure this is the case.&lt;br /&gt;
&lt;br /&gt;
: I think this is a bad idea, it&#039;s not the place for a interop Spec to force single instance behaviour without a good reason (i run amarok all the time and use vlc to play videos or streams...). Why not suggest that mediaplayers register with the well known service name (&amp;quot;org.freedesktop.MediaPlayer&amp;quot;) with the options QueueService and suggest the media player should register an application specific service in addition?&lt;br /&gt;
&lt;br /&gt;
: if done that way we gain the feature to query the dbus daemon for all clients queued for that dbus name, so enumerating all current musicplayers that support the Spec is not problem. Contacting the players is not problem to because every client on dbus has a unique name anyway. DBus signal do AFAIK carry the dbus service name of the sending client, so there is no trouble knowing which player send a signal. [[User:textshell|textshell]]&lt;br /&gt;
&lt;br /&gt;
== The Object Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* / : Media Player identification&lt;br /&gt;
&lt;br /&gt;
* /Player : Playback control&lt;br /&gt;
&lt;br /&gt;
* /TrackList : TrackList management&lt;br /&gt;
&lt;br /&gt;
== The interface ==&lt;br /&gt;
&lt;br /&gt;
All methods must be accessed through the interface org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
i.e. calling Quit with qdbus would be:&lt;br /&gt;
 $ qdbus org.freedesktop.MediaPlayer /Player org.freedesktop.MediaPlayer.Quit&lt;br /&gt;
&lt;br /&gt;
== The Methods ==&lt;br /&gt;
&lt;br /&gt;
* /&lt;br /&gt;
&lt;br /&gt;
Get_Identity : Identify the &amp;quot;Media Player&amp;quot; as in &amp;quot;VLC 0.9.0&amp;quot;, &amp;quot;bmpx 0.34.9&amp;quot;, &amp;quot;Totem 2.16.2&amp;quot; ...&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Get_Identity&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /TrackList&lt;br /&gt;
&lt;br /&gt;
Get_Metadata : Gives all meta data available for element at given position in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;method name=&amp;quot;Get_Metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;in&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;a{sv}&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get_CurrentTrack : Position of Current URI in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Get_CurrentTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get_Length : Number of elements in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Get_Length&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add_Track : Appends an URI in the &amp;quot;TrackList&amp;quot;, play it immediately if the 2nd argument is TRUE&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Add_Track&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove_Track : Removes an URI from the &amp;quot;TrackList&amp;quot;, given its position&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Remove_Track&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /Player&lt;br /&gt;
&lt;br /&gt;
Next : Goes to the next element (what if we&#039;re at the end?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Next&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prev : Goes to the previous element (what if we&#039;re at the beginning?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Prev&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pause : If playing : pause. If paused : unpause. If stopped : start playing&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Pause&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop : Stop playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Stop&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play : If playing : rewind to the beginning of current track, else : start playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Play&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit : Makes the &amp;quot;Media Player&amp;quot; exit.&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Quit&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get_Status : Return the status of &amp;quot;Media Player&amp;quot;: 0 = Playing, 1 = Paused, 2 = Stopped.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Get_Status&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set_Volume : Sets the volume (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Set_Volume&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get_Volume : Returns the current volume (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Get_Volume&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set_Position : Sets the playing position (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Set_Position&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get_Position : Returns the playing position (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Get_Position&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The signals ==&lt;br /&gt;
&lt;br /&gt;
New_Track : Signal is emitted when the &amp;quot;Media Player&amp;quot; plays another &amp;quot;Track&amp;quot;. Argument of the signal is the metadata attached to the new &amp;quot;Track&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;New_Track&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;a{sv}&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
New_Status : Signal is emitted when the status of the &amp;quot;Media Player&amp;quot; change. The argument has the same meaning than the value returned by Get_Status.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;New_Status&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
New_Capabilities : [TODO] Signal is emitted when the &amp;quot;Media Player&amp;quot; changes capabilities, Flags are CAN_GO_NEXT CAN_GO_PREV CAN_PAUSE CAN_PLAY CAN_SEEK CAN_PROVIDE_METADATA PROVIDES_TIMING&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;New_Capabilities&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=TODO /&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification MPRIS Interfacing Specification] (BMPx wiki)&lt;br /&gt;
* [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces Media Player Interfaces] (XMMS2 wiki)&lt;/div&gt;</summary>
		<author><name>Mr Mirsal</name></author>
	</entry>
</feed>