<?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=Jpd</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=Jpd"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Jpd/"/>
	<updated>2026-11-04T14:50:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14645</id>
		<title>Plugins/Mozilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14645"/>
		<updated>2009-08-25T13:35:39Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* NSPR_LOG_MODULES */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|} &amp;lt;!-- really should skip MDC in the toc, but how? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= MDC, the missing manual =&lt;br /&gt;
&lt;br /&gt;
This page contains some hard-won but still incomplete information that the boys at mozilla conveniently forget to tell you and that may be useful for developing mozilla plugins (such as our vlc plugin).&lt;br /&gt;
&lt;br /&gt;
== General structure ==&lt;br /&gt;
Netscape Plugin Application Programming Interface (NPAPI) conforming plugins have a number of entry points that vary across platforms a bit in number and precise function per entry point. Those entry points together must mainly do two things: One) tell the browser what MIME-type(s) this plugin supports, and two) setup two function pointer tables.&lt;br /&gt;
&lt;br /&gt;
The first table contains pointers to functions inside the browser that the plugin may call. This table apparently must be copied to local storage, but I haven&#039;t found why. The table necessairily will end up as a global for the plugin so it may as well be a statically allocated global, though there is a shutdown entry point to clean up any dynamic allocations after the last instance is destroyed.&lt;br /&gt;
&lt;br /&gt;
The second table contains pointers to functions the plugin exports to the browser to call. The browser will create a new instance by calling the new function pointer for each place in a webpage that the plugin is needed, and all the other functions will be called with a reference to such an instance.&lt;br /&gt;
&lt;br /&gt;
Enabling script interaction with the plugin should be done using the &amp;quot;NPAPI scripting extensions&amp;quot;. This can be done by exporting the desired scripting interfaces through implementing NPObject derivates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;And we&#039;ve completely removed support for XPCOM plugins from Mozilla 1.9.2 (Firefox 3.6).&amp;lt;br&amp;gt;&amp;amp;mdash;&amp;lt;cite&amp;gt;Benjamin Smedberg &amp;lt;!-- &amp;lt;benjamin@smedbergs.us&amp;gt; in &amp;lt;E8idnZax4IVPNOTXnZ2dnUVZ_gednZ2d@mozilla.org&amp;gt; --&amp;gt; posting in mozilla.dev.tech.plugins on news.mozilla.org&amp;lt;/cite&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;XPCOM plugins&amp;quot; may or may not be different from &amp;quot;xulrunner extensions&amp;quot;. Clarification needed.&lt;br /&gt;
&lt;br /&gt;
== development ==&lt;br /&gt;
&lt;br /&gt;
Apparently only a few files are really needed for developing plugins. According to [http://colonelpanic.net/2009/05/building-a-firefox-plugin-part-two/ this guy] only 12 files:&lt;br /&gt;
&lt;br /&gt;
* jni.h&lt;br /&gt;
* jni_md.h&lt;br /&gt;
* jri.h&lt;br /&gt;
* jritypes.h&lt;br /&gt;
* jri_md.h&lt;br /&gt;
* npapi.h&lt;br /&gt;
* npruntime.h&lt;br /&gt;
* nptypes.h&lt;br /&gt;
* npupp.h&lt;br /&gt;
* obsolete/protypes.h&lt;br /&gt;
* prcpucfg.h&lt;br /&gt;
* prtypes.h&lt;br /&gt;
&lt;br /&gt;
So far only two actual includes seem sufficient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#include &amp;lt;npapi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;npupp.h&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GetValue ===&lt;br /&gt;
The NS_GetValue entry point and the getvalue function table pointer apparently may point to the same function as long as it can deal with NULL instance references.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Compiling a plugin is a bit sparsely documented but the gist seems to be to use &amp;lt;code&amp;gt;pkg-config mozilla-plugin&amp;lt;/code&amp;gt; and to add a few choice flags. Thus on linux I have (which may or may not be correct):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
PKGCONFIG=pkg-config&lt;br /&gt;
MOZILLA_PLUGIN_CFLAGS=`$(PKGCONFIG) --cflags mozilla-plugin`&lt;br /&gt;
MOZILLA_PLUGIN_LIBS=`$(PKGCONFIG) --libs mozilla-plugin`&lt;br /&gt;
&lt;br /&gt;
CXXFLAGS+=-fno-rtti -fno-exceptions -Wl,-z,defs -shared \&lt;br /&gt;
        -O2 -g -DXP_UNIX -DMOZILLA_STRICT_API \&lt;br /&gt;
        $(MOZILLA_PLUGIN_CFLAGS)&lt;br /&gt;
LDFLAGS+= -shared -Wl,-Bsymbolic \&lt;br /&gt;
        $(MOZILLA_PLUGIN_LIBS)&lt;br /&gt;
&lt;br /&gt;
npplugin.so: npplugin.o&lt;br /&gt;
        $(CXX) $(LDFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
npplugin.o: npplugin.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== debugging ==&lt;br /&gt;
&lt;br /&gt;
One way to get more useful output out of nspr-based browsers (firefox, epiphany at least) is to set two environment variables:&lt;br /&gt;
&lt;br /&gt;
 export NSPR_LOG_FILE NSPR_LOG_MODULES&lt;br /&gt;
 NSPR_LOG_FILE=path/to/log/file&lt;br /&gt;
 NSPR_LOG_MODULES=modulename:level,modulename:level&lt;br /&gt;
&lt;br /&gt;
However, I have failed to find a comprehensive list of modules to choose from. &amp;amp;nbsp;&amp;lt;code&amp;gt;all:5&amp;lt;/code&amp;gt; works but is perhaps a bit too verbose. The default for NSPR_LOG_FILE appears to be stderr. On windows the special &#039;&#039;WinDebug&#039;&#039; which redirects to OutputDebugString().&lt;br /&gt;
&lt;br /&gt;
=== NSPR_LOG_MODULES ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module name&lt;br /&gt;
! function&lt;br /&gt;
|-&lt;br /&gt;
| all&lt;br /&gt;
| enable all log modules&lt;br /&gt;
|-&lt;br /&gt;
| sync&lt;br /&gt;
| enable unbuffered logging&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| prefix log messages with an UTC timestamp (NSPR 4.8 or later)&lt;br /&gt;
|-&lt;br /&gt;
| bufsize&#039;&#039;:size&#039;&#039;&lt;br /&gt;
| set the log buffer size&lt;br /&gt;
|-&lt;br /&gt;
| nsNativeModuleLoader&lt;br /&gt;
| xulrunner/XPCOM component loading&lt;br /&gt;
|-&lt;br /&gt;
| nsHttp&lt;br /&gt;
| What the http layer is up to&lt;br /&gt;
|-&lt;br /&gt;
| nsSocketTransport&lt;br /&gt;
| Socket stuff&lt;br /&gt;
|-&lt;br /&gt;
| nsHostResolver&lt;br /&gt;
| DNS queries&lt;br /&gt;
|-&lt;br /&gt;
| mime&lt;br /&gt;
| rowspan=6|MailNews applications (SeaMonkey/Thunderbird)&amp;lt;br&amp;gt; In debug builds also: imapoffline, bayesianfilter, msgcompose, mapi, nsaboutlookcardlog, nsabwinhelperlog, ldapautocomplete, nswabaddressbook, nsaboutlookdirectorylog, movemail, msgbiff, msgpurge, appleimportlog, import&lt;br /&gt;
|-&lt;br /&gt;
| imap&lt;br /&gt;
|-&lt;br /&gt;
| nntp&lt;br /&gt;
|-&lt;br /&gt;
| smtp&lt;br /&gt;
|-&lt;br /&gt;
| pop3&lt;br /&gt;
|-&lt;br /&gt;
| ldap &lt;br /&gt;
|-&lt;br /&gt;
| nsRDFService&lt;br /&gt;
| RDF service&lt;br /&gt;
|-&lt;br /&gt;
| nsXULTemplateBuilder&lt;br /&gt;
| template rule network construction and subsequent use&lt;br /&gt;
|-&lt;br /&gt;
| InMemoryDataSource&lt;br /&gt;
| Assert(), Unassert(), HasAssertion(), etc. for most datasources.&lt;br /&gt;
|-&lt;br /&gt;
| nsComponentManager&lt;br /&gt;
| XPCOM, clarification needed&lt;br /&gt;
|-&lt;br /&gt;
| MCD&lt;br /&gt;
| autoconfig?&lt;br /&gt;
|-&lt;br /&gt;
| HelperAppService&lt;br /&gt;
| &#039;&#039;save as&#039;&#039; related?&lt;br /&gt;
|-&lt;br /&gt;
| negotiateauth&lt;br /&gt;
| Found in modauthkerb documentation&lt;br /&gt;
|-&lt;br /&gt;
| Plugin&lt;br /&gt;
| rowspan=3| plugin related. Apparently verbosity goes up to 9?&lt;br /&gt;
|-&lt;br /&gt;
| PluginNPP&lt;br /&gt;
|-&lt;br /&gt;
| PluginNPN&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_in_the_news&amp;diff=14637</id>
		<title>VideoLAN in the news</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_in_the_news&amp;diff=14637"/>
		<updated>2009-08-18T10:15:57Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* 2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;infobox&amp;quot;&lt;br /&gt;
| [http://news.google.co.uk/news?as_q=&amp;amp;svnum=10&amp;amp;as_scoring=r&amp;amp;hl=en&amp;amp;tab=wn&amp;amp;ie=UTF-8&amp;amp;btnG=Google+Search&amp;amp;as_epq=&amp;amp;as_oq=VLC+VideoLAN&amp;amp;as_eq=&amp;amp;as_nsrc=&amp;amp;as_nloc=&amp;amp;as_occt=any&amp;amp;as_drrb=q&amp;amp;as_qdr=&amp;amp;as_mind=9&amp;amp;as_minm=9&amp;amp;as_maxd=9&amp;amp;as_maxm=10 Search Google News] for the latest on VLC ([http://news.google.co.uk/news?svnum=10&amp;amp;as_scoring=r&amp;amp;hl=en&amp;amp;tab=wn&amp;amp;ie=UTF-8&amp;amp;as_drrb=q&amp;amp;as_qdr=&amp;amp;as_mind=9&amp;amp;as_minm=9&amp;amp;as_maxd=9&amp;amp;as_maxm=10&amp;amp;q=VLC+OR+VideoLAN&amp;amp;output=rss RSS feed])&lt;br /&gt;
|}&lt;br /&gt;
List of articles related to VideoLAN / VLC media player. Please add those which are missing.&lt;br /&gt;
&lt;br /&gt;
== 2009 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|July 22||[http://www.nytimes.com/external/gigaom/2009/07/22/22gigaom-4-free-open-source-tools-for-working-with-video-a-34611.html nytimes/gigaom: 4 Free Open-Source Tools for Working With Video and Audio]&lt;br /&gt;
|-&lt;br /&gt;
|July 7||[http://news.cnet.com/8301-13505_3-10280845-16.html cnet: VideoLAN releases VLC 1.0.0: Your media will never be the same]&lt;br /&gt;
|-&lt;br /&gt;
|June 4||[http://www.pcwelt.de/start/software_os/audio_video_foto/praxis/191079/alle_video_formate_mit_vlc_player_abspielen/index.html PCWELT Video und Musik: Alle Video-Formate mit VLC Player abspielen]||(german)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2007 ==&lt;br /&gt;
&lt;br /&gt;
[http://articles.techrepublic.com.com/2415-7343_11-175865.html SolutionBase: Overcome multimedia hurdles in Linux]&lt;br /&gt;
&lt;br /&gt;
== 2006 ==&lt;br /&gt;
&lt;br /&gt;
[http://software.newsforge.com/article.pl?sid=06/04/19/1711245&amp;amp;from=rss &amp;quot;NewsForge, Transcoding and streaming DVD films with VLC media player&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.lesechos.fr/journal20061004/lec2_innovation/4475889.htm Les Echos (France), &amp;quot;Le lecteur multimédia français VLC téléchargé 18 millions de fois&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.m2x.nl/mambo/index.php?option=content&amp;amp;task=view&amp;amp;id=124&amp;amp;Itemid=27 M2X Article and NLUUG talk (Netherlands) &amp;quot;Streaming networks with VLC&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2005 ==&lt;br /&gt;
[http://www.01net.com/article/284013.html 01net.com (France)]&lt;br /&gt;
&lt;br /&gt;
[http://blogs.zdnet.fr/index.php/2005/06/28/vlc-un-lecteur-multimedia-tres-courtise/ ZDNet (France), &amp;quot;VLC: un lecteur multimedia très courtisé&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://solutions.journaldunet.com/0506/050613_videolan.shtml solutions.journaldunet.com (France)]&lt;br /&gt;
&lt;br /&gt;
[http://www.theregister.co.uk/2005/09/02/dvd_jon_mediaplayer/ The Register (UK), &amp;quot;DVD Jon hacks Media Player file encryption&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.source21.nl/2005/12/27/linuxworld-videolan-en-vlc Source21.nl (Netherlands), &amp;quot;LinuxWorld: VideoLAN en VLC (Interview with Jean-Paul Saman)&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.macplus.net/magplus/chronique-9311-interview-de-christophe-massiot MacPlus (France), &amp;quot;Interview de Christophe Massiot&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://home.planet.nl/~jpsaman/linux/downloads/vlc_open_source_multimedia.sxi LinuxWorld (Netherlands), &amp;quot;Open Source multimedia by Jean-Paul Saman&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2004 ==&lt;br /&gt;
&lt;br /&gt;
[http://builder.com.com/5100-6375-5136135.html Builder.com (USA?), &amp;quot;Open Source Awards 2004: VideoLAN&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.streamingmedia.com/article.asp?id=9000&amp;amp;page=1&amp;amp;c= streamingmedia.com (USA?), &amp;quot;VideoLAN&#039;s Piece de Resistance&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://home.planet.nl/~jpsaman/linux/downloads/videolan-fosdem-2004.pdf FOSDEM (Belgium) &amp;quot;VideoLAN VLC presentation at FOSDEM by Jean-Paul Saman&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2002 ==&lt;br /&gt;
&lt;br /&gt;
[http://download.videolan.org/images/macworld0-doublepage.jpg Mac World, &amp;quot;Les petits princes du MPEG-2&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.mac4ever.com/articles/humeur/336/interview_de_christophe_massiot_de_vlc/ Mac4ever (France), &amp;quot;Interview de Christophe Massiot de VLC&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14608</id>
		<title>Plugins/Mozilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14608"/>
		<updated>2009-08-11T12:31:47Z</updated>

		<summary type="html">&lt;p&gt;Jpd: cannot drop the first heading from the toc. move toc aside instead.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|} &amp;lt;!-- really should skip MDC in the toc, but how? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= MDC, the missing manual =&lt;br /&gt;
&lt;br /&gt;
This page contains some hard-won but still incomplete information that the boys at mozilla conveniently forget to tell you and that may be useful for developing mozilla plugins (such as our vlc plugin).&lt;br /&gt;
&lt;br /&gt;
== General structure ==&lt;br /&gt;
Netscape Plugin Application Programming Interface (NPAPI) conforming plugins have a number of entry points that vary across platforms a bit in number and precise function per entry point. Those entry points together must mainly do two things: One) tell the browser what MIME-type(s) this plugin supports, and two) setup two function pointer tables.&lt;br /&gt;
&lt;br /&gt;
The first table contains pointers to functions inside the browser that the plugin may call. This table apparently must be copied to local storage, but I haven&#039;t found why. The table necessairily will end up as a global for the plugin so it may as well be a statically allocated global, though there is a shutdown entry point to clean up any dynamic allocations after the last instance is destroyed.&lt;br /&gt;
&lt;br /&gt;
The second table contains pointers to functions the plugin exports to the browser to call. The browser will create a new instance by calling the new function pointer for each place in a webpage that the plugin is needed, and all the other functions will be called with a reference to such an instance.&lt;br /&gt;
&lt;br /&gt;
Enabling script interaction with the plugin should be done using the &amp;quot;NPAPI scripting extensions&amp;quot;. This can be done by exporting the desired scripting interfaces through implementing NPObject derivates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;And we&#039;ve completely removed support for XPCOM plugins from Mozilla 1.9.2 (Firefox 3.6).&amp;lt;br&amp;gt;&amp;amp;mdash;&amp;lt;cite&amp;gt;Benjamin Smedberg &amp;lt;!-- &amp;lt;benjamin@smedbergs.us&amp;gt; in &amp;lt;E8idnZax4IVPNOTXnZ2dnUVZ_gednZ2d@mozilla.org&amp;gt; --&amp;gt; posting in mozilla.dev.tech.plugins on news.mozilla.org&amp;lt;/cite&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;XPCOM plugins&amp;quot; may or may not be different from &amp;quot;xulrunner extensions&amp;quot;. Clarification needed.&lt;br /&gt;
&lt;br /&gt;
== development ==&lt;br /&gt;
&lt;br /&gt;
Apparently only a few files are really needed for developing plugins. According to [http://colonelpanic.net/2009/05/building-a-firefox-plugin-part-two/ this guy] only 12 files:&lt;br /&gt;
&lt;br /&gt;
* jni.h&lt;br /&gt;
* jni_md.h&lt;br /&gt;
* jri.h&lt;br /&gt;
* jritypes.h&lt;br /&gt;
* jri_md.h&lt;br /&gt;
* npapi.h&lt;br /&gt;
* npruntime.h&lt;br /&gt;
* nptypes.h&lt;br /&gt;
* npupp.h&lt;br /&gt;
* obsolete/protypes.h&lt;br /&gt;
* prcpucfg.h&lt;br /&gt;
* prtypes.h&lt;br /&gt;
&lt;br /&gt;
So far only two actual includes seem sufficient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#include &amp;lt;npapi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;npupp.h&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GetValue ===&lt;br /&gt;
The NS_GetValue entry point and the getvalue function table pointer apparently may point to the same function as long as it can deal with NULL instance references.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Compiling a plugin is a bit sparsely documented but the gist seems to be to use &amp;lt;code&amp;gt;pkg-config mozilla-plugin&amp;lt;/code&amp;gt; and to add a few choice flags. Thus on linux I have (which may or may not be correct):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
PKGCONFIG=pkg-config&lt;br /&gt;
MOZILLA_PLUGIN_CFLAGS=`$(PKGCONFIG) --cflags mozilla-plugin`&lt;br /&gt;
MOZILLA_PLUGIN_LIBS=`$(PKGCONFIG) --libs mozilla-plugin`&lt;br /&gt;
&lt;br /&gt;
CXXFLAGS+=-fno-rtti -fno-exceptions -Wl,-z,defs -shared \&lt;br /&gt;
        -O2 -g -DXP_UNIX -DMOZILLA_STRICT_API \&lt;br /&gt;
        $(MOZILLA_PLUGIN_CFLAGS)&lt;br /&gt;
LDFLAGS+= -shared -Wl,-Bsymbolic \&lt;br /&gt;
        $(MOZILLA_PLUGIN_LIBS)&lt;br /&gt;
&lt;br /&gt;
npplugin.so: npplugin.o&lt;br /&gt;
        $(CXX) $(LDFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
npplugin.o: npplugin.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== debugging ==&lt;br /&gt;
&lt;br /&gt;
One way to get more useful output out of nspr-based browsers (firefox, epiphany at least) is to set two environment variables:&lt;br /&gt;
&lt;br /&gt;
 export NSPR_LOG_FILE NSPR_LOG_MODULES&lt;br /&gt;
 NSPR_LOG_FILE=path/to/log/file&lt;br /&gt;
 NSPR_LOG_MODULES=modulename:level,modulename:level&lt;br /&gt;
&lt;br /&gt;
However, I have failed to find a comprehensive list of modules to choose from. &amp;amp;nbsp;&amp;lt;code&amp;gt;all:5&amp;lt;/code&amp;gt; works but is perhaps a bit too verbose. The default for NSPR_LOG_FILE appears to be stderr. On windows the special &#039;&#039;WinDebug&#039;&#039; which redirects to OutputDebugString().&lt;br /&gt;
&lt;br /&gt;
=== NSPR_LOG_MODULES ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module name&lt;br /&gt;
! function&lt;br /&gt;
|-&lt;br /&gt;
| all&lt;br /&gt;
| enable all log modules&lt;br /&gt;
|-&lt;br /&gt;
| sync&lt;br /&gt;
| enable unbuffered logging&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| prefix log messages with an UTC timestamp (NSPR 4.8 or later)&lt;br /&gt;
|-&lt;br /&gt;
| bufsize&#039;&#039;:size&#039;&#039;&lt;br /&gt;
| set the log buffer size&lt;br /&gt;
|-&lt;br /&gt;
| nsNativeModuleLoader&lt;br /&gt;
| xulrunner/XPCOM component loading&lt;br /&gt;
|-&lt;br /&gt;
| mime&lt;br /&gt;
| rowspan=6|MailNews applications (SeaMonkey/Thunderbird)&amp;lt;br&amp;gt; In debug builds also: imapoffline, bayesianfilter, msgcompose, mapi, nsaboutlookcardlog, nsabwinhelperlog, ldapautocomplete, nswabaddressbook, nsaboutlookdirectorylog, movemail, msgbiff, msgpurge, appleimportlog, import&lt;br /&gt;
|-&lt;br /&gt;
| imap&lt;br /&gt;
|-&lt;br /&gt;
| nntp&lt;br /&gt;
|-&lt;br /&gt;
| smtp&lt;br /&gt;
|-&lt;br /&gt;
| pop3&lt;br /&gt;
|-&lt;br /&gt;
| ldap &lt;br /&gt;
|-&lt;br /&gt;
| nsRDFService&lt;br /&gt;
| RDF service&lt;br /&gt;
|-&lt;br /&gt;
| nsXULTemplateBuilder&lt;br /&gt;
| template rule network construction and subsequent use&lt;br /&gt;
|-&lt;br /&gt;
| InMemoryDataSource&lt;br /&gt;
| Assert(), Unassert(), HasAssertion(), etc. for most datasources.&lt;br /&gt;
|-&lt;br /&gt;
| nsComponentManager&lt;br /&gt;
| XPCOM, clarification needed&lt;br /&gt;
|-&lt;br /&gt;
| MCD&lt;br /&gt;
| autoconfig?&lt;br /&gt;
|-&lt;br /&gt;
| HelperAppService&lt;br /&gt;
| &#039;&#039;save as&#039;&#039; related?&lt;br /&gt;
|-&lt;br /&gt;
| negotiateauth&lt;br /&gt;
| Found in modauthkerb documentation&lt;br /&gt;
|-&lt;br /&gt;
| Plugin&lt;br /&gt;
| rowspan=3| plugin related. Apparently verbosity goes up to 9?&lt;br /&gt;
|-&lt;br /&gt;
| PluginNPP&lt;br /&gt;
|-&lt;br /&gt;
| PluginNPN&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14607</id>
		<title>Plugins/Mozilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14607"/>
		<updated>2009-08-11T12:12:13Z</updated>

		<summary type="html">&lt;p&gt;Jpd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MDC, the missing manual =&lt;br /&gt;
&lt;br /&gt;
This page contains some hard-won but still incomplete information that the boys at mozilla conveniently forget to tell you and that may be useful for developing mozilla plugins (such as our vlc plugin).&lt;br /&gt;
&lt;br /&gt;
== General structure ==&lt;br /&gt;
Netscape Plugin Application Programming Interface (NPAPI) conforming plugins have a number of entry points that vary across platforms a bit in number and precise function per entry point. Those entry points together must mainly do two things: One) tell the browser what MIME-type(s) this plugin supports, and two) setup two function pointer tables.&lt;br /&gt;
&lt;br /&gt;
The first table contains pointers to functions inside the browser that the plugin may call. This table apparently must be copied to local storage, but I haven&#039;t found why. The table necessairily will end up as a global for the plugin so it may as well be a statically allocated global, though there is a shutdown entry point to clean up any dynamic allocations after the last instance is destroyed.&lt;br /&gt;
&lt;br /&gt;
The second table contains pointers to functions the plugin exports to the browser to call. The browser will create a new instance by calling the new function pointer for each place in a webpage that the plugin is needed, and all the other functions will be called with a reference to such an instance.&lt;br /&gt;
&lt;br /&gt;
Enabling script interaction with the plugin should be done using the &amp;quot;NPAPI scripting extensions&amp;quot;. This can be done by exporting the desired scripting interfaces through implementing NPObject derivates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;And we&#039;ve completely removed support for XPCOM plugins from Mozilla 1.9.2 (Firefox 3.6).&amp;lt;br&amp;gt;&amp;amp;mdash;&amp;lt;cite&amp;gt;Benjamin Smedberg &amp;lt;!-- &amp;lt;benjamin@smedbergs.us&amp;gt; in &amp;lt;E8idnZax4IVPNOTXnZ2dnUVZ_gednZ2d@mozilla.org&amp;gt; --&amp;gt; posting in mozilla.dev.tech.plugins on news.mozilla.org&amp;lt;/cite&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;XPCOM plugins&amp;quot; may or may not be different from &amp;quot;xulrunner extensions&amp;quot;. Clarification needed.&lt;br /&gt;
&lt;br /&gt;
== development ==&lt;br /&gt;
&lt;br /&gt;
Apparently only a few files are really needed for developing plugins. According to [http://colonelpanic.net/2009/05/building-a-firefox-plugin-part-two/ this guy] only 12 files:&lt;br /&gt;
&lt;br /&gt;
* jni.h&lt;br /&gt;
* jni_md.h&lt;br /&gt;
* jri.h&lt;br /&gt;
* jritypes.h&lt;br /&gt;
* jri_md.h&lt;br /&gt;
* npapi.h&lt;br /&gt;
* npruntime.h&lt;br /&gt;
* nptypes.h&lt;br /&gt;
* npupp.h&lt;br /&gt;
* obsolete/protypes.h&lt;br /&gt;
* prcpucfg.h&lt;br /&gt;
* prtypes.h&lt;br /&gt;
&lt;br /&gt;
So far only two actual includes seem sufficient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#include &amp;lt;npapi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;npupp.h&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GetValue ===&lt;br /&gt;
The NS_GetValue entry point and the getvalue function table pointer apparently may point to the same function as long as it can deal with NULL instance references.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Compiling a plugin is a bit sparsely documented but the gist seems to be to use &amp;lt;code&amp;gt;pkg-config mozilla-plugin&amp;lt;/code&amp;gt; and to add a few choice flags. Thus on linux I have (which may or may not be correct):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
PKGCONFIG=pkg-config&lt;br /&gt;
MOZILLA_PLUGIN_CFLAGS=`$(PKGCONFIG) --cflags mozilla-plugin`&lt;br /&gt;
MOZILLA_PLUGIN_LIBS=`$(PKGCONFIG) --libs mozilla-plugin`&lt;br /&gt;
&lt;br /&gt;
CXXFLAGS+=-fno-rtti -fno-exceptions -Wl,-z,defs -shared \&lt;br /&gt;
        -O2 -g -DXP_UNIX -DMOZILLA_STRICT_API \&lt;br /&gt;
        $(MOZILLA_PLUGIN_CFLAGS)&lt;br /&gt;
LDFLAGS+= -shared -Wl,-Bsymbolic \&lt;br /&gt;
        $(MOZILLA_PLUGIN_LIBS)&lt;br /&gt;
&lt;br /&gt;
npplugin.so: npplugin.o&lt;br /&gt;
        $(CXX) $(LDFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
npplugin.o: npplugin.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== debugging ==&lt;br /&gt;
&lt;br /&gt;
One way to get more useful output out of nspr-based browsers (firefox, epiphany at least) is to set two environment variables:&lt;br /&gt;
&lt;br /&gt;
 export NSPR_LOG_FILE NSPR_LOG_MODULES&lt;br /&gt;
 NSPR_LOG_FILE=path/to/log/file&lt;br /&gt;
 NSPR_LOG_MODULES=modulename:level,modulename:level&lt;br /&gt;
&lt;br /&gt;
However, I have failed to find a comprehensive list of modules to choose from. &amp;amp;nbsp;&amp;lt;code&amp;gt;all:5&amp;lt;/code&amp;gt; works but is perhaps a bit too verbose. The default for NSPR_LOG_FILE appears to be stderr. On windows the special &#039;&#039;WinDebug&#039;&#039; which redirects to OutputDebugString().&lt;br /&gt;
&lt;br /&gt;
=== NSPR_LOG_MODULES ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module name&lt;br /&gt;
! function&lt;br /&gt;
|-&lt;br /&gt;
| all&lt;br /&gt;
| enable all log modules&lt;br /&gt;
|-&lt;br /&gt;
| sync&lt;br /&gt;
| enable unbuffered logging&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| prefix log messages with an UTC timestamp (NSPR 4.8 or later)&lt;br /&gt;
|-&lt;br /&gt;
| bufsize&#039;&#039;:size&#039;&#039;&lt;br /&gt;
| set the log buffer size&lt;br /&gt;
|-&lt;br /&gt;
| nsNativeModuleLoader&lt;br /&gt;
| xulrunner/XPCOM component loading&lt;br /&gt;
|-&lt;br /&gt;
| mime&lt;br /&gt;
| rowspan=6|MailNews applications (SeaMonkey/Thunderbird)&amp;lt;br&amp;gt; In debug builds also: imapoffline, bayesianfilter, msgcompose, mapi, nsaboutlookcardlog, nsabwinhelperlog, ldapautocomplete, nswabaddressbook, nsaboutlookdirectorylog, movemail, msgbiff, msgpurge, appleimportlog, import&lt;br /&gt;
|-&lt;br /&gt;
| imap&lt;br /&gt;
|-&lt;br /&gt;
| nntp&lt;br /&gt;
|-&lt;br /&gt;
| smtp&lt;br /&gt;
|-&lt;br /&gt;
| pop3&lt;br /&gt;
|-&lt;br /&gt;
| ldap &lt;br /&gt;
|-&lt;br /&gt;
| nsRDFService&lt;br /&gt;
| RDF service&lt;br /&gt;
|-&lt;br /&gt;
| nsXULTemplateBuilder&lt;br /&gt;
| template rule network construction and subsequent use&lt;br /&gt;
|-&lt;br /&gt;
| InMemoryDataSource&lt;br /&gt;
| Assert(), Unassert(), HasAssertion(), etc. for most datasources.&lt;br /&gt;
|-&lt;br /&gt;
| nsComponentManager&lt;br /&gt;
| XPCOM, clarification needed&lt;br /&gt;
|-&lt;br /&gt;
| MCD&lt;br /&gt;
| autoconfig?&lt;br /&gt;
|-&lt;br /&gt;
| HelperAppService&lt;br /&gt;
| &#039;&#039;save as&#039;&#039; related?&lt;br /&gt;
|-&lt;br /&gt;
| negotiateauth&lt;br /&gt;
| Found in modauthkerb documentation&lt;br /&gt;
|-&lt;br /&gt;
| Plugin&lt;br /&gt;
| rowspan=3| plugin related. Apparently verbosity goes up to 9?&lt;br /&gt;
|-&lt;br /&gt;
| PluginNPP&lt;br /&gt;
|-&lt;br /&gt;
| PluginNPN&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14602</id>
		<title>Plugins/Mozilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Plugins/Mozilla&amp;diff=14602"/>
		<updated>2009-08-11T10:58:52Z</updated>

		<summary type="html">&lt;p&gt;Jpd: Memory dump of mozilla related stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MDC, the missing manual =&lt;br /&gt;
&lt;br /&gt;
This page contains some hard-won but still incomplete information that the boys at mozilla conveniently forget to tell you and that may be useful for developing mozilla plugins (such as our vlc plugin).&lt;br /&gt;
&lt;br /&gt;
== General structure ==&lt;br /&gt;
Netscape Plugin Application Programming Interface (NPAPI) conforming plugins have a number of entry points that vary across platforms a bit in number and precise function per entry point. Those entry points together must mainly do two things: One) tell the browser what MIME-type(s) this plugin supports, and two) setup two function pointer tables.&lt;br /&gt;
&lt;br /&gt;
The first table contains pointers to functions inside the browser that the plugin may call. This table apparently must be copied to local storage and due to the structure will end up as a global for the plugin so it may as well be a statically allocated global, though there is a shutdown entry point to clean up any dynamic allocations after the last instance.&lt;br /&gt;
&lt;br /&gt;
The second table contains pointers to functions the plugin exports to the browser to call. The browser will create a new instance by calling the new function pointer for each place in a webpage that the plugin is needed, and all the other functions will be called with a reference to such an instance.&lt;br /&gt;
&lt;br /&gt;
Enabling script interaction with the plugin should be done using the &amp;quot;NPAPI scripting extensions&amp;quot;. This can be done by exporting the desired scripting interfaces through implementing NPObject derivates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;And we&#039;ve completely removed support for XPCOM plugins from Mozilla 1.9.2 (Firefox 3.6).&amp;lt;br&amp;gt;&amp;amp;mdash;&amp;lt;cite&amp;gt;Benjamin Smedberg &amp;lt;!-- &amp;lt;benjamin@smedbergs.us&amp;gt; in &amp;lt;E8idnZax4IVPNOTXnZ2dnUVZ_gednZ2d@mozilla.org&amp;gt; --&amp;gt; posting in mozilla.dev.tech.plugins on news.mozilla.org&amp;lt;/cite&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;XPCOM plugins&amp;quot; may or may not be different from &amp;quot;xulrunner extensions&amp;quot;. Clarification needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Compiling a plugin is a bit sparsely documented but the gist seems to be to use &amp;lt;code&amp;gt;pkg-config mozilla-plugin&amp;lt;/code&amp;gt; and to add a few choice flags. Thus on linux I have (which may or may not be correct):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
PKGCONFIG=`which pkg-config`&lt;br /&gt;
MOZILLA_PLUGIN_CFLAGS=`$(PKGCONFIG) --cflags mozilla-plugin`&lt;br /&gt;
MOZILLA_PLUGIN_LIBS=`$(PKGCONFIG) --libs mozilla-plugin`&lt;br /&gt;
&lt;br /&gt;
CXXFLAGS+=-fno-rtti -fno-exceptions -Wl,-z,defs -shared \&lt;br /&gt;
        -O2 -g -DXP_UNIX -DMOZILLA_STRICT_API \&lt;br /&gt;
        $(MOZILLA_PLUGIN_CFLAGS)&lt;br /&gt;
LDFLAGS+= -shared -Wl,-Bsymbolic \&lt;br /&gt;
        $(MOZILLA_PLUGIN_LIBS)&lt;br /&gt;
&lt;br /&gt;
npplugin.so: npplugin.o&lt;br /&gt;
        $(CXX) $(LDFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
npplugin.o: npplugin.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== debugging ==&lt;br /&gt;
&lt;br /&gt;
One way to get more useful output out of nspr-based browsers (firefox, epiphany at least) is to set two environment variables:&lt;br /&gt;
&lt;br /&gt;
 export NSPR_LOG_FILE NSPR_LOG_MODULES&lt;br /&gt;
 NSPR_LOG_FILE=path/to/log/file&lt;br /&gt;
 NSPR_LOG_MODULES=modulename:level,modulename:level&lt;br /&gt;
&lt;br /&gt;
However, I have failed to find a comprehensive list of modules to choose from. &amp;amp;nbsp;&amp;lt;code&amp;gt;all:5&amp;lt;/code&amp;gt; works but is perhaps a bit too verbose. The default for NSPR_LOG_FILE appears to be stderr. On windows the special &#039;&#039;WinDebug&#039;&#039; which redirects to OutputDebugString().&lt;br /&gt;
&lt;br /&gt;
=== NSPR_LOG_MODULES ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module name&lt;br /&gt;
! function&lt;br /&gt;
|-&lt;br /&gt;
| all&lt;br /&gt;
| enable all log modules&lt;br /&gt;
|-&lt;br /&gt;
| sync&lt;br /&gt;
| enable unbuffered logging&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| prefix log messages with an UTC timestamp (NSPR 4.8 or later)&lt;br /&gt;
|-&lt;br /&gt;
| bufsize&#039;&#039;:size&#039;&#039;&lt;br /&gt;
| set the log buffer size&lt;br /&gt;
|-&lt;br /&gt;
| nsNativeModuleLoader&lt;br /&gt;
| xulrunner/XPCOM component loading&lt;br /&gt;
|-&lt;br /&gt;
| mime&lt;br /&gt;
| rowspan=6|MailNews applications (SeaMonkey/Thunderbird)&amp;lt;br&amp;gt; In debug builds also: imapoffline, bayesianfilter, msgcompose, mapi, nsaboutlookcardlog, nsabwinhelperlog, ldapautocomplete, nswabaddressbook, nsaboutlookdirectorylog, movemail, msgbiff, msgpurge, appleimportlog, import&lt;br /&gt;
|-&lt;br /&gt;
| imap&lt;br /&gt;
|-&lt;br /&gt;
| nntp&lt;br /&gt;
|-&lt;br /&gt;
| smtp&lt;br /&gt;
|-&lt;br /&gt;
| pop3&lt;br /&gt;
|-&lt;br /&gt;
| ldap &lt;br /&gt;
|-&lt;br /&gt;
| nsRDFService&lt;br /&gt;
| RDF service&lt;br /&gt;
|-&lt;br /&gt;
| nsXULTemplateBuilder&lt;br /&gt;
| template rule network construction and subsequent use&lt;br /&gt;
|-&lt;br /&gt;
| InMemoryDataSource&lt;br /&gt;
| Assert(), Unassert(), HasAssertion(), etc. for most datasources.&lt;br /&gt;
|-&lt;br /&gt;
| nsComponentManager&lt;br /&gt;
| XPCOM, clarification needed&lt;br /&gt;
|-&lt;br /&gt;
| MCD&lt;br /&gt;
| autoconfig?&lt;br /&gt;
|-&lt;br /&gt;
| HelperAppService&lt;br /&gt;
| &#039;&#039;save as&#039;&#039; related?&lt;br /&gt;
|-&lt;br /&gt;
| negotiateauth&lt;br /&gt;
| Found in modauthkerb documentation&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Code_Janitorial&amp;diff=14544</id>
		<title>Code Janitorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Code_Janitorial&amp;diff=14544"/>
		<updated>2009-07-28T13:41:41Z</updated>

		<summary type="html">&lt;p&gt;Jpd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some samples janitorial task you can pick up:&lt;br /&gt;
&lt;br /&gt;
=== General appearance ===&lt;br /&gt;
&lt;br /&gt;
Keeping the source uniformly less than 78 characters wide so it and patches both fit nicely on a 80 column screen is good general practice but it doesn&#039;t always happen. Thus an opportunity to reformat clearly overlong lines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Function header ===&lt;br /&gt;
The function header commentary isn&#039;t uniformed across files. We suggest you to try to tidy this.&lt;br /&gt;
&lt;br /&gt;
 /**************************************************************************  |&lt;br /&gt;
  * Get the Media descriptor associated with the instance                  *  | &amp;lt;- function header commentary&lt;br /&gt;
  **************************************************************************/ |&lt;br /&gt;
 libvlc_media_descriptor_t *&lt;br /&gt;
 libvlc_media_instance_get_media_descriptor(&lt;br /&gt;
                            libvlc_media_instance_t *p_mi,&lt;br /&gt;
                            libvlc_exception_t *p_e )&lt;br /&gt;
 {&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Janitorial commits ===&lt;br /&gt;
&lt;br /&gt;
Please, please do not mix cosmetic (reformatting and so on) changes with changes that alter code behaviour in the same commit. Put them in a separate commit marked with &amp;lt;code&amp;gt;Cosmetic: (description here)&amp;lt;/code&amp;gt;. Make sure the changes compile before you commit anyway.&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=14543</id>
		<title>VLC Dev Projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=14543"/>
		<updated>2009-07-28T13:27:10Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* VLC.app rewrite using the Mac OS X Framework */ add js api callback&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of small independent improvements to {{VLC}} for which we are looking for interested developers, because we simply don&#039;t have enough time.&lt;br /&gt;
&lt;br /&gt;
These do not require advanced knowledge of VLC internals but they can still vastly improve many parts of VLC&lt;br /&gt;
&lt;br /&gt;
For each project, we list a contact person, who knows the subject best and who will be able to assist you if you are interested in working on these. We generally are very often present on irc.videolan.org, chan #videolan, so please don&#039;t hesitate to drop by or to send a mail if you are interested in a given problem (our mail adresses are generally &amp;lt;nick&amp;gt;@videolan.org).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be careful, some projects may be unrelated, or deprecated, because of fast evolving software! Ask before !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Easy projects =&lt;br /&gt;
&lt;br /&gt;
These projects are junior projects, the most easy ones to do, that require minimum knowledge of VLC.&lt;br /&gt;
&lt;br /&gt;
We also have a number of &amp;quot;easy&amp;quot; bugs. You can check them out [http://trac.videolan.org/vlc/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;difficulty=easy&amp;amp;order=priority` here]&lt;br /&gt;
&lt;br /&gt;
== Code Janitorial ==&lt;br /&gt;
It basically means to clean the code, it is helpful for all programmers. It helps to find bugs, and is a good way to learn about VLC&#039;s internals.&lt;br /&gt;
&lt;br /&gt;
It is covered in the [[Code Janitorial]] section.&lt;br /&gt;
&lt;br /&gt;
== Video Filters ==&lt;br /&gt;
You can do video filters for {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
You can inspire yourself on this &lt;br /&gt;
[http://movavi.com/enhancemovie/filters.html list of filters] from a commercial product.&lt;br /&gt;
&lt;br /&gt;
You can start the code [http://git.videolan.org/?p=vlc.git;a=tree;f=modules/video_filter here].&lt;br /&gt;
&lt;br /&gt;
== LastFM radios ==&lt;br /&gt;
&lt;br /&gt;
http://gabistapler.de/blog/index.php?/archives/268-Play-last.fm-streams-without-the-player.html&lt;br /&gt;
&lt;br /&gt;
Talk to dionoea or funman&lt;br /&gt;
&lt;br /&gt;
= Network = &lt;br /&gt;
&lt;br /&gt;
== Performant VLC streaming server ==&lt;br /&gt;
&lt;br /&gt;
There are many bottlenecks currently limiting the performance and scalability of VLC as a streaming server:&lt;br /&gt;
* The I/O blocks are linear, which implies lots of avoidable memory copying and dynamic memory allocations (particularly in the streaming output).&lt;br /&gt;
* mdate() (the timestamping function) is invoked in too many places to count them; but it is not a cheap operation on modern systems and should be avoided on the fast path. Ideally, a single thread would only need to call mdate() at most once per wake-up. In some case, mdate() is only used for debugging purpose which is really inefficient.&lt;br /&gt;
* The HTTP/RTSP core is single-threaded. This prevents scaling to SMP systems (which are the norm on server-side nowadays) properly. This also implies not very scalable I/O event polling. Finally, this gets problematic if one HTTP/RTSP client triggers a computationally intensive operation (such as establishing a TLS context if HTTP/SSL is used).&lt;br /&gt;
* There are many dynamic memory allocations that could be avoided. Video filters and codecs are very careful about this, but the stream output plugins are not. In many case, a stack-based buffer can be used (stack buffer, has constant time fast lock-less allocation, and needs not be freed explicitly) instead.&lt;br /&gt;
* The messaging subsystems might be adding more locking (needs checking); this should be avoided particularly if the message is anyway ignord (e.g. debug message in non-debug mode).&lt;br /&gt;
&lt;br /&gt;
Other improvements that would be particularly benefitial on the server side:&lt;br /&gt;
&lt;br /&gt;
* Memory allocation failure are not always duly handled. In some cases, that could potentially be leveraged by a client to crash a VLC server by causing a very large allocation attempt.&lt;br /&gt;
* Rewrite and revive the root wrapper to allow VLC to bind to the RTSP (554) port while not retaining root privileges.&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Courmisch|Courmisch]]&lt;br /&gt;
&lt;br /&gt;
= Inputs =&lt;br /&gt;
&lt;br /&gt;
== Windows Media Center (WMC) IR Remote Control ==&lt;br /&gt;
&lt;br /&gt;
Basic Controls work (e.g. Volume, Mute etc), but I would like to get Play/Pause/Stop/DVD Menu etc to work!&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:some1|some1]]&lt;br /&gt;
&lt;br /&gt;
= Video = &lt;br /&gt;
&lt;br /&gt;
== DirectX 9 video output ==&lt;br /&gt;
&lt;br /&gt;
DirectX 9 features some improvements that we could use in our video output&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Quovodis|Quovodis]]&lt;br /&gt;
&lt;br /&gt;
== Improvements to the X11 video output ==&lt;br /&gt;
&lt;br /&gt;
Fullscreen support to improve .&lt;br /&gt;
&lt;br /&gt;
== Pixel shaders in OpenGL video output ==&lt;br /&gt;
&lt;br /&gt;
It would be nice to have a small proof of concept video output which takes care of chroma conversion using pixel shaders.&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Dionoea|dionoea]]&lt;br /&gt;
&lt;br /&gt;
= Interfaces = &lt;br /&gt;
&lt;br /&gt;
== VLC.app rewrite using the Mac OS X Framework == &lt;br /&gt;
&lt;br /&gt;
See [[Mac_OS_X_Framework_VLC_app_Rewrite]]&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Pdherbemont|Pdherbemont]]&lt;br /&gt;
&lt;br /&gt;
== mozila and activex javascript api ==&lt;br /&gt;
&lt;br /&gt;
Add a callback to signal playlist state changes such as item started, item ended, next item started, last item ended, and so on.&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:jpsaman|jpsaman]]&lt;br /&gt;
&lt;br /&gt;
= Windows port =&lt;br /&gt;
&lt;br /&gt;
Finish port libcddb and libcdio for Windows.&lt;br /&gt;
&lt;br /&gt;
Port libzvbi for Windows&lt;br /&gt;
&lt;br /&gt;
Contact [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
= Playlist = &lt;br /&gt;
&lt;br /&gt;
== Improved Podcast support ==&lt;br /&gt;
&lt;br /&gt;
Our current podcast support is very weak. We can read them, but that&#039;s all. We need a real infrastructure to handle them correctly. This will require some changes to the playlist code, so you will need to work closely with existing developers.&lt;br /&gt;
&lt;br /&gt;
Contacts: [[User:Dionoea|Dionoea]] [[User:Zorglub|Zorglub]]&lt;br /&gt;
&lt;br /&gt;
== Improved ASX support ==&lt;br /&gt;
&lt;br /&gt;
ASX is a playlist format used by Microsoft stuff. We can read it but we could do much better. More information is available at &lt;br /&gt;
https://trac.videolan.org/vlc/ticket/20&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Dnumgis|Dnumgis]]&lt;br /&gt;
&lt;br /&gt;
== Disc probing ==&lt;br /&gt;
&lt;br /&gt;
We currently have some miscellaneous code to detect discs (DVDs, Audio CDs, ...) but it&#039;s a bit scattered and it could be used much better in the playlist.&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&lt;br /&gt;
&lt;br /&gt;
== Live folders == &lt;br /&gt;
&lt;br /&gt;
Some programs support so-called live folders. You add a folder to the playlist, and if the files in the folder are changed, the changes are copied to the playlist.&lt;br /&gt;
&lt;br /&gt;
Having this would of course be great :)&lt;br /&gt;
&lt;br /&gt;
It might require some work to be able to do this in Linux, Windows and OS X, but the current developers will of course be able to help on these.&lt;br /&gt;
&lt;br /&gt;
Contacts: [[User:Zorglub|Zorglub]] [[User:The DJ|The DJ]]&lt;br /&gt;
&lt;br /&gt;
=== Hint MP4/MOV Files ===&lt;br /&gt;
&lt;br /&gt;
Add video and audio hint tracks as the output file is muxed. Resulting files can be streamed from RTSP server with trickplay, like DSS/QTSS. Probably requires use of GPAC libraries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Projects running = &lt;br /&gt;
&lt;br /&gt;
== Subtitles improvements ==&lt;br /&gt;
{{VLC}} does not support all the styles for a lot of subtitles type.&lt;br /&gt;
Take a look at [http://trac.videolan.org/vlc/browser/trunk/modules/codec/subtitles/subsdec.c here] to start coding.&lt;br /&gt;
&lt;br /&gt;
Contact bitmap&lt;br /&gt;
&lt;br /&gt;
= Finished projects =&lt;br /&gt;
&lt;br /&gt;
==Audioscrobbler==	 &lt;br /&gt;
		 &lt;br /&gt;
An [http://www.audioscrobbler.net/ Audioscrobbler] VLC Plug-in for the social music network [http://www.last.fm Last.Fm]&amp;lt;br /&amp;gt;	 &lt;br /&gt;
			&lt;br /&gt;
Plugin is finished, now part of vlc 0.9.0 (development version). Done by [[User:funman|funman]]&lt;br /&gt;
&lt;br /&gt;
== DVB support for Windows / BDA Drivers ==	 &lt;br /&gt;
	 &lt;br /&gt;
DVB is the norm for :	 &lt;br /&gt;
* Digital Terrestrial TV (aka DVB-T)	 &lt;br /&gt;
* Digital Cable TV (aka DVB-C)	 &lt;br /&gt;
* Digital Satellite TV (aka DVB-S)	 &lt;br /&gt;
	 &lt;br /&gt;
Several DVB input cards exist. We support these on Linux, but not on Windows. For Windows, we need to support so-called BDA drivers.	 &lt;br /&gt;
	 &lt;br /&gt;
The problem is that we don&#039;t have both the time and the required hardware on Windows comps.	 &lt;br /&gt;
	 &lt;br /&gt;
This project is probably not terribly complex, but you need the hardware.&lt;br /&gt;
&lt;br /&gt;
Plugin is done and availabe in the current Git version. Code by kenS	 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DBus Integration ==&lt;br /&gt;
&lt;br /&gt;
[[DBus]] is a communication mechanism for Linux (mainly).&lt;br /&gt;
&lt;br /&gt;
We would like VLC to be able to use it so that other programs can interact with vlc (start/stop, know what is being played, ...)&lt;br /&gt;
&lt;br /&gt;
Work is well advanced, see [[DBus]], by funman and Mr_Mirsal&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Xtophe|Xtophe]], [[User:funman|funman]]&lt;br /&gt;
&lt;br /&gt;
== V4L2 support ==&lt;br /&gt;
&lt;br /&gt;
VLC currently has a pvr module and a v4l (video for linux) module.&lt;br /&gt;
However &lt;br /&gt;
* some cards are only supported in the new v4l2 API&lt;br /&gt;
* The linux kernel will soon drop v4l support&lt;br /&gt;
&lt;br /&gt;
So if someone could update VLC&#039;s current modules to work with V4L2 and the new ivtv api, this would be a welcome addition.&lt;br /&gt;
This is not a very difficult project, but you will need to have the hardware to test against.&lt;br /&gt;
The code has been began, so it should not be too difficult.&lt;br /&gt;
&lt;br /&gt;
Plugin is done and available in the current Git version. Code by Richard Hosking, [[User:dionoea|dionoea]] and Dennis Lou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RTCP support ==&lt;br /&gt;
&lt;br /&gt;
Our RTSP implementation (for broadcasting and video on demand) does not support the RTCP protocol. This is a must to have a real support for RTSP.&lt;br /&gt;
Some work has already been started, but there is still much to do.&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:JPSaman|JPSaman]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding]] [[Category:Activities]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_in_the_news&amp;diff=14537</id>
		<title>VideoLAN in the news</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_in_the_news&amp;diff=14537"/>
		<updated>2009-07-24T08:12:57Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* 2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;infobox&amp;quot;&lt;br /&gt;
| [http://news.google.co.uk/news?as_q=&amp;amp;svnum=10&amp;amp;as_scoring=r&amp;amp;hl=en&amp;amp;tab=wn&amp;amp;ie=UTF-8&amp;amp;btnG=Google+Search&amp;amp;as_epq=&amp;amp;as_oq=VLC+VideoLAN&amp;amp;as_eq=&amp;amp;as_nsrc=&amp;amp;as_nloc=&amp;amp;as_occt=any&amp;amp;as_drrb=q&amp;amp;as_qdr=&amp;amp;as_mind=9&amp;amp;as_minm=9&amp;amp;as_maxd=9&amp;amp;as_maxm=10 Search Google News] for the latest on VLC ([http://news.google.co.uk/news?svnum=10&amp;amp;as_scoring=r&amp;amp;hl=en&amp;amp;tab=wn&amp;amp;ie=UTF-8&amp;amp;as_drrb=q&amp;amp;as_qdr=&amp;amp;as_mind=9&amp;amp;as_minm=9&amp;amp;as_maxd=9&amp;amp;as_maxm=10&amp;amp;q=VLC+OR+VideoLAN&amp;amp;output=rss RSS feed])&lt;br /&gt;
|}&lt;br /&gt;
List of articles related to VideoLAN / VLC media player. Please add those which are missing.&lt;br /&gt;
&lt;br /&gt;
== 2009 ==&lt;br /&gt;
&lt;br /&gt;
[http://news.cnet.com/8301-13505_3-10280845-16.html cnet: VideoLAN releases VLC 1.0.0: Your media will never be the same]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.nytimes.com/external/gigaom/2009/07/22/22gigaom-4-free-open-source-tools-for-working-with-video-a-34611.html nytimes/gigaom: 4 Free Open-Source Tools for Working With Video and Audio]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2007 ==&lt;br /&gt;
&lt;br /&gt;
[http://articles.techrepublic.com.com/2415-7343_11-175865.html SolutionBase: Overcome multimedia hurdles in Linux]&lt;br /&gt;
&lt;br /&gt;
== 2006 ==&lt;br /&gt;
&lt;br /&gt;
[http://software.newsforge.com/article.pl?sid=06/04/19/1711245&amp;amp;from=rss &amp;quot;NewsForge, Transcoding and streaming DVD films with VLC media player&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.lesechos.fr/journal20061004/lec2_innovation/4475889.htm Les Echos (France), &amp;quot;Le lecteur multimédia français VLC téléchargé 18 millions de fois&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.m2x.nl/mambo/index.php?option=content&amp;amp;task=view&amp;amp;id=124&amp;amp;Itemid=27 M2X Article and NLUUG talk (Netherlands) &amp;quot;Streaming networks with VLC&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2005 ==&lt;br /&gt;
[http://www.01net.com/article/284013.html 01net.com (France)]&lt;br /&gt;
&lt;br /&gt;
[http://blogs.zdnet.fr/index.php/2005/06/28/vlc-un-lecteur-multimedia-tres-courtise/ ZDNet (France), &amp;quot;VLC: un lecteur multimedia très courtisé&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://solutions.journaldunet.com/0506/050613_videolan.shtml solutions.journaldunet.com (France)]&lt;br /&gt;
&lt;br /&gt;
[http://www.theregister.co.uk/2005/09/02/dvd_jon_mediaplayer/ The Register (UK), &amp;quot;DVD Jon hacks Media Player file encryption&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.source21.nl/2005/12/27/linuxworld-videolan-en-vlc Source21.nl (Netherlands), &amp;quot;LinuxWorld: VideoLAN en VLC (Interview with Jean-Paul Saman)&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.macplus.net/magplus/chronique-9311-interview-de-christophe-massiot MacPlus (France), &amp;quot;Interview de Christophe Massiot&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://home.planet.nl/~jpsaman/linux/downloads/vlc_open_source_multimedia.sxi LinuxWorld (Netherlands), &amp;quot;Open Source multimedia by Jean-Paul Saman&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2004 ==&lt;br /&gt;
&lt;br /&gt;
[http://builder.com.com/5100-6375-5136135.html Builder.com (USA?), &amp;quot;Open Source Awards 2004: VideoLAN&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.streamingmedia.com/article.asp?id=9000&amp;amp;page=1&amp;amp;c= streamingmedia.com (USA?), &amp;quot;VideoLAN&#039;s Piece de Resistance&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://home.planet.nl/~jpsaman/linux/downloads/videolan-fosdem-2004.pdf FOSDEM (Belgium) &amp;quot;VideoLAN VLC presentation at FOSDEM by Jean-Paul Saman&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2002 ==&lt;br /&gt;
&lt;br /&gt;
[http://download.videolan.org/images/macworld0-doublepage.jpg Mac World, &amp;quot;Les petits princes du MPEG-2&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.mac4ever.com/articles/humeur/336/interview_de_christophe_massiot_de_vlc/ Mac4ever (France), &amp;quot;Interview de Christophe Massiot de VLC&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_in_the_news&amp;diff=14536</id>
		<title>VideoLAN in the news</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_in_the_news&amp;diff=14536"/>
		<updated>2009-07-24T08:09:04Z</updated>

		<summary type="html">&lt;p&gt;Jpd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;infobox&amp;quot;&lt;br /&gt;
| [http://news.google.co.uk/news?as_q=&amp;amp;svnum=10&amp;amp;as_scoring=r&amp;amp;hl=en&amp;amp;tab=wn&amp;amp;ie=UTF-8&amp;amp;btnG=Google+Search&amp;amp;as_epq=&amp;amp;as_oq=VLC+VideoLAN&amp;amp;as_eq=&amp;amp;as_nsrc=&amp;amp;as_nloc=&amp;amp;as_occt=any&amp;amp;as_drrb=q&amp;amp;as_qdr=&amp;amp;as_mind=9&amp;amp;as_minm=9&amp;amp;as_maxd=9&amp;amp;as_maxm=10 Search Google News] for the latest on VLC ([http://news.google.co.uk/news?svnum=10&amp;amp;as_scoring=r&amp;amp;hl=en&amp;amp;tab=wn&amp;amp;ie=UTF-8&amp;amp;as_drrb=q&amp;amp;as_qdr=&amp;amp;as_mind=9&amp;amp;as_minm=9&amp;amp;as_maxd=9&amp;amp;as_maxm=10&amp;amp;q=VLC+OR+VideoLAN&amp;amp;output=rss RSS feed])&lt;br /&gt;
|}&lt;br /&gt;
List of articles related to VideoLAN / VLC media player. Please add those which are missing.&lt;br /&gt;
&lt;br /&gt;
== 2009 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.nytimes.com/external/gigaom/2009/07/22/22gigaom-4-free-open-source-tools-for-working-with-video-a-34611.html nytimes/gigaom: 4 Free Open-Source Tools for Working With Video and Audio]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2007 ==&lt;br /&gt;
&lt;br /&gt;
[http://articles.techrepublic.com.com/2415-7343_11-175865.html SolutionBase: Overcome multimedia hurdles in Linux]&lt;br /&gt;
&lt;br /&gt;
== 2006 ==&lt;br /&gt;
&lt;br /&gt;
[http://software.newsforge.com/article.pl?sid=06/04/19/1711245&amp;amp;from=rss &amp;quot;NewsForge, Transcoding and streaming DVD films with VLC media player&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.lesechos.fr/journal20061004/lec2_innovation/4475889.htm Les Echos (France), &amp;quot;Le lecteur multimédia français VLC téléchargé 18 millions de fois&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.m2x.nl/mambo/index.php?option=content&amp;amp;task=view&amp;amp;id=124&amp;amp;Itemid=27 M2X Article and NLUUG talk (Netherlands) &amp;quot;Streaming networks with VLC&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2005 ==&lt;br /&gt;
[http://www.01net.com/article/284013.html 01net.com (France)]&lt;br /&gt;
&lt;br /&gt;
[http://blogs.zdnet.fr/index.php/2005/06/28/vlc-un-lecteur-multimedia-tres-courtise/ ZDNet (France), &amp;quot;VLC: un lecteur multimedia très courtisé&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://solutions.journaldunet.com/0506/050613_videolan.shtml solutions.journaldunet.com (France)]&lt;br /&gt;
&lt;br /&gt;
[http://www.theregister.co.uk/2005/09/02/dvd_jon_mediaplayer/ The Register (UK), &amp;quot;DVD Jon hacks Media Player file encryption&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.source21.nl/2005/12/27/linuxworld-videolan-en-vlc Source21.nl (Netherlands), &amp;quot;LinuxWorld: VideoLAN en VLC (Interview with Jean-Paul Saman)&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.macplus.net/magplus/chronique-9311-interview-de-christophe-massiot MacPlus (France), &amp;quot;Interview de Christophe Massiot&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://home.planet.nl/~jpsaman/linux/downloads/vlc_open_source_multimedia.sxi LinuxWorld (Netherlands), &amp;quot;Open Source multimedia by Jean-Paul Saman&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2004 ==&lt;br /&gt;
&lt;br /&gt;
[http://builder.com.com/5100-6375-5136135.html Builder.com (USA?), &amp;quot;Open Source Awards 2004: VideoLAN&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.streamingmedia.com/article.asp?id=9000&amp;amp;page=1&amp;amp;c= streamingmedia.com (USA?), &amp;quot;VideoLAN&#039;s Piece de Resistance&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://home.planet.nl/~jpsaman/linux/downloads/videolan-fosdem-2004.pdf FOSDEM (Belgium) &amp;quot;VideoLAN VLC presentation at FOSDEM by Jean-Paul Saman&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== 2002 ==&lt;br /&gt;
&lt;br /&gt;
[http://download.videolan.org/images/macworld0-doublepage.jpg Mac World, &amp;quot;Les petits princes du MPEG-2&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://www.mac4ever.com/articles/humeur/336/interview_de_christophe_massiot_de_vlc/ Mac4ever (France), &amp;quot;Interview de Christophe Massiot de VLC&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Direct_Media_Object&amp;diff=13825</id>
		<title>Direct Media Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Direct_Media_Object&amp;diff=13825"/>
		<updated>2009-04-08T14:29:02Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* Integration in VLC */ language fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ mmwiki || Direct Media Object || Microsoft_Direct_Media_Object_API }} &lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Aka. MS DMO API, it is an API for various codecs and other Direct Media Objects.&lt;br /&gt;
&lt;br /&gt;
== Integration in VLC ==&lt;br /&gt;
&lt;br /&gt;
Using DMO, {{VLC}} can use external codecs to read video it would not be able to without, for example many [[Windows Media]] codecs that vlc has no native plugin for, like Microsoft Screen codecs or Microsoft Image codecs.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Use it with the &#039;&#039;&#039;--codec dmo&#039;&#039;&#039; switch from command-line or activate it in the preferences (&#039;&#039;&#039;Tools -&amp;gt; Preferences...&#039;&#039;&#039; and &#039;&#039;&#039;Show settings: All&#039;&#039;&#039; and &#039;&#039;&#039;Input/Codecs -&amp;gt; Other codecs&#039;&#039;&#039; and tick &#039;&#039;&#039;Prefer system plugins over VLC&#039;&#039;&#039;, press Save and restart VLC after the change).&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
Under linux, you can use them with the --enable-loader switch that uses Wine&#039;s emulation.&lt;br /&gt;
You have to put the Windows Media dlls in the /usr/win32 folder.&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13824</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13824"/>
		<updated>2009-04-08T08:39:26Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* Assembly optimizations in VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2009.&#039;&#039;&#039;&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;
== 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]]: &#039;&#039;&#039;[[SoC x264 2009]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read [[SoC_2009_Rules|the rules and advice]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer 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 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&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 projects for VLC will be included in the VLC 1.1 or any later version release.&lt;br /&gt;
&lt;br /&gt;
SoC projects for x264 will be included in the main tree of the project.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be 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;
# [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&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 the IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2009]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Qt pimping ===&lt;br /&gt;
&lt;br /&gt;
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.&lt;br /&gt;
&lt;br /&gt;
The basic, primary interface is reasonable but it could be improved in many ways. The (sub)menus and popups need a lot of (re)design, evaluation, Q&amp;amp;A, tinkering, and so on. For example, adding files is cumbersome and repeated adding even more so. Sorting and other displaying options in the playlist would be nice. Error reporting, presentation, and resolution needs improving. For example, import a few audio streams (one or more m3u/pls playlists, perhaps), try to use them, and see what happens when some urls are not available.&lt;br /&gt;
&lt;br /&gt;
Try to borrow the best ideas from amarok, iTunes, WMP, winamp, freeamp and integrate them into VLC.&lt;br /&gt;
&lt;br /&gt;
Look at other Qt applications or KDE applications.&lt;br /&gt;
&lt;br /&gt;
* You need some Qt and C++ knowlegde and a lot of creativity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&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;
&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;
* Interests in photography is strongly suggested.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Dionoea|Dionoea]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested student: [[User:Leonox|Leonox]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[SoC 2009/QuickTimeVR Playback|Project proposal]]&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;
* Profiling VLC.&lt;br /&gt;
* memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)&lt;br /&gt;
* video filters ASM speedups (see modules/video_filter/blend.c)&lt;br /&gt;
* audio filters ASM speedups (see modules/audio_filter/equalizer.c)&lt;br /&gt;
* Porting other ASM video filters to VLC.&lt;br /&gt;
&lt;br /&gt;
This project needs some good ASM knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
* Stuff to read: http://www.agner.org/optimize/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&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 good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Media Library work ===&lt;br /&gt;
This project is about working on the media library in SQL.&lt;br /&gt;
&lt;br /&gt;
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.&lt;br /&gt;
This can mean:&lt;br /&gt;
* Smart Folders&lt;br /&gt;
* Smart Playlists&lt;br /&gt;
* IMDB integration&lt;br /&gt;
* Integrated and saved bookmarks&lt;br /&gt;
* MetaData searching and editing&lt;br /&gt;
* Voting and external data integration&lt;br /&gt;
&lt;br /&gt;
See http://jpeg.dinauz.org/VideoLAN/gsoc/&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: &#039;&#039;jpeg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Services Discovery, like Jamendo integration ===&lt;br /&gt;
&lt;br /&gt;
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.&lt;br /&gt;
&lt;br /&gt;
This project deals with this integration.&lt;br /&gt;
&lt;br /&gt;
* This needs lua, C and C++ programming skills.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flash Streaming ===&lt;br /&gt;
&lt;br /&gt;
RTMP implementation for streaming to Flash10.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
Build a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). This access module will also need a nice component GUI.&lt;br /&gt;
&lt;br /&gt;
This project requires knowlege of C and preferably also Objective C, 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: thedj&#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. A right-click context menu with basic commands might be a nice way to get started.&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. 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. There is a proof of concept and a better design can be added later on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman and jpd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures.&lt;br /&gt;
&lt;br /&gt;
OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux GPU Acceleration Integration ===&lt;br /&gt;
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#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;proposed mentor: ?&#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;
&#039;&#039;Proposed mentor: ?&#039;&#039;&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: ?&#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;
&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_2009| 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;
* jpeg&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* jpd&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13823</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13823"/>
		<updated>2009-04-07T11:08:25Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* Qt pimping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2009.&#039;&#039;&#039;&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;
== 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]]: &#039;&#039;&#039;[[SoC x264 2009]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read [[SoC_2009_Rules|the rules and advice]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer 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 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&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 projects for VLC will be included in the VLC 1.1 or any later version release.&lt;br /&gt;
&lt;br /&gt;
SoC projects for x264 will be included in the main tree of the project.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be 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;
# [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&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 the IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2009]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Qt pimping ===&lt;br /&gt;
&lt;br /&gt;
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.&lt;br /&gt;
&lt;br /&gt;
The basic, primary interface is reasonable but it could be improved in many ways. The (sub)menus and popups need a lot of (re)design, evaluation, Q&amp;amp;A, tinkering, and so on. For example, adding files is cumbersome and repeated adding even more so. Sorting and other displaying options in the playlist would be nice. Error reporting, presentation, and resolution needs improving. For example, import a few audio streams (one or more m3u/pls playlists, perhaps), try to use them, and see what happens when some urls are not available.&lt;br /&gt;
&lt;br /&gt;
Try to borrow the best ideas from amarok, iTunes, WMP, winamp, freeamp and integrate them into VLC.&lt;br /&gt;
&lt;br /&gt;
Look at other Qt applications or KDE applications.&lt;br /&gt;
&lt;br /&gt;
* You need some Qt and C++ knowlegde and a lot of creativity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&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;
&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;
* Interests in photography is strongly suggested.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Dionoea|Dionoea]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested student: [[User:Leonox|Leonox]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[SoC 2009/QuickTimeVR Playback|Project proposal]]&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;
* Profiling VLC.&lt;br /&gt;
* memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)&lt;br /&gt;
* video filters ASM speedups (see modules/video_filter/blend.c)&lt;br /&gt;
* audio filters ASM speedups (see modules/audio_filter/equalizer.c)&lt;br /&gt;
* Porting other ASM video filters to 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: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&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 good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Media Library work ===&lt;br /&gt;
This project is about working on the media library in SQL.&lt;br /&gt;
&lt;br /&gt;
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.&lt;br /&gt;
This can mean:&lt;br /&gt;
* Smart Folders&lt;br /&gt;
* Smart Playlists&lt;br /&gt;
* IMDB integration&lt;br /&gt;
* Integrated and saved bookmarks&lt;br /&gt;
* MetaData searching and editing&lt;br /&gt;
* Voting and external data integration&lt;br /&gt;
&lt;br /&gt;
See http://jpeg.dinauz.org/VideoLAN/gsoc/&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: &#039;&#039;jpeg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Services Discovery, like Jamendo integration ===&lt;br /&gt;
&lt;br /&gt;
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.&lt;br /&gt;
&lt;br /&gt;
This project deals with this integration.&lt;br /&gt;
&lt;br /&gt;
* This needs lua, C and C++ programming skills.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flash Streaming ===&lt;br /&gt;
&lt;br /&gt;
RTMP implementation for streaming to Flash10.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
Build a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). This access module will also need a nice component GUI.&lt;br /&gt;
&lt;br /&gt;
This project requires knowlege of C and preferably also Objective C, 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: thedj&#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. A right-click context menu with basic commands might be a nice way to get started.&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. 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. There is a proof of concept and a better design can be added later on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman and jpd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures.&lt;br /&gt;
&lt;br /&gt;
OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux GPU Acceleration Integration ===&lt;br /&gt;
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#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;proposed mentor: ?&#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;
&#039;&#039;Proposed mentor: ?&#039;&#039;&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: ?&#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;
&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_2009| 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;
* jpeg&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* jpd&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13787</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13787"/>
		<updated>2009-03-27T14:42:47Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* Qt pimping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2009.&#039;&#039;&#039;&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;
== 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]]: &#039;&#039;&#039;[[SoC x264 2009]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read [[SoC_2009_Rules|the rules and advice]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer 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 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&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 projects for VLC will be included in the VLC 1.1 or any later version release.&lt;br /&gt;
&lt;br /&gt;
SoC projects for x264 will be included in the main tree of the project.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be 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;
# [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&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 the IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2009]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Qt pimping ===&lt;br /&gt;
&lt;br /&gt;
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.&lt;br /&gt;
&lt;br /&gt;
The basic, primary interface is reasonable but it could be improved in many ways. The (sub)menus and popups need a lot of (re)design, evaluation, Q&amp;amp;A, tinkering, and so on. For example, adding files is cumbersome and repeated adding even more so. Sorting and other displaying options in the playlist would be nice. Error reporting, presentation, and resolution needs improving.&lt;br /&gt;
&lt;br /&gt;
Try to borrow the best ideas from amarok, iTunes, WMP, winamp, freeamp and integrate them into VLC.&lt;br /&gt;
&lt;br /&gt;
Look at other Qt applications or KDE applications.&lt;br /&gt;
&lt;br /&gt;
* You need some Qt and C++ knowlegde and a lot of creativity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&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;
&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;
* Interests in photography is strongly suggested.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Dionoea|Dionoea]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested student: [[User:Leonox|Leonox]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[SoC 2009/QuickTimeVR Playback|Project proposal]]&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;
* Profiling VLC.&lt;br /&gt;
* memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)&lt;br /&gt;
* video filters ASM speedups (see modules/video_filter/blend.c)&lt;br /&gt;
* audio filters ASM speedups (see modules/audio_filter/equalizer.c)&lt;br /&gt;
* Porting other ASM video filters to 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: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&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 good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Media Library work ===&lt;br /&gt;
This project is about working on the media library in SQL.&lt;br /&gt;
&lt;br /&gt;
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.&lt;br /&gt;
This can mean:&lt;br /&gt;
* Smart Folders&lt;br /&gt;
* Smart Playlists&lt;br /&gt;
* IMDB integration&lt;br /&gt;
* Integrated and saved bookmarks&lt;br /&gt;
* MetaData searching and editing&lt;br /&gt;
* Voting and external data integration&lt;br /&gt;
&lt;br /&gt;
See http://jpeg.dinauz.org/VideoLAN/gsoc/&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: &#039;&#039;jpeg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Services Discovery, like Jamendo integration ===&lt;br /&gt;
&lt;br /&gt;
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.&lt;br /&gt;
&lt;br /&gt;
This project deals with this integration.&lt;br /&gt;
&lt;br /&gt;
* This needs lua, C and C++ programming skills.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flash Streaming ===&lt;br /&gt;
&lt;br /&gt;
RTMP implementation for streaming to Flash10.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
Build a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). This access module will also need a nice component GUI.&lt;br /&gt;
&lt;br /&gt;
This project requires knowlege of C and preferably also Objective C, 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: thedj&#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. A right-click context menu with basic commands might be a nice way to get started.&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. 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. There is a proof of concept and a better design can be added later on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman and jpd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures.&lt;br /&gt;
&lt;br /&gt;
OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux GPU Acceleration Integration ===&lt;br /&gt;
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#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;proposed mentor: ?&#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;
&#039;&#039;Proposed mentor: ?&#039;&#039;&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: ?&#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;
&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_2009| 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;
* jpeg&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* jpd&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13786</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13786"/>
		<updated>2009-03-27T14:37:01Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* Introduction &amp;amp; Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2009.&#039;&#039;&#039;&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;
== 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]]: &#039;&#039;&#039;[[SoC x264 2009]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read [[SoC_2009_Rules|the rules and advice]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer 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 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&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 projects for VLC will be included in the VLC 1.1 or any later version release.&lt;br /&gt;
&lt;br /&gt;
SoC projects for x264 will be included in the main tree of the project.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be 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;
# [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&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 the IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2009]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Qt pimping ===&lt;br /&gt;
&lt;br /&gt;
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.&lt;br /&gt;
&lt;br /&gt;
The basic interface is good but could be improved in many ways.&lt;br /&gt;
&lt;br /&gt;
Try to borrow the best ideas for amarok, iTunes, WMP and integrate them into VLC.&lt;br /&gt;
&lt;br /&gt;
Look at other Qt applications or KDE applications.&lt;br /&gt;
&lt;br /&gt;
* You need some Qt and C++ knowlegde and a lot of creativity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&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;
&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;
* Interests in photography is strongly suggested.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Dionoea|Dionoea]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Interested student: [[User:Leonox|Leonox]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[SoC 2009/QuickTimeVR Playback|Project proposal]]&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;
* Profiling VLC.&lt;br /&gt;
* memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)&lt;br /&gt;
* video filters ASM speedups (see modules/video_filter/blend.c)&lt;br /&gt;
* audio filters ASM speedups (see modules/audio_filter/equalizer.c)&lt;br /&gt;
* Porting other ASM video filters to 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: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&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 good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Media Library work ===&lt;br /&gt;
This project is about working on the media library in SQL.&lt;br /&gt;
&lt;br /&gt;
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.&lt;br /&gt;
This can mean:&lt;br /&gt;
* Smart Folders&lt;br /&gt;
* Smart Playlists&lt;br /&gt;
* IMDB integration&lt;br /&gt;
* Integrated and saved bookmarks&lt;br /&gt;
* MetaData searching and editing&lt;br /&gt;
* Voting and external data integration&lt;br /&gt;
&lt;br /&gt;
See http://jpeg.dinauz.org/VideoLAN/gsoc/&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: &#039;&#039;jpeg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Services Discovery, like Jamendo integration ===&lt;br /&gt;
&lt;br /&gt;
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.&lt;br /&gt;
&lt;br /&gt;
This project deals with this integration.&lt;br /&gt;
&lt;br /&gt;
* This needs lua, C and C++ programming skills.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flash Streaming ===&lt;br /&gt;
&lt;br /&gt;
RTMP implementation for streaming to Flash10.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
Build a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). This access module will also need a nice component GUI.&lt;br /&gt;
&lt;br /&gt;
This project requires knowlege of C and preferably also Objective C, 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: thedj&#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. A right-click context menu with basic commands might be a nice way to get started.&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. 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. There is a proof of concept and a better design can be added later on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman and jpd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures.&lt;br /&gt;
&lt;br /&gt;
OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux GPU Acceleration Integration ===&lt;br /&gt;
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#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;proposed mentor: ?&#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;
&#039;&#039;Proposed mentor: ?&#039;&#039;&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: ?&#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;
&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_2009| 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;
* jpeg&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* jpd&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13709</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13709"/>
		<updated>2009-03-19T09:09:48Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* GUI interfaces for the browsers plug-ins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2009.&#039;&#039;&#039;&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;
== 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]]: &#039;&#039;&#039;[[SoC x264 2009]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read the [[SoC_2009_Rules|rules]] and [[SoC_2009_Rules#Advices|advices]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer 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 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&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 projects for VLC will be included in the VLC 1.1 or any later version release.&lt;br /&gt;
&lt;br /&gt;
SoC projects for x264 will be included in the main tree of the project.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be 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;
# [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&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;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2009]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Qt pimping ===&lt;br /&gt;
&lt;br /&gt;
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.&lt;br /&gt;
&lt;br /&gt;
The basic interface is good but could be improved in many ways.&lt;br /&gt;
&lt;br /&gt;
Try to borrow the best ideas for amarok, iTunes, WMP and integrate them into VLC.&lt;br /&gt;
&lt;br /&gt;
Look at other Qt applications or KDE applications.&lt;br /&gt;
&lt;br /&gt;
* You need some Qt and C++ knowlegde and a lot of creativity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&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;
&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;
* Interests in photography is strongly suggested.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#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: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&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 good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Media Library work ===&lt;br /&gt;
This project is about working on the media library in SQL.&lt;br /&gt;
&lt;br /&gt;
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.&lt;br /&gt;
This can mean:&lt;br /&gt;
* Smart Folders&lt;br /&gt;
* Smart Playlists&lt;br /&gt;
* IMDB integration&lt;br /&gt;
* Integrated and saved bookmarks&lt;br /&gt;
* MetaData searching and editing&lt;br /&gt;
* Voting and external data integration&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: &#039;&#039;jpeg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
Build a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). This access module will also need a nice component GUI.&lt;br /&gt;
&lt;br /&gt;
This project requires knowlege of C and preferably also Objective C, 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: thedj&#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. A right-click context menu with basic commands might be a nice way to get started.&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. 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. There is a proof of concept and a better design can be added later on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman and jpd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures.&lt;br /&gt;
&lt;br /&gt;
OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux GPU Acceleration Integration ===&lt;br /&gt;
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Sterops&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Services Discovery, like Jamendo integration ===&lt;br /&gt;
&lt;br /&gt;
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.&lt;br /&gt;
&lt;br /&gt;
This project deals with this integration.&lt;br /&gt;
&lt;br /&gt;
* This needs lua, C and C++ programming skills.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#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;proposed mentor: ?&#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;
&#039;&#039;Proposed mentor: ?&#039;&#039;&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: ?&#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;
&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_2009| 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;
* jpeg&lt;br /&gt;
* ivoire&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* sterops&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* jpd&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13708</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13708"/>
		<updated>2009-03-19T08:56:08Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* QTKit access */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2009.&#039;&#039;&#039;&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;
== 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]]: &#039;&#039;&#039;[[SoC x264 2009]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read the [[SoC_2009_Rules|rules]] and [[SoC_2009_Rules#Advices|advices]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer 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 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&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 projects for VLC will be included in the VLC 1.1 or any later version release.&lt;br /&gt;
&lt;br /&gt;
SoC projects for x264 will be included in the main tree of the project.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be 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;
# [[Mini_Projects]] has some ideas too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&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;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2009]].&lt;br /&gt;
&lt;br /&gt;
== Main ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Qt pimping ===&lt;br /&gt;
&lt;br /&gt;
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.&lt;br /&gt;
&lt;br /&gt;
The basic interface is good but could be improved in many ways.&lt;br /&gt;
&lt;br /&gt;
Try to borrow the best ideas for amarok, iTunes, WMP and integrate them into VLC.&lt;br /&gt;
&lt;br /&gt;
Look at other Qt applications or KDE applications.&lt;br /&gt;
&lt;br /&gt;
* You need some Qt and C++ knowlegde and a lot of creativity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&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;
&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;
* Interests in photography is strongly suggested.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#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: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&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 good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Media Library work ===&lt;br /&gt;
This project is about working on the media library in SQL.&lt;br /&gt;
&lt;br /&gt;
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.&lt;br /&gt;
This can mean:&lt;br /&gt;
* Smart Folders&lt;br /&gt;
* Smart Playlists&lt;br /&gt;
* IMDB integration&lt;br /&gt;
* Integrated and saved bookmarks&lt;br /&gt;
* MetaData searching and editing&lt;br /&gt;
* Voting and external data integration&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: &#039;&#039;jpeg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
Build a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). This access module will also need a nice component GUI.&lt;br /&gt;
&lt;br /&gt;
This project requires knowlege of C and preferably also Objective C, 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: thedj&#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: jpsaman and jpd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures.&lt;br /&gt;
&lt;br /&gt;
OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux GPU Acceleration Integration ===&lt;br /&gt;
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Sterops&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Services Discovery, like Jamendo integration ===&lt;br /&gt;
&lt;br /&gt;
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.&lt;br /&gt;
&lt;br /&gt;
This project deals with this integration.&lt;br /&gt;
&lt;br /&gt;
* This needs lua, C and C++ programming skills.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#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;proposed mentor: ?&#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;
&#039;&#039;Proposed mentor: ?&#039;&#039;&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: ?&#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;
&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_2009| 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;
* jpeg&lt;br /&gt;
* ivoire&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* sterops&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* jpd&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009_Rules&amp;diff=13656</id>
		<title>SoC 2009 Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009_Rules&amp;diff=13656"/>
		<updated>2009-03-13T11:09:44Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* During the SoC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Those rules are mostly for x264 and VLC.&lt;br /&gt;
&lt;br /&gt;
 Those rules are quite flexible for any situation.&lt;br /&gt;
&lt;br /&gt;
= Rules =&lt;br /&gt;
&#039;&#039;We don&#039;t like rules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We like freedom and having fun with software programming.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
However, we have no choice, seeing past experiences and issues. :&#039;(&lt;br /&gt;
&lt;br /&gt;
== Summer Generalities ==&lt;br /&gt;
If you are a student, we expect that:&lt;br /&gt;
* You don&#039;t have a full-time job during your summer if you are doing SoC at the same time,&lt;br /&gt;
* You are of good will to work within VideoLAN team.&lt;br /&gt;
&lt;br /&gt;
If you are a mentor, we expect that:&lt;br /&gt;
* You are willing to work with one student and answers his questions.&lt;br /&gt;
&lt;br /&gt;
== Selection ==&lt;br /&gt;
&lt;br /&gt;
To be selected, students will have to:&lt;br /&gt;
* Show on IRC,&lt;br /&gt;
* Join the mailing lists (x264-devel or vlc-devel, according to your project),&lt;br /&gt;
* Select an idea,&lt;br /&gt;
* Say hello to the potential mentor and admin.&lt;br /&gt;
&lt;br /&gt;
* Learn about the code you should modify (where in the source, what is the idea...),&lt;br /&gt;
* Be able to compile a VLC or x264 for your platform and learn how to use [[Git]].&lt;br /&gt;
* Show the team that you compiled VLC and x264, by probably provide a small patch and a build. You can send the patch to an admin or to vlc-devel@ or x264-devel@&lt;br /&gt;
&lt;br /&gt;
* Do one of the slection task&lt;br /&gt;
* Complete the Google admission and give a planning idea.&lt;br /&gt;
&lt;br /&gt;
=== VLC selection tasks ===&lt;br /&gt;
* Examples of small patches:&lt;br /&gt;
** QtCoverFlow integration (mandatory for any Qt related project),&lt;br /&gt;
** ASX playlists improvements (see trac ticket 20),&lt;br /&gt;
** RAM playlists support (easy),&lt;br /&gt;
** WPL and ZPL playlists support (easy too),&lt;br /&gt;
** Close a VLC bug on trac,&lt;br /&gt;
** Add RMI (RIFF MIDI) support to the SMF demux,&lt;br /&gt;
** libsox based module,&lt;br /&gt;
** Extend the DBus control to activate a video filter on the fly on an already playing video,&lt;br /&gt;
** Fix warnings,&lt;br /&gt;
** Add some simple feature that sounds nice to you.&lt;br /&gt;
&lt;br /&gt;
== During the summer ==&lt;br /&gt;
&lt;br /&gt;
=== Student expectations ===&lt;br /&gt;
* Student should explain his planning to his mentor and to an admin (not everyone has the same vacations)&lt;br /&gt;
* Student should report with a small mail once a week to both mentor and admin during the time agreed (failure to do that will fail the application)&lt;br /&gt;
* Student should commit on his personal &#039;&#039;git branch&#039;&#039; once a week, except the first week of your schedule (or more if your project is complex).&lt;br /&gt;
&#039;&#039;&#039;Explaining why you can&#039;t work one week is fine. Disappearing without notice is not.&#039;&#039;&#039;&lt;br /&gt;
* Update wiki status page.&lt;br /&gt;
&lt;br /&gt;
=== Student rights ===&lt;br /&gt;
* Ask questions and stupid questions to anyone&lt;br /&gt;
* Bother the mentor with questions&lt;br /&gt;
* Ask the admin for another mentor if the mentor doesn&#039;t answer or doesn&#039;t fit.&lt;br /&gt;
&lt;br /&gt;
Students will be considered as &#039;&#039;&#039;full-right&#039;&#039;&#039; developers.&lt;br /&gt;
&lt;br /&gt;
=== Mentor expectations ===&lt;br /&gt;
* Mentor should report to admins any problems as soon as noticed, &lt;br /&gt;
* Mentor should tell admins if they can&#039;t make it in order to have another mentor for the student.&lt;br /&gt;
&lt;br /&gt;
=== Mentor rights ===&lt;br /&gt;
* Fail a student :D&lt;br /&gt;
&lt;br /&gt;
= Advice =&lt;br /&gt;
&lt;br /&gt;
== To get selected ==&lt;br /&gt;
&lt;br /&gt;
* Be nice.&lt;br /&gt;
* Show us basic skills with checking out and compiling the VLC code base.&lt;br /&gt;
* Show us that you understand the VLC architecture. Code samples are good.&lt;br /&gt;
* Come on IRC. Hang out, talk to us.&lt;br /&gt;
&lt;br /&gt;
== During the SoC ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;COMMIT EARLY, COMMIT OFTEN&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Please do check that your commits compile. This makes it much easier to find problems later on, as searching for one problem doesn&#039;t stumble into broken commits that relate to something else entirely.&lt;br /&gt;
* Ask questions. Don&#039;t sit on problems until the GSoC is over.&lt;br /&gt;
* Don&#039;t be afraid to start researching your question yourself then check whether you are on the right track with your mentor. He (or others on the mailinglist or in the irc channel) will be happier to answer you if you can show you have done the groundwork. It tends to make explanations shorter and more meaningful, too.&lt;br /&gt;
* Finishing the GSoC project in time is pretty cool too. It&#039;s your show! Make it something nice.&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009_Rules&amp;diff=13655</id>
		<title>SoC 2009 Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009_Rules&amp;diff=13655"/>
		<updated>2009-03-13T11:02:55Z</updated>

		<summary type="html">&lt;p&gt;Jpd: /* Advices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Those rules are mostly for x264 and VLC.&lt;br /&gt;
&lt;br /&gt;
 Those rules are quite flexible for any situation.&lt;br /&gt;
&lt;br /&gt;
= Rules =&lt;br /&gt;
&#039;&#039;We don&#039;t like rules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We like freedom and having fun with software programming.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
However, we have no choice, seeing past experiences and issues. :&#039;(&lt;br /&gt;
&lt;br /&gt;
== Summer Generalities ==&lt;br /&gt;
If you are a student, we expect that:&lt;br /&gt;
* You don&#039;t have a full-time job during your summer if you are doing SoC at the same time,&lt;br /&gt;
* You are of good will to work within VideoLAN team.&lt;br /&gt;
&lt;br /&gt;
If you are a mentor, we expect that:&lt;br /&gt;
* You are willing to work with one student and answers his questions.&lt;br /&gt;
&lt;br /&gt;
== Selection ==&lt;br /&gt;
&lt;br /&gt;
To be selected, students will have to:&lt;br /&gt;
* Show on IRC,&lt;br /&gt;
* Join the mailing lists (x264-devel or vlc-devel, according to your project),&lt;br /&gt;
* Select an idea,&lt;br /&gt;
* Say hello to the potential mentor and admin.&lt;br /&gt;
&lt;br /&gt;
* Learn about the code you should modify (where in the source, what is the idea...),&lt;br /&gt;
* Be able to compile a VLC or x264 for your platform and learn how to use [[Git]].&lt;br /&gt;
* Show the team that you compiled VLC and x264, by probably provide a small patch and a build. You can send the patch to an admin or to vlc-devel@ or x264-devel@&lt;br /&gt;
&lt;br /&gt;
* Do one of the slection task&lt;br /&gt;
* Complete the Google admission and give a planning idea.&lt;br /&gt;
&lt;br /&gt;
=== VLC selection tasks ===&lt;br /&gt;
* Examples of small patches:&lt;br /&gt;
** QtCoverFlow integration (mandatory for any Qt related project),&lt;br /&gt;
** ASX playlists improvements (see trac ticket 20),&lt;br /&gt;
** RAM playlists support (easy),&lt;br /&gt;
** WPL and ZPL playlists support (easy too),&lt;br /&gt;
** Close a VLC bug on trac,&lt;br /&gt;
** Add RMI (RIFF MIDI) support to the SMF demux,&lt;br /&gt;
** libsox based module,&lt;br /&gt;
** Extend the DBus control to activate a video filter on the fly on an already playing video,&lt;br /&gt;
** Fix warnings,&lt;br /&gt;
** Add some simple feature that sounds nice to you.&lt;br /&gt;
&lt;br /&gt;
== During the summer ==&lt;br /&gt;
&lt;br /&gt;
=== Student expectations ===&lt;br /&gt;
* Student should explain his planning to his mentor and to an admin (not everyone has the same vacations)&lt;br /&gt;
* Student should report with a small mail once a week to both mentor and admin during the time agreed (failure to do that will fail the application)&lt;br /&gt;
* Student should commit on his personal &#039;&#039;git branch&#039;&#039; once a week, except the first week of your schedule (or more if your project is complex).&lt;br /&gt;
&#039;&#039;&#039;Explaining why you can&#039;t work one week is fine. Disappearing without notice is not.&#039;&#039;&#039;&lt;br /&gt;
* Update wiki status page.&lt;br /&gt;
&lt;br /&gt;
=== Student rights ===&lt;br /&gt;
* Ask questions and stupid questions to anyone&lt;br /&gt;
* Bother the mentor with questions&lt;br /&gt;
* Ask the admin for another mentor if the mentor doesn&#039;t answer or doesn&#039;t fit.&lt;br /&gt;
&lt;br /&gt;
Students will be considered as &#039;&#039;&#039;full-right&#039;&#039;&#039; developers.&lt;br /&gt;
&lt;br /&gt;
=== Mentor expectations ===&lt;br /&gt;
* Mentor should report to admins any problems as soon as noticed, &lt;br /&gt;
* Mentor should tell admins if they can&#039;t make it in order to have another mentor for the student.&lt;br /&gt;
&lt;br /&gt;
=== Mentor rights ===&lt;br /&gt;
* Fail a student :D&lt;br /&gt;
&lt;br /&gt;
= Advice =&lt;br /&gt;
&lt;br /&gt;
== To get selected ==&lt;br /&gt;
&lt;br /&gt;
* Be nice.&lt;br /&gt;
* Show us basic skills with checking out and compiling the VLC code base.&lt;br /&gt;
* Show us that you understand the VLC architecture. Code samples are good.&lt;br /&gt;
* Come on IRC. Hang out, talk to us.&lt;br /&gt;
&lt;br /&gt;
== During the SoC ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;COMMIT EARLY, COMMIT OFTEN&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Please do check that your commits compile. This makes it much easier to find problems later on, as searching for one problem doesn&#039;t stumble into other people&#039;s unrelated broken commits.&lt;br /&gt;
* Ask questions. Don&#039;t sit on problems until the GSoC is over.&lt;br /&gt;
* Don&#039;t be afraid to start researching your question yourself then check whether you are on the right track with your mentor. He (or others on the mailinglist or in the irc channel) will be happier to answer you if you can show you have done the groundwork. It tends to make explanations shorter and more meaningful, too.&lt;br /&gt;
* Finishing the GSoC project in time is pretty cool too. It&#039;s your show! Make it something nice.&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Git&amp;diff=13365</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Git&amp;diff=13365"/>
		<updated>2009-02-11T23:16:50Z</updated>

		<summary type="html">&lt;p&gt;Jpd: Some much needed grammar fixes. Still needs work.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Git usage =&lt;br /&gt;
== Getting VLC source code via Git ==&lt;br /&gt;
 $ git clone git://git.videolan.org/vlc.git&lt;br /&gt;
Voilà! The full VLC history should be on your hard disk in vlc/.&lt;br /&gt;
&lt;br /&gt;
You can also clone using http with out repo.or.cz mirror.&lt;br /&gt;
 $ git clone http://repo.or.cz/r/vlc.git&lt;br /&gt;
&lt;br /&gt;
 $ git log&lt;br /&gt;
to see the full log of the trunk.&lt;br /&gt;
 $ gitk&lt;br /&gt;
to see the log graphically.&lt;br /&gt;
&lt;br /&gt;
You can also browse the sources via [http://git.videolan.org/ gitweb].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Applies to:&lt;br /&gt;
&lt;br /&gt;
 Windows XP Service Pack 2 with Security Update &#039;&#039;&#039;KB925902&#039;&#039;&#039; installed&lt;br /&gt;
 Windows XP Service Pack 3&lt;br /&gt;
&lt;br /&gt;
There is a problem on Windows XP (and possibly on other Microsoft Operating Systems) with &#039;git clone&#039; which aborts unexpectedly with a Cygwin error during the &#039;checking out files&#039; (reproducable every time and at the same percentage) at the end of the clone procedure:&lt;br /&gt;
&lt;br /&gt;
 $ 2 [main] git 4012 D:\cygwin\bin\git.exe:&lt;br /&gt;
   *** fatal error - &#039;&#039;&#039;could not load shell32, Win32 error 487&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This has been verified (May 22, 2008) against the currently available Cygwin 1.5.25-12 with git package versions 1.5.5.1-1 and 1.5.4-1 and is a generic problem which also affects cloning from other git repositories (although x264.git seems unaffected).&lt;br /&gt;
&lt;br /&gt;
The issue is referred to in the mail archives of the Cygwin project mailing list here &lt;br /&gt;
[http://sourceware.org/ml/cygwin/2007-07/msg00858.html Git error on Cygwin].&lt;br /&gt;
&lt;br /&gt;
By eliminating the impossible, whatever remained, however improbable, it is the following Windows Security Update (April 3, 2007) which is actually the cause of the Cygwin issue: [http://www.microsoft.com/technet/security/bulletin/ms07-017.mspx Microsoft Security Bulletin MS07-017 - Vulnerabilities in GDI Could Allow Remote Code Execution (925902)]&lt;br /&gt;
&lt;br /&gt;
Even though the same Security Update applies to the following systems, these are reported not to be affected:&lt;br /&gt;
&lt;br /&gt;
 Windows Vista Service Pack 1&lt;br /&gt;
 Windows 2003 Server Standard Service Pack 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;It is possible to get &#039;git clone&#039; working again on the affected systems by removing the Security Update (KB925902) but this is obviously not recommended for security reasons.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
To use git with Cygwin (for WinXP) do this:&lt;br /&gt;
&lt;br /&gt;
[Start][Run] and type &amp;quot;cmd&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Change to the directory where you desire to download x264 to:&lt;br /&gt;
&lt;br /&gt;
cd c:\ffmpeg-SVN\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have installed Cygwin in the standard location then type this:&lt;br /&gt;
&lt;br /&gt;
C:\ffmpeg-SVN\&amp;gt;c:\cygwin\bin\git clone git://git.videolan.org/x264.git&lt;br /&gt;
&lt;br /&gt;
Initialized empty Git repository in /cygdrive/c/ffmpeg-SVN/x264/.git/&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Generating pack...&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Done counting 6710 objects.&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Deltifying 6710 objects...&amp;lt;br&amp;gt;&lt;br /&gt;
remote:  100% (6710/6710) done&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Total 6710 (delta 5345), reused 156 (delta 123)                :&amp;lt;br&amp;gt;&lt;br /&gt;
Receiving objects: 100% (6710/6710), 1.63 MiB | 25 KiB/s, done.&amp;lt;br&amp;gt;&lt;br /&gt;
Resolving deltas: 100% (5345/5345), done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can use Cygwin&#039;s git under the DOS shell but if you try the same &lt;br /&gt;
command under the Cygwin (Bash) shell you get an error message.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Configure your global git config ==&lt;br /&gt;
May need to use &lt;br /&gt;
$ git repo-config {various options} &lt;br /&gt;
1.4.4.2 Requires the repo-config command rather than just config&lt;br /&gt;
&lt;br /&gt;
=== Personal Information ===&lt;br /&gt;
Tell git your name. (use mostly by git-commit)&lt;br /&gt;
 $ git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
 $ git config --global user.email &amp;quot;me@example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Using git with color (Tip) ===&lt;br /&gt;
If you want to use git with colored output use:&lt;br /&gt;
 $ git config --global color.ui true&lt;br /&gt;
&lt;br /&gt;
If you are using an old git version (prior to 1.5.5) and previous command didn&#039;t work, use:&lt;br /&gt;
 $ git config --global color.diff auto&lt;br /&gt;
 $ git config --global color.status auto&lt;br /&gt;
 $ git config --global color.branch auto&lt;br /&gt;
&lt;br /&gt;
=== Setting up &amp;quot;git up&amp;quot; (Tip) ===&lt;br /&gt;
If you want to be able to just keep in sync using &amp;quot;git up&amp;quot; use:&lt;br /&gt;
 $ git config --global alias.up &amp;quot;pull --rebase&amp;quot;&lt;br /&gt;
And if you like your tree to be messy and don&#039;t want git to complain (like in svn) use:&lt;br /&gt;
 $ git config --global alias.up &#039;!sh -c &amp;quot;git stash &amp;amp;&amp;amp; git pull --rebase &amp;amp;&amp;amp; git stash apply&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Setting up &amp;quot;git wu&amp;quot; (Git What&#039;s Up) (Tip) ===&lt;br /&gt;
If you want to see what you are about to &amp;quot;git push&amp;quot;:&lt;br /&gt;
 $ git config --global alias.wu &amp;quot;log --stat origin..@{0}&amp;quot;&lt;br /&gt;
Now use:&lt;br /&gt;
 $ git wu&lt;br /&gt;
&lt;br /&gt;
=== Setting up &amp;quot;git wup&amp;quot; (Git What&#039;s Up - with patch) (Tip) ===&lt;br /&gt;
If you want to see what you are about to &amp;quot;git push&amp;quot;, along with the diff:&lt;br /&gt;
 $ git config --global alias.wup &amp;quot;log -p origin..@{0}&amp;quot;&lt;br /&gt;
Now use:&lt;br /&gt;
 $ git wup&lt;br /&gt;
&lt;br /&gt;
== General GIT Workflow ==&lt;br /&gt;
1.  Make your file edits in your local repository.&lt;br /&gt;
&lt;br /&gt;
2.  &amp;quot;git commit&amp;quot;      the changes in your local repository&lt;br /&gt;
&lt;br /&gt;
3.  &amp;quot;git pull --rebase&amp;quot;  or &amp;quot;git up&amp;quot; (if you did &#039;&#039;git config --global alias.up &amp;quot;pull --rebase&amp;quot;&#039;&#039;) to bring the rest of your local repository up to date&lt;br /&gt;
&lt;br /&gt;
4.  &amp;quot;git log origin..master&amp;quot;    to check what you are going to commit&lt;br /&gt;
&lt;br /&gt;
4.  &amp;quot;git push&amp;quot;    to move your changes up to the master&lt;br /&gt;
&lt;br /&gt;
&amp;quot;git stash&amp;quot;    if you want to &amp;quot;hide&amp;quot; your changes.  Do this if you think there may be other commits against the same things you are working on and want to refresh your local checkout (using a git pull --rebase) from the master. Use &amp;quot;git stash apply&amp;quot; to get your stash back. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;git checkout -f master&amp;quot;     if you think your tree is pretty hopeless, need a kill-and-fill to bring the master into your local repository.&lt;br /&gt;
&lt;br /&gt;
== List the local branch ==&lt;br /&gt;
You can now list your local branch by doing&lt;br /&gt;
 $ git branch&lt;br /&gt;
which should ouput&lt;br /&gt;
 $ git branch&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
== List your local non committed changes ==&lt;br /&gt;
 $ git status | less&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
Now you can start to work on your tree. As soon as you feel you have reached a step in developement where you can commit your work &#039;&#039;&#039;locally&#039;&#039;&#039;, use&lt;br /&gt;
 $ git commit -a&lt;br /&gt;
or&lt;br /&gt;
 $ git commit &amp;lt;specific files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you wish to give credit to someone else&#039;s work (e.g. you are applying a third party patch):&lt;br /&gt;
 $ git commit &amp;lt;specific files&amp;gt; --author &amp;quot;Name Surname &amp;lt;user@domain.com&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== List your commits ==&lt;br /&gt;
 $ git log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keeping your local working branch in sync ==&lt;br /&gt;
 $ git pull --rebase&lt;br /&gt;
&lt;br /&gt;
To shorten up that command type&lt;br /&gt;
 $ git config --global alias.up &amp;quot;pull --rebase&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now you can just type:&lt;br /&gt;
 $ git up&lt;br /&gt;
&lt;br /&gt;
== Use a graphical interface ==&lt;br /&gt;
 $ gitk          # Tree Browser&lt;br /&gt;
 $ qgit          # Tree Browser&lt;br /&gt;
 $ git-gui       # Commit/push/... editor&lt;br /&gt;
&lt;br /&gt;
== Submitting patches to the vlc-devel ==&lt;br /&gt;
&lt;br /&gt;
First make sure you have &#039;&#039;&#039;read&#039;&#039;&#039; our [[Sending Patches]] page. And that you&#039;ve &#039;&#039;&#039;read&#039;&#039;&#039; the [[Sending Patches#Check_List| Check List]].&lt;br /&gt;
&lt;br /&gt;
If you have been developing on vlc locally and (still) don&#039;t have write access, you can submit all your commits in one shot using:&lt;br /&gt;
 $ rm -Rf patches&lt;br /&gt;
 $ git format-patch -o patches origin&lt;br /&gt;
 $ git-send-email --to vlc-devel@videolan.org patches&lt;br /&gt;
If you have multiple patch consider using:&lt;br /&gt;
 $ git-send-email --compose --no-chain-reply-to --to vlc-devel@videolan.org patches&lt;br /&gt;
This will produce the patches for each local commit in the directory &amp;quot;patches&amp;quot; and send them.&lt;br /&gt;
Use --no-chain-reply-to make sure it doesn&#039;t reply.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- what does the following mean? --&amp;gt;&lt;br /&gt;
Don&#039;t do:&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
*** [PATCH 2/m]&lt;br /&gt;
**** ...&lt;br /&gt;
But do:&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
** [PATCH 2/m]&lt;br /&gt;
** ..&lt;br /&gt;
&lt;br /&gt;
= Advanced usage =&lt;br /&gt;
== Creating a secondary local branch ==&lt;br /&gt;
If you want to work on a specific project that could require a branch of the trunk, create a local branch of the current branch by doing:&lt;br /&gt;
 $ git branch mywork&lt;br /&gt;
and to actually use it do:&lt;br /&gt;
 $ git checkout mywork&lt;br /&gt;
Which could be summarized by:&lt;br /&gt;
 $ git checkout -b mywork&lt;br /&gt;
&lt;br /&gt;
Then do some commit on it... And you can go back to your original master branch by doing:&lt;br /&gt;
 $ git checkout master&lt;br /&gt;
&lt;br /&gt;
== Fetching a remote branch ==&lt;br /&gt;
To see the remote branch use:&lt;br /&gt;
 $ git branch -r&lt;br /&gt;
If the remote branch is named 0.8.6-bugfix&lt;br /&gt;
 $ git branch 0.8.6-bugfix origin/0.8.6-bugfix &lt;br /&gt;
 Branch 0.8.6-bugfix set up to track remote branch refs/remotes/origin/0.8.6-bugfix.&lt;br /&gt;
 $ git branch&lt;br /&gt;
  0.8.6-bugfix&lt;br /&gt;
  * master&lt;br /&gt;
To checkout that branch use:&lt;br /&gt;
 $ git checkout 0.8.6-bugfix&lt;br /&gt;
To stay up-to-date a simple&lt;br /&gt;
 $ git pull --rebase&lt;br /&gt;
Should be enough.&lt;br /&gt;
&lt;br /&gt;
If warnings appear that files still need updating:&lt;br /&gt;
 $ include/libvlc_internal.h: needs update&lt;br /&gt;
   include/mediacontrol_internal.h: needs update&lt;br /&gt;
   include/vlc/libvlc.h: needs update&lt;br /&gt;
   include/vlc_update.h: needs update&lt;br /&gt;
   modules/access/mms/mms.c: needs update&lt;br /&gt;
   ...&lt;br /&gt;
&lt;br /&gt;
Then do a checkout -f to revert non committed local changes&lt;br /&gt;
 $ git checkout -f&lt;br /&gt;
&lt;br /&gt;
To stay up-to-date another&lt;br /&gt;
 $ git pull --rebase&lt;br /&gt;
Should give no more warnings.&lt;br /&gt;
&lt;br /&gt;
To push to the remote branch, use:&lt;br /&gt;
 $git push origin 0.8.6-bugfix:0.8.6-bugfix&lt;br /&gt;
&lt;br /&gt;
== Creating a remote branch ==&lt;br /&gt;
If the new remote branch is named 0.9.0-bugfix, and is based on the local master branch.&lt;br /&gt;
First make sure everything go as planned with the --dry-run option:&lt;br /&gt;
 $ git push --dry-run origin master:refs/heads/0.9.0-stable&lt;br /&gt;
 To git@git.videolan.org:vlc.git&lt;br /&gt;
 * [new branch]      master -&amp;gt; 0.9.0-stable&lt;br /&gt;
&lt;br /&gt;
Then push it:&lt;br /&gt;
 $ git push origin master:refs/heads/0.9.0-stable&lt;br /&gt;
 To git@git.videolan.org:vlc.git&lt;br /&gt;
 * [new branch]      master -&amp;gt; 0.9.0-stable&lt;br /&gt;
 $ git branch -r&lt;br /&gt;
  origin/0.9.0-stable&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
To checkout that branch now see &#039;&#039;Fetching a remote branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Publishing your own fork ==&lt;br /&gt;
Goto [http://repo.or.cz/w/vlc.git http://repo.or.cz/w/vlc.git] and click [http://repo.or.cz/m/regproj.cgi?name=vlc/ fork]. You will be able to publish your work there.&lt;br /&gt;
&lt;br /&gt;
Please don&#039;t forget to send a mail to the vlc-devel as soon as you create your fork.&lt;br /&gt;
&lt;br /&gt;
== Revert your non-committed local changes ==&lt;br /&gt;
 $ git checkout -f&lt;br /&gt;
&lt;br /&gt;
==Edit or undo not yet pushed commits ==&lt;br /&gt;
This will undo the last commit&lt;br /&gt;
 $ git reset HEAD^&lt;br /&gt;
which is the same as&lt;br /&gt;
 $ git reset master^&lt;br /&gt;
(if your checked-out copy of your tree is master)&lt;br /&gt;
And also the same as&lt;br /&gt;
 $ git reset a44a594 # note that there is no need to use the full sha id&lt;br /&gt;
&lt;br /&gt;
If you have a stack of patch that you have not yet committed you can delete one patch from the list using git rebase --interactive&lt;br /&gt;
 $ git rebase --interactive origin&lt;br /&gt;
  pick eacf185 test&lt;br /&gt;
  pick 56322eb VLMA owner is vlma prod.&lt;br /&gt;
 &lt;br /&gt;
  # Rebase 826757e..56322eb onto 826757e&lt;br /&gt;
  #&lt;br /&gt;
  # Commands:&lt;br /&gt;
  #  pick = use commit&lt;br /&gt;
  #  edit = use commit, but stop for amending&lt;br /&gt;
  #  squash = use commit, but meld into previous commit&lt;br /&gt;
&lt;br /&gt;
== Diff-ing ==&lt;br /&gt;
* You can diff between two branches using&lt;br /&gt;
 $ git diff branch1 branch2&lt;br /&gt;
* You can diff between the previous 10th commit and current using&lt;br /&gt;
 $ git diff HEAD~10 HEAD&lt;br /&gt;
* You can diff between the previous 10th commit and current of the branch &amp;quot;mywork&amp;quot; using&lt;br /&gt;
 $ git diff mywork~10 mywork&lt;br /&gt;
* Imagine that git log is like&lt;br /&gt;
 $ git log&lt;br /&gt;
 commit e0394f269305edd09843257e7c1d1a66aaf48ab3&lt;br /&gt;
 Author: jb &amp;lt;jb&amp;gt;&lt;br /&gt;
 Date:   Fri Apr 13 07:14:48 2007 +0000&lt;br /&gt;
    qt4 - Mousewheel (2)&lt;br /&gt;
 commit e80b339081aa6755f67c9bd8e2aacf93a9a79d95&lt;br /&gt;
 [..]&lt;br /&gt;
 commit ff7004b70fd239e4120deb160e2991bd5237b8df&lt;br /&gt;
 [..]&lt;br /&gt;
 commit a44a594898f981a145cfcace5f16f8973f9eb46f&lt;br /&gt;
 [..]&lt;br /&gt;
 commit 690df705c963cf6bf6f5746d54bc97a85ff91919&lt;br /&gt;
 [..]&lt;br /&gt;
 commit 679f8b1c3e0baa469efa970588b95a625c595d64&lt;br /&gt;
 [..]&lt;br /&gt;
&lt;br /&gt;
 $ git diff a44a594898f981a145cfcace5f16f8973f9eb46f~2 e80b339081aa6755f67c9bd8e2aacf93a9a79d95&lt;br /&gt;
Will be equivalent to:&lt;br /&gt;
 $ git diff ff7004b70fd239e4120deb160e2991bd5237b8df e80b339081aa6755f67c9bd8e2aacf93a9a79d95&lt;br /&gt;
And to:&lt;br /&gt;
 $ git diff HEAD~4 HEAD^&lt;br /&gt;
&lt;br /&gt;
* Remember that to produce a patch you should rather use git-format-patch than git-diff most of the time.&lt;br /&gt;
&lt;br /&gt;
== Tracking regression ==&lt;br /&gt;
git has a great tool called [http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html git-bisect] to help you to track a faulty commit. Imagine you are tracking a bug that is known to appear after 0.8.6 (assuming 0.8.6 is tagged):&lt;br /&gt;
 $ git bisect start&lt;br /&gt;
 $ git bisect bad # tell git current version has the bug you are tracking&lt;br /&gt;
 $ git bisect good 0.8.6 # tell git 0.8.6 didn&#039;t has the bug&lt;br /&gt;
And then git will checkout a certain revision, and ask you to test it. And you simply say whether this version has the bug.&lt;br /&gt;
If it has the bug:&lt;br /&gt;
 $ git bisect bad&lt;br /&gt;
if the bug is not present:&lt;br /&gt;
 $ git bisect good&lt;br /&gt;
And so on by bisection... At the end git will indicate the faulty commit. Most of the time this tool is really efficient to track regression.&lt;br /&gt;
&lt;br /&gt;
If you can provide a script that test the presence of the bug &lt;br /&gt;
 $ git bisect run &amp;lt;script_name&amp;gt;&lt;br /&gt;
will be able to track down the regression by itself. See [http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html git-bisect Documentation].&lt;br /&gt;
&lt;br /&gt;
= Using Git to push to VideoLAN git =&lt;br /&gt;
== Initial requirement ==&lt;br /&gt;
* Make sure you&#039;ve set your name and email in your commits&lt;br /&gt;
 $ git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
 $ git config --global user.email &amp;quot;me@example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Convert your tree to use your ssh push commit access ==&lt;br /&gt;
 $ vi vlc/.git/config&lt;br /&gt;
And replace git://git.videolan.org/vlc.git by git@git.videolan.org:vlc.git&lt;br /&gt;
&lt;br /&gt;
== Staying up to date ==&lt;br /&gt;
  $ git pull --rebase&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to have to type --rebase everytime you pull do:&lt;br /&gt;
 $ git config branch.master.rebase true&lt;br /&gt;
&lt;br /&gt;
This one creates a merge object which is not how SVN worked, so let&#039;s use the first version...&lt;br /&gt;
  $ git pull&lt;br /&gt;
&lt;br /&gt;
== Pushing your work ==&lt;br /&gt;
  $ git log origin..master     # Check what you are going to push&lt;br /&gt;
  $ git push&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GSoC 2007&lt;br /&gt;
= Using Git to publish your work (for SoC student?) =&lt;br /&gt;
First get the official VLC &#039;&#039;&#039;Soc&#039;&#039;&#039; trunk&lt;br /&gt;
 $ git clone git://git.videolan.org/vlc-soc.git&lt;br /&gt;
 $ cd vlc-soc&lt;br /&gt;
Ask for write access to a branch (called your_name_branch). Now we will make git know that you want to publish on this branch&lt;br /&gt;
 $ git config remote.my_soc_public_branch.url ssh://your_name@altair.videolan.org/home/videolan/gitroot/vlc-soc.git&lt;br /&gt;
Now tell git that you want to automatically push the local master branch to the public your_name_branch:&lt;br /&gt;
 $ git config remote.my_soc_public_branch.push +master:your_name_branch # the &amp;quot;+&amp;quot; will tell git to force update ignoring conflicts&lt;br /&gt;
&lt;br /&gt;
Do some work and commit it to your master branch.&lt;br /&gt;
 $ git commit -a&lt;br /&gt;
You can also sync with the trunk (origin) as needed&lt;br /&gt;
 $ git pull --rebase origin&lt;br /&gt;
And don&#039;t forget to publish your changes:&lt;br /&gt;
 $ git push my_soc_public_branch&lt;br /&gt;
Now you should be able to see your latest changes in your branch via [http://git.videolan.org/ gitweb].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Documentation about git =&lt;br /&gt;
* [http://git.or.cz/ Official Git Website]&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/tutorial.html Git Tutorial]&lt;br /&gt;
* [http://git.or.cz/course/svn.html Switching from SVN to git using cogito]&lt;br /&gt;
* [http://wiki.sourcemage.org/Git_Guide Very good Git guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;/div&gt;</summary>
		<author><name>Jpd</name></author>
	</entry>
</feed>