<?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=Dionoea</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=Dionoea"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Dionoea/"/>
	<updated>2026-11-04T14:52:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010&amp;diff=15526</id>
		<title>SoC 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010&amp;diff=15526"/>
		<updated>2010-02-11T13:53:53Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2010.&#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}} .&lt;br /&gt;
&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}} .&lt;br /&gt;
&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 later releases.&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;
&lt;br /&gt;
# [[Mini_Projects]] are short-span projects which can be given as Qualification tasks.&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;
&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;
== Main ideas ==&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;
&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;
&lt;br /&gt;
&lt;br /&gt;
== Mini Projects - More ideas ==&lt;br /&gt;
&lt;br /&gt;
This sections welcomes all &#039;&#039;&#039;Original&#039;&#039;&#039; ideas which can be implemented in a short span of time.However, 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;
&lt;br /&gt;
&lt;br /&gt;
=== Gmail Integration ===&lt;br /&gt;
&lt;br /&gt;
To Develop a Combination of VLC Patch and a FireFox Extension , working together to set currently Playing track as Custom Message in Gmail Chat. The FireFox Extension will fetch the track Information from VLC instance running and will&lt;br /&gt;
* Either, generate an XmlHttpRequest to send the new status to Server.&lt;br /&gt;
* Or, Fire the Gmail Eventlisteners accordingly. &lt;br /&gt;
The project succesfully completed this way will be Platform Independent.Had it been done through Google Talk Client , it would have been available for Windows users only.Had it been done using VLC&amp;lt;-&amp;gt;Google server interaction, it would have required User authentications ,Proxy Handling etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed by :&#039;&#039; pk&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 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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Format_String&amp;diff=15512</id>
		<title>Documentation:Format String</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Format_String&amp;diff=15512"/>
		<updated>2010-02-09T15:10:43Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
Starting with [[VLC media player]] 0.9.0, format string variables can be used with the following options:&lt;br /&gt;
* --marq-marquee&lt;br /&gt;
* --snapshot-path (when specifying a full image path, not a directory)&lt;br /&gt;
* --snapshot-prefix&lt;br /&gt;
* --image-out-prefix&lt;br /&gt;
* --msn-format (windows only)&lt;br /&gt;
* file access output dst/url (like in std{access=file,mux=ts,dst=&#039;&#039;&#039;THIS&#039;&#039;&#039;})&lt;br /&gt;
&lt;br /&gt;
There are two kinds of format string variables: time variables and meta variables.&lt;br /&gt;
&lt;br /&gt;
==Time==&lt;br /&gt;
&lt;br /&gt;
Time variables are those defined by the &#039;&#039;&#039;strftime&#039;&#039;&#039; C function. Those include:&lt;br /&gt;
* %Y : year&lt;br /&gt;
* %m : month&lt;br /&gt;
* %d : day&lt;br /&gt;
* %H : hour&lt;br /&gt;
* %M : minute&lt;br /&gt;
* %S : second&lt;br /&gt;
For an extensive list have a look at [http://www.hmug.org/man/3/strftime.php man strftime].&lt;br /&gt;
&lt;br /&gt;
==Meta==&lt;br /&gt;
&lt;br /&gt;
Meta variables are VLC specific. The complete list is:&lt;br /&gt;
* $a : artist&lt;br /&gt;
* $b : album&lt;br /&gt;
* $c : copyright&lt;br /&gt;
* $d : description&lt;br /&gt;
* $e : encoded by&lt;br /&gt;
* $f : frame count&lt;br /&gt;
* $g : genre&lt;br /&gt;
* $l : language&lt;br /&gt;
* $n : track num&lt;br /&gt;
* $p : now playing&lt;br /&gt;
* $r : rating&lt;br /&gt;
* $s : subtitles language&lt;br /&gt;
* $t : title&lt;br /&gt;
* $u : url&lt;br /&gt;
* $A : date&lt;br /&gt;
* $B : audio bitrate (in kb/s)&lt;br /&gt;
* $C : chapter (as in DVD chapter number)&lt;br /&gt;
* $D : duration&lt;br /&gt;
* $F : full name with path&lt;br /&gt;
* $I : title (as in DVD title number)&lt;br /&gt;
* $L : time left&lt;br /&gt;
* $N : name (media name as seen in the VLC playlist)&lt;br /&gt;
* $O : audio language&lt;br /&gt;
* $P : position (in %)&lt;br /&gt;
* $R : rate&lt;br /&gt;
* $S : audio sample rate (in kHz)&lt;br /&gt;
* $T : time code of the video&lt;br /&gt;
* $U : publisher&lt;br /&gt;
* $V : volume&lt;br /&gt;
* $_ : new line&lt;br /&gt;
* $&amp;lt;any other char&amp;gt; : &amp;lt;any other char&amp;gt; (for example: $$ transforms to $)&lt;br /&gt;
&lt;br /&gt;
You can insert a space between the $ sign and the character to tell it to not display anything if the meta data isn&#039;t available. For example: $ T instead will display &amp;quot;&amp;quot; if no time is available while $T would display something like &amp;quot;01_22_13&amp;quot; (for a snapshot from one hour, 22 minutes and 13 seconds in a video).&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Python_bindings&amp;diff=15397</id>
		<title>Python bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Python_bindings&amp;diff=15397"/>
		<updated>2010-01-14T15:00:54Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: 2nd try&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Python bindings =&lt;br /&gt;
&lt;br /&gt;
You can find two versions of python bindings: an old one (see [[Old Python bindings]]), hand-written C-module, and a new one, which is ctypes-based and automatically generated.&lt;br /&gt;
The old version of the bindings is now deprecated and will be removed in some future version.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The new module features :&lt;br /&gt;
* a complete cover of the libvlc/MediaControl API, since it is automatically generated from the include files.&lt;br /&gt;
* no compilation hassle: the generated module is pure python.&lt;br /&gt;
* no versioning hassle: the same module works with multiple VLC versions.&lt;br /&gt;
* a [http://www.advene.org/download/python-ctypes/doc/ complete documentation].&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
You can download the [http://www.advene.org/download/python-ctypes/ vlc.py] module from the [http://www.advene.org/ Advene] website. It only depends on ctypes (standard module in python &amp;gt;= 2.5). Put the module in some place accessible by python (either next to your application, or in a directory from sys.path).&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can generate it by yourself using the generate.py program and accompanying files in the vlc source tree (see [http://git.videolan.org/?p=vlc.git;a=tree;f=bindings/python-ctypes]).&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
The vlc.py module is also a runnable example player application (see code at the end of the module, starting from the line &amp;quot;if __name__ == &#039;__main__&#039;). A helper module [http://git.videolan.org/?p=vlc.git;a=blob;f=bindings/python-ctypes/vlcwidget.py;hb=HEAD vlcwidget.py] provides a pygtk VLCWidget() to ease integration.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Python_bindings&amp;diff=15396</id>
		<title>Python bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Python_bindings&amp;diff=15396"/>
		<updated>2010-01-14T14:58:27Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: fix gitweb link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Python bindings =&lt;br /&gt;
&lt;br /&gt;
You can find two versions of python bindings: an old one (see [[Old Python bindings]]), hand-written C-module, and a new one, which is ctypes-based and automatically generated.&lt;br /&gt;
The old version of the bindings is now deprecated and will be removed in some future version.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The new module features :&lt;br /&gt;
* a complete cover of the libvlc/MediaControl API, since it is automatically generated from the include files.&lt;br /&gt;
* no compilation hassle: the generated module is pure python.&lt;br /&gt;
* no versioning hassle: the same module works with multiple VLC versions.&lt;br /&gt;
* a [http://www.advene.org/download/python-ctypes/doc/ complete documentation].&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
You can download the [http://www.advene.org/download/python-ctypes/ vlc.py] module from the [http://www.advene.org/ Advene] website. It only depends on ctypes (standard module in python &amp;gt;= 2.5). Put the module in some place accessible by python (either next to your application, or in a directory from sys.path).&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can generate it by yourself using the generate.py program and accompanying files in the vlc source tree (see [http://git.videolan.org/?p=vlc.git;a=tree;f=bindings/python-ctypes]).&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
The vlc.py module is also a runnable example player application (see code at the end of the module, starting from the line &amp;quot;if __name__ == &#039;__main__&#039;). A helper module [http://git.videolan.org/?p=vlc.git;a=tree;f=bindings/python-&lt;br /&gt;
ctypes;hb=HEAD] provides a pygtk VLCWidget() to ease integration.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/netsync&amp;diff=12920</id>
		<title>Documentation:Modules/netsync</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/netsync&amp;diff=12920"/>
		<updated>2008-12-23T09:38:36Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Looks like netsync not being in (some?) 0.9 builds is a buildsystem issue (the module is still available)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=netsync|first_version=0.8.0|type=Video output|description=Synchronise remote VLC instances}}&lt;br /&gt;
&lt;br /&gt;
Use this module to keep several clients synchronised on a single VLC stream.&lt;br /&gt;
&lt;br /&gt;
{{Option|name=netsync-master|default=disabled|description=Act as master}}&lt;br /&gt;
{{Option|name=netsync-master-ip|value=string|default=&amp;quot;&amp;quot;|description=Master client ip address}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Common uses of this module are:&lt;br /&gt;
* Synchronise lots of loud PC speakers during a party;&lt;br /&gt;
* Synchronise several computers playing parts of a [[Documentation:Modules/wall|video wall]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a small example:&lt;br /&gt;
:We&#039;re going to be listening to a multicast stream.&lt;br /&gt;
:Run a client as master syncronisation client (master has IP address 192.168.0.1):&lt;br /&gt;
 %&#039;&#039;&#039; vlc udp://@239.255.1.1 --control netsync --netsync-master &#039;&#039;&#039;&lt;br /&gt;
:And on the other clients:&lt;br /&gt;
 %&#039;&#039;&#039; vlc udp://@239.255.1.1 --control netsync --netsync-master-ip 192.168.0.1 &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/screen&amp;diff=12894</id>
		<title>Documentation:Modules/screen</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/screen&amp;diff=12894"/>
		<updated>2008-12-17T11:24:11Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=screen|type=Access|description=screen capture}}&lt;br /&gt;
&lt;br /&gt;
Stream or save a video of your computer screen.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-caching&lt;br /&gt;
|value=integer&lt;br /&gt;
|description=Time in milliseconds&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-fps&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=Capture frames per second&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-fragment-size&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=(Windows only) Optimize the capture by fragmenting the screen in chunks of predefined height (16 might be a good value, and 0 means disabled)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-top&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=The top edge coordinate of the subscreen. (New in VLC 0.9.0 on x11, New in VLC 1.0.0 on Windows)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-left&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=The left edge coordinate of the subscreen. (New in VLC 0.9.0 on x11, New in VLC 1.0.0 on Windows)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-width&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=&amp;lt;full screen width&amp;gt;&lt;br /&gt;
|description=The width of the subscreen. (New in VLC 0.9.0 on x11, New in VLC 1.0.0 on Windows)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-height&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=&amp;lt;full screen height&amp;gt;&lt;br /&gt;
|description=The height of the subscreen. (New in VLC 0.9.0 on x11, New in VLC 1.0.0 on Windows)&lt;br /&gt;
}}&lt;br /&gt;
  &lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-follow-mouse, no-screen-follow-mouse&lt;br /&gt;
|default=no-screen-follow-mouse&lt;br /&gt;
|description=Follow the mouse when capturing a subscreen. (New in VLC 0.9.0 on x11, New in VLC 1.0.0 on Windows)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-mouse-image&lt;br /&gt;
|value=filename&lt;br /&gt;
|default=&amp;quot;&amp;quot;&lt;br /&gt;
|description=Mouse pointer image to use. If specified, the pointer will be overlayed on the captured video. (New in VLC 1.0.0, Windows and x11 only)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Run...&lt;br /&gt;
 % &#039;&#039;&#039;vlc -H&#039;&#039;&#039;&lt;br /&gt;
...for the definitive options for your version.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Capture a screen:&lt;br /&gt;
 % &#039;&#039;&#039;vlc screen:// --screen-fps=1 --screen-width=100 --screen-height=100&#039;&#039;&#039;&lt;br /&gt;
The screen thus captured is 100x100 pixels in from the top left corner of the active screen.&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/screen&amp;diff=12893</id>
		<title>Documentation:Modules/screen</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/screen&amp;diff=12893"/>
		<updated>2008-12-17T11:21:57Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=screen|type=Access|description=screen capture}}&lt;br /&gt;
&lt;br /&gt;
Stream or save a video of your computer screen.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-caching&lt;br /&gt;
|value=integer&lt;br /&gt;
|description=Time in milliseconds&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-fps&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=Capture frames per second&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-fragment-size&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=(Windows only) Optimize the capture by fragmenting the screen in chunks of predefined height (16 might be a good value, and 0 means disabled)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-top&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=The top edge coordinate of the subscreen. (New in VLC 1.0.0, Windows and Linux only)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-left&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=0&lt;br /&gt;
|description=The left edge coordinate of the subscreen. (New in VLC 1.0.0, Windows and Linux only)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-width&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=&amp;lt;full screen width&amp;gt;&lt;br /&gt;
|description=The width of the subscreen. (New in VLC 1.0.0, Windows and Linux only)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-height&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=&amp;lt;full screen height&amp;gt;&lt;br /&gt;
|description=The height of the subscreen. (New in VLC 1.0.0, Windows and Linux only)&lt;br /&gt;
}}&lt;br /&gt;
  &lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-follow-mouse, no-screen-follow-mouse&lt;br /&gt;
|default=no-screen-follow-mouse&lt;br /&gt;
|description=Follow the mouse when capturing a subscreen. (New in VLC 1.0.0, Windows and Linux only)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Option&lt;br /&gt;
|name=screen-mouse-image&lt;br /&gt;
|value=filename&lt;br /&gt;
|default=&amp;quot;&amp;quot;&lt;br /&gt;
|description=Mouse pointer image to use. If specified, the pointer will be overlayed on the captured video. (New in VLC 1.0.0, Windows and Linux only)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Run...&lt;br /&gt;
 % &#039;&#039;&#039;vlc -H&#039;&#039;&#039;&lt;br /&gt;
...for the definitive options for your version.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Capture a screen:&lt;br /&gt;
 % &#039;&#039;&#039;vlc screen:// --screen-fps=1 --screen-width=100 --screen-height=100&#039;&#039;&#039;&lt;br /&gt;
The screen thus captured is 100x100 pixels in from the top left corner of the active screen.&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User_talk:Nhumfrey&amp;diff=12892</id>
		<title>User talk:Nhumfrey</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User_talk:Nhumfrey&amp;diff=12892"/>
		<updated>2008-12-17T11:18:00Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: New page: Hello, Thanks for your help on the VLC documentation. I see that you added documentation for an OSC module but can&amp;#039;t find it in the VLC tree. (I haven&amp;#039;t been following development for the ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello,&lt;br /&gt;
Thanks for your help on the VLC documentation. I see that you added documentation for an OSC module but can&#039;t find it in the VLC tree. (I haven&#039;t been following development for the last 2 or 3 months so I could have missed something.) Is this officially included in VLC? If not, it could be a good idea to add a flag to the module template to mention that a module isn&#039;t part of the official VLC tree. Cheers, [[User:Dionoea|Dionoea]] 12:18, 17 December 2008 (CET)&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Qt_and_GTK&amp;diff=12460</id>
		<title>Qt and GTK</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Qt_and_GTK&amp;diff=12460"/>
		<updated>2008-09-21T00:49:01Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VLC media player 0.9 introduces a new interface based on the Qt toolkit.&lt;br /&gt;
&lt;br /&gt;
Some of you, using GNOME or Xfce, seem reticent to that change, but let us explain a few things:&lt;br /&gt;
&lt;br /&gt;
== VLC media player interface is a PLUGIN ==&lt;br /&gt;
* You can use VLC in command line, with the http interface, or even the old wx interface, that you can compile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC media player &#039;&#039;&#039;DOES NOT DEPEND&#039;&#039;&#039; on kdelibs ==&lt;br /&gt;
&lt;br /&gt;
VLC media player Qt module needs:&lt;br /&gt;
* libQtCore,&lt;br /&gt;
* libQtGui,&lt;br /&gt;
* libvlc&lt;br /&gt;
&lt;br /&gt;
That&#039;s it.&lt;br /&gt;
&lt;br /&gt;
== How to have a Native look of VLC using Qt inside GTK environnement ==&lt;br /&gt;
&lt;br /&gt;
You can use trolltech&#039;s QGtkStyle project to get a native GTK look. See http://labs.trolltech.com/page/Projects/Styles/GtkStyle for more information.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Qt_and_GTK&amp;diff=12459</id>
		<title>Qt and GTK</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Qt_and_GTK&amp;diff=12459"/>
		<updated>2008-09-21T00:47:17Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VLC media player 0.9 introduces a new interface based on the Qt toolkit.&lt;br /&gt;
&lt;br /&gt;
Some of you, using GNOME or Xfce, seem reticent to that change, but let us explain a few things:&lt;br /&gt;
&lt;br /&gt;
== VLC media player interface is a PLUGIN ==&lt;br /&gt;
* You can use VLC in command line, with the http interface, or even the old wx interface, that you can compile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC media player &#039;&#039;&#039;DOES NOT DEPEND&#039;&#039;&#039; on kdelibs ==&lt;br /&gt;
&lt;br /&gt;
VLC media player Qt module needs:&lt;br /&gt;
* libQtCore,&lt;br /&gt;
* libQtGui,&lt;br /&gt;
* libvlc&lt;br /&gt;
&lt;br /&gt;
That&#039;s it.&lt;br /&gt;
&lt;br /&gt;
== How to have a Native look of VLC using Qt inside GTK environnement ==&lt;br /&gt;
&lt;br /&gt;
You can use trolltech&#039;s QGtkStyle project to get a native GTK look. See http://labs.trolltech.com/page/Projects/Styles/GtkStyle for more information.&lt;br /&gt;
&lt;br /&gt;
== Is a native GTK interface development is planed ? ==&lt;br /&gt;
&lt;br /&gt;
No.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Qt_and_GTK&amp;diff=12438</id>
		<title>Qt and GTK</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Qt_and_GTK&amp;diff=12438"/>
		<updated>2008-09-17T16:36:16Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VLC media player 0.9 introduces a new interface based on the Qt toolkit.&lt;br /&gt;
&lt;br /&gt;
Some of you, using GNOME or Xfce, seem reticent to that change, but let us explain a few things:&lt;br /&gt;
&lt;br /&gt;
== VLC media player interface is a PLUGIN ==&lt;br /&gt;
* You can use VLC in command line, with the http interface, or even the old wx interface, that you can compile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC media player &#039;&#039;&#039;DOES NOT DEPEND&#039;&#039;&#039; on kdelibs ==&lt;br /&gt;
&lt;br /&gt;
VLC media player Qt module needs:&lt;br /&gt;
* libQtCore,&lt;br /&gt;
* libQtGui,&lt;br /&gt;
* libvlc&lt;br /&gt;
&lt;br /&gt;
That&#039;s it.&lt;br /&gt;
&lt;br /&gt;
== How to have a Native look of VLC using Qt inside GTK environnement ==&lt;br /&gt;
&lt;br /&gt;
You can use trolltech&#039;s QGtkStyle project to get a native GTK look. See http://labs.trolltech.com/page/Projects/Styles/GtkStyle for more information.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12434</id>
		<title>What is cool in 0.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12434"/>
		<updated>2008-09-14T23:20:11Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* A bit more */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to explain what are the cool features of &#039;&#039;&#039;&#039;&#039;VLC media player 0.9&#039;&#039;&#039;&#039;&#039;, codename &#039;&#039;&#039;Grishenko&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Think about it as a &amp;quot;&#039;&#039;&#039;Important features (AKA: the cool stuff)&#039;&#039;&#039;&amp;quot; kernelnewbies-like page, so you don&#039;t have to read the complete changelog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Very short summary ==&lt;br /&gt;
&lt;br /&gt;
=== One liner ===&lt;br /&gt;
The 0.9 version of {{VLC}} adds a new interface module for Linux, Unix and Windows, a media library and an improved playlist, many new inputs and codecs support and many new audio and video filters.&lt;br /&gt;
&lt;br /&gt;
=== A bit more ===&lt;br /&gt;
For video playback, new protocols, new codecs, new demuxers and many bug-fixes have been added to support more formats.&lt;br /&gt;
&lt;br /&gt;
For audio playback, cover art and metadata support (and editing) have been vastly enhanced. It can play audio when the playback speed is changed.&lt;br /&gt;
&lt;br /&gt;
For the developers, libVLC has been simplified and improved, many bindings for many languages were added and there is a new Mac OS X Framework.&amp;lt;br /&amp;gt; Scripts written in lua can expand VLC media player&#039;s capabilities (read Youtube, Dailymotion URLs, fetch meta-data...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;journalist&#039;&#039;, &#039;&#039;press&#039;&#039; related or a &#039;&#039;blogger&#039;&#039;, please look [[What_is_cool_in_0.9#Press|here]]. If you distribute VLC on your website, please do the same. In both case, please state that we [[Help us|need help]].&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;	&amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;	&amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also get [http://www.videolan.org/videos/ better quality], [http://www.youtube.com/watch?v=zVhk7Kq1rEU Youtube] or [http://www.dailymotion.com/dionoea/video/11351932 dailymotion] versions of this video.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&lt;br /&gt;
A new interface module based on the Qt toolkit has been added to VLC. If you are a &#039;&#039;&#039;GNOME&#039;&#039;&#039; or &#039;&#039;&#039;Xfce&#039;&#039;&#039; user, &#039;&#039;&#039;before trolling&#039;&#039;&#039;, please read [[Qt and GTK|this]].&lt;br /&gt;
&lt;br /&gt;
This new interface module has a few improvements on the old one:&lt;br /&gt;
* Simplified settings and dialogs&lt;br /&gt;
* Media library integration&lt;br /&gt;
* Album art displaying and metadata editing&lt;br /&gt;
* Live activation of Video and audio filters &lt;br /&gt;
* Basic encoding profiles&lt;br /&gt;
* Multiple start modes (classic, enhanced and minimalist)&lt;br /&gt;
* System tray icon and minimizing&lt;br /&gt;
* Fullscreen controller&lt;br /&gt;
And many other improvements and bug-fixes.&lt;br /&gt;
&lt;br /&gt;
Moreover, some global hotkeys plugin can be found on the forum.&lt;br /&gt;
&lt;br /&gt;
=== Playlist ===&lt;br /&gt;
&lt;br /&gt;
The playlist has been improved in many ways, in addition to the new Media Library &#039;&#039;(very simple so far, but will be extended in the future)&#039;&#039;:&lt;br /&gt;
* Live Searching in the playlist,&lt;br /&gt;
* Youtube, Dailymotion, Google Video and similar services URL can be scripted in VLC to play directly those URLs,&lt;br /&gt;
* last.fm submission support,&lt;br /&gt;
* Album art support,&lt;br /&gt;
* Better metadata tagging reading and writing support for audio files.&lt;br /&gt;
&lt;br /&gt;
=== Playback ===&lt;br /&gt;
&lt;br /&gt;
A lot of new decoders, demuxers, and protocols have been added.&lt;br /&gt;
&lt;br /&gt;
There are new codecs support, like Flash video variants, camcorder codecs (M2TS ones), Dirac, Atrac3, H.264 PAFF, APE audio, RealVideo, VC-3, Fraps and others, but also better decoding and better performance. Many thanks to the [http://ffmpeg.org FFmpeg project] which can take most of the credit for these improvements.&lt;br /&gt;
&lt;br /&gt;
There are improvements in the demuxers and new supports (subtitles format rework with many new formats, Tivo2, OMA, MIDI support...).&lt;br /&gt;
&lt;br /&gt;
Tag supports of audio files have vastly been improved(fix of APE, AAC, OGG tags,...)&lt;br /&gt;
&lt;br /&gt;
This version also supports DVB windows devices (BDA), iSight Webcams, v4l2 on Linux and many other ones.&lt;br /&gt;
&lt;br /&gt;
=== Filters ===&lt;br /&gt;
&lt;br /&gt;
Many new audio and video filters have been added:&lt;br /&gt;
* New video filters like puzzle game, color extracting, sharpen, logo erasing, blue-screen and more have been added.&lt;br /&gt;
* New audio filters have introduced Replay Gain support, Faster/Slower audio playback with pitch correction and a spatializer.&lt;br /&gt;
&lt;br /&gt;
Most video filters can now be streamed.&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
* libVLC has been rewritten and split and supports externally built plugins&lt;br /&gt;
* VLCKit, a Mac OS X Framework, enables external developers to develop applications around VLC.&lt;br /&gt;
* New bindings can be found on the wiki and the forums&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
A new update system, more secured, was developed for this release.&lt;br /&gt;
&lt;br /&gt;
New localizations in Finnish, Persian, Polish, Punjabi, Bulgarian have joined the old ones.&lt;br /&gt;
&lt;br /&gt;
== Long summary and details ==&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
You can also have the mailing list information on http://mailman.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
If you are press related, can you please note a few things:&lt;br /&gt;
* The software name is &amp;quot;VLC media player&amp;quot;, not &amp;quot;VLC Media Player&amp;quot;, not &amp;quot;VideoLAN&amp;quot;, not &amp;quot;VideoLan Client&amp;quot; nor any other variation.&lt;br /&gt;
* The team behind videolan.org is &amp;quot;VideoLAN&amp;quot;, not &amp;quot;Videolan&amp;quot;, not &amp;quot;VLC folks&amp;quot;, nor &amp;quot;vlc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Please be nice to state that we need help to develop the software, and link to the [[Help us]] page.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12433</id>
		<title>What is cool in 0.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12433"/>
		<updated>2008-09-14T23:17:37Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to explain what are the cool features of &#039;&#039;&#039;&#039;&#039;VLC media player 0.9&#039;&#039;&#039;&#039;&#039;, codename &#039;&#039;&#039;Grishenko&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Think about it as a &amp;quot;&#039;&#039;&#039;Important features (AKA: the cool stuff)&#039;&#039;&#039;&amp;quot; kernelnewbies-like page, so you don&#039;t have to read the complete changelog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Very short summary ==&lt;br /&gt;
&lt;br /&gt;
=== One liner ===&lt;br /&gt;
The 0.9 version of {{VLC}} adds a new interface module for Linux, Unix and Windows, a media library and an improved playlist, many new inputs and codecs support and many new audio and video filters.&lt;br /&gt;
&lt;br /&gt;
=== A bit more ===&lt;br /&gt;
For video playback, new protocols, new codecs, new demuxers and many bug-fixes have been added to support more formats.&lt;br /&gt;
&lt;br /&gt;
For audio playback, cover art and metadata support (and editing) have been vastly enhanced. It can play audio when the playback speed is changed.&lt;br /&gt;
&lt;br /&gt;
For the developers, libVLC has been simplified and improved, many bindings for many languages were added and there is a new Mac OS X Framework.&amp;lt;br /&amp;gt; Scripts written in lua can expand VLC media player&#039;s capabilities (read Youtube, Dailymotion URLs, fetch meta-data...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are &#039;&#039;journalist&#039;&#039;, &#039;&#039;press&#039;&#039; related or a &#039;&#039;blogger&#039;&#039;, please look [[What_is_cool_in_0.9#Press|here]]. If you distribute VLC on your website, please do the same. In both case, please state that [[Help us|need help]].&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;	&amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;	&amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also get [http://www.videolan.org/videos/ better quality], [http://www.youtube.com/watch?v=zVhk7Kq1rEU Youtube] or [http://www.dailymotion.com/dionoea/video/11351932 dailymotion] versions of this video.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&lt;br /&gt;
A new interface module based on the Qt toolkit has been added to VLC. If you are a &#039;&#039;&#039;GNOME&#039;&#039;&#039; or &#039;&#039;&#039;Xfce&#039;&#039;&#039; user, &#039;&#039;&#039;before trolling&#039;&#039;&#039;, please read [[Qt and GTK|this]].&lt;br /&gt;
&lt;br /&gt;
This new interface module has a few improvements on the old one:&lt;br /&gt;
* Simplified settings and dialogs&lt;br /&gt;
* Media library integration&lt;br /&gt;
* Album art displaying and metadata editing&lt;br /&gt;
* Live activation of Video and audio filters &lt;br /&gt;
* Basic encoding profiles&lt;br /&gt;
* Multiple start modes (classic, enhanced and minimalist)&lt;br /&gt;
* System tray icon and minimizing&lt;br /&gt;
* Fullscreen controller&lt;br /&gt;
And many other improvements and bug-fixes.&lt;br /&gt;
&lt;br /&gt;
Moreover, some global hotkeys plugin can be found on the forum.&lt;br /&gt;
&lt;br /&gt;
=== Playlist ===&lt;br /&gt;
&lt;br /&gt;
The playlist has been improved in many ways, in addition to the new Media Library &#039;&#039;(very simple so far, but will be extended in the future)&#039;&#039;:&lt;br /&gt;
* Live Searching in the playlist,&lt;br /&gt;
* Youtube, Dailymotion, Google Video and similar services URL can be scripted in VLC to play directly those URLs,&lt;br /&gt;
* last.fm submission support,&lt;br /&gt;
* Album art support,&lt;br /&gt;
* Better metadata tagging reading and writing support for audio files.&lt;br /&gt;
&lt;br /&gt;
=== Playback ===&lt;br /&gt;
&lt;br /&gt;
A lot of new decoders, demuxers, and protocols have been added.&lt;br /&gt;
&lt;br /&gt;
There are new codecs support, like Flash video variants, camcorder codecs (M2TS ones), Dirac, Atrac3, H.264 PAFF, APE audio, RealVideo, VC-3, Fraps and others, but also better decoding and better performance. Many thanks to the [http://ffmpeg.org FFmpeg project] which can take most of the credit for these improvements.&lt;br /&gt;
&lt;br /&gt;
There are improvements in the demuxers and new supports (subtitles format rework with many new formats, Tivo2, OMA, MIDI support...).&lt;br /&gt;
&lt;br /&gt;
Tag supports of audio files have vastly been improved(fix of APE, AAC, OGG tags,...)&lt;br /&gt;
&lt;br /&gt;
This version also supports DVB windows devices (BDA), iSight Webcams, v4l2 on Linux and many other ones.&lt;br /&gt;
&lt;br /&gt;
=== Filters ===&lt;br /&gt;
&lt;br /&gt;
Many new audio and video filters have been added:&lt;br /&gt;
* New video filters like puzzle game, color extracting, sharpen, logo erasing, blue-screen and more have been added.&lt;br /&gt;
* New audio filters have introduced Replay Gain support, Faster/Slower audio playback with pitch correction and a spatializer.&lt;br /&gt;
&lt;br /&gt;
Most video filters can now be streamed.&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
* libVLC has been rewritten and split and supports externally built plugins&lt;br /&gt;
* VLCKit, a Mac OS X Framework, enables external developers to develop applications around VLC.&lt;br /&gt;
* New bindings can be found on the wiki and the forums&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
A new update system, more secured, was developed for this release.&lt;br /&gt;
&lt;br /&gt;
New localizations in Finnish, Persian, Polish, Punjabi, Bulgarian have joined the old ones.&lt;br /&gt;
&lt;br /&gt;
== Long summary and details ==&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
You can also have the mailing list information on http://mailman.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
If you are press related, can you please note a few things:&lt;br /&gt;
* The software name is &amp;quot;VLC media player&amp;quot;, not &amp;quot;VLC Media Player&amp;quot;, not &amp;quot;VideoLAN&amp;quot;, not &amp;quot;VideoLan Client&amp;quot; nor any other variation.&lt;br /&gt;
* The team behind videolan.org is &amp;quot;VideoLAN&amp;quot;, not &amp;quot;Videolan&amp;quot;, not &amp;quot;VLC folks&amp;quot;, nor &amp;quot;vlc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Please be nice to state that we need help to develop the software, and link to the [[Help us]] page.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12432</id>
		<title>What is cool in 0.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12432"/>
		<updated>2008-09-14T23:15:08Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Playback */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to explain what are the cool features of &#039;&#039;&#039;&#039;&#039;VLC media player 0.9&#039;&#039;&#039;&#039;&#039;, codename &#039;&#039;&#039;Grishenko&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Think about it as a &amp;quot;&#039;&#039;&#039;Important features (AKA: the cool stuff)&#039;&#039;&#039;&amp;quot; kernelnewbies-like page, so you don&#039;t have to read the complete changelog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Very short summary ==&lt;br /&gt;
&lt;br /&gt;
=== One liner ===&lt;br /&gt;
The 0.9 version of {{VLC}} adds a new interface module for Linux, Unix and Windows, a media library and an improved playlist, many new inputs and codecs support and many new audio and video filters.&lt;br /&gt;
&lt;br /&gt;
=== A bit more ===&lt;br /&gt;
For video playback, new protocols, new codecs, new demuxers and many bug-fixes have been added to support more formats.&lt;br /&gt;
&lt;br /&gt;
For audio playback, cover art and metadata support (and editing) have been vastly enhanced. It can play audio when the playback speed is changed.&lt;br /&gt;
&lt;br /&gt;
For the developers, libVLC has been simplified and improved, many bindings for many languages were added and there is a new Mac OS X Framework.&amp;lt;br /&amp;gt; Scripts written in lua can expand VLC media player&#039;s capabilities (read Youtube, Dailymotion URLs, fetch meta-data...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are &#039;&#039;journalist&#039;&#039;, &#039;&#039;press&#039;&#039; related or a &#039;&#039;blogger&#039;&#039;, please look [[What_is_cool_in_0.9#Press|here]]. If you distribute VLC on your website, please do the same. In both case, please state that [[Help us|need help]].&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;	&amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;	&amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find [http://www.videolan.org/videos/ better quality Videos], [http://www.youtube.com/watch?v=zVhk7Kq1rEU Youtube] or [http://www.dailymotion.com/dionoea/video/11351932 dailymotion].&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&lt;br /&gt;
A new interface module based on the Qt toolkit has been added to VLC. If you are a &#039;&#039;&#039;GNOME&#039;&#039;&#039; or &#039;&#039;&#039;Xfce&#039;&#039;&#039; user, &#039;&#039;&#039;before trolling&#039;&#039;&#039;, please read [[Qt and GTK|this]].&lt;br /&gt;
&lt;br /&gt;
This new interface module has a few improvements on the old one:&lt;br /&gt;
* Simplified settings and dialogs&lt;br /&gt;
* Media library integration&lt;br /&gt;
* Album art displaying and metadata editing&lt;br /&gt;
* Live activation of Video and audio filters &lt;br /&gt;
* Basic encoding profiles&lt;br /&gt;
* Multiple start modes (classic, enhanced and minimalist)&lt;br /&gt;
* System tray icon and minimizing&lt;br /&gt;
* Fullscreen controller&lt;br /&gt;
And many other improvements and bug-fixes.&lt;br /&gt;
&lt;br /&gt;
Moreover, some global hotkeys plugin can be found on the forum.&lt;br /&gt;
&lt;br /&gt;
=== Playlist ===&lt;br /&gt;
&lt;br /&gt;
The playlist has been improved in many ways, in addition to the new Media Library &#039;&#039;(very simple so far, but will be extended in the future)&#039;&#039;:&lt;br /&gt;
* Live Searching in the playlist,&lt;br /&gt;
* Youtube, Dailymotion, Google Video and similar services URL can be scripted in VLC to play directly those URLs,&lt;br /&gt;
* last.fm submission support,&lt;br /&gt;
* Album art support,&lt;br /&gt;
* Better metadata tagging reading and writing support for audio files.&lt;br /&gt;
&lt;br /&gt;
=== Playback ===&lt;br /&gt;
&lt;br /&gt;
A lot of new decoders, demuxers, and protocols have been added.&lt;br /&gt;
&lt;br /&gt;
There are new codecs support, like Flash video variants, camcorder codecs (M2TS ones), Dirac, Atrac3, H.264 PAFF, APE audio, RealVideo, VC-3, Fraps and others, but also better decoding and better performance. Many thanks to the [http://ffmpeg.org FFmpeg project] which can take most of the credit for these improvements.&lt;br /&gt;
&lt;br /&gt;
There are improvements in the demuxers and new supports (subtitles format rework with many new formats, Tivo2, OMA, MIDI support...).&lt;br /&gt;
&lt;br /&gt;
Tag supports of audio files have vastly been improved(fix of APE, AAC, OGG tags,...)&lt;br /&gt;
&lt;br /&gt;
This version also supports DVB windows devices (BDA), iSight Webcams, v4l2 on Linux and many other ones.&lt;br /&gt;
&lt;br /&gt;
=== Filters ===&lt;br /&gt;
&lt;br /&gt;
Many new audio and video filters have been added:&lt;br /&gt;
* New video filters like puzzle game, color extracting, sharpen, logo erasing, blue-screen and more have been added.&lt;br /&gt;
* New audio filters have introduced Replay Gain support, Faster/Slower audio playback with pitch correction and a spatializer.&lt;br /&gt;
&lt;br /&gt;
Most video filters can now be streamed.&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
* libVLC has been rewritten and splitted and supports externally built plugins&lt;br /&gt;
* VLCKit, a Mac OS X Framework, enables external developers to develop applications around VLC.&lt;br /&gt;
* New bindings can be found on the wiki and the forums&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
A new update system, more secured, was developed for this release.&lt;br /&gt;
&lt;br /&gt;
New localizations in Finnish, Persian, Polish, Punjabi, Bulgarian have joined the old ones.&lt;br /&gt;
&lt;br /&gt;
== Long summary and details ==&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
You can also have the mailing list information on http://mailman.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
If you are press related, can you please note a few things:&lt;br /&gt;
* The software name is &amp;quot;VLC media player&amp;quot;, not &amp;quot;VLC Media Player&amp;quot;, not &amp;quot;VideoLAN&amp;quot;, not &amp;quot;VideoLan Client&amp;quot; nor any other variation.&lt;br /&gt;
* The team behind videolan.org is &amp;quot;VideoLAN&amp;quot;, not &amp;quot;Videolan&amp;quot;, not &amp;quot;VLC folks&amp;quot;, nor &amp;quot;vlc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Please be nice to state that we need help to develop the software, and link to the [[Help us]] page.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12431</id>
		<title>What is cool in 0.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12431"/>
		<updated>2008-09-14T23:14:27Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Playback */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to explain what are the cool features of &#039;&#039;&#039;&#039;&#039;VLC media player 0.9&#039;&#039;&#039;&#039;&#039;, codename &#039;&#039;&#039;Grishenko&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Think about it as a &amp;quot;&#039;&#039;&#039;Important features (AKA: the cool stuff)&#039;&#039;&#039;&amp;quot; kernelnewbies-like page, so you don&#039;t have to read the complete changelog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Very short summary ==&lt;br /&gt;
&lt;br /&gt;
=== One liner ===&lt;br /&gt;
The 0.9 version of {{VLC}} adds a new interface module for Linux, Unix and Windows, a media library and an improved playlist, many new inputs and codecs support and many new audio and video filters.&lt;br /&gt;
&lt;br /&gt;
=== A bit more ===&lt;br /&gt;
For video playback, new protocols, new codecs, new demuxers and many bug-fixes have been added to support more formats.&lt;br /&gt;
&lt;br /&gt;
For audio playback, cover art and metadata support (and editing) have been vastly enhanced. It can play audio when the playback speed is changed.&lt;br /&gt;
&lt;br /&gt;
For the developers, libVLC has been simplified and improved, many bindings for many languages were added and there is a new Mac OS X Framework.&amp;lt;br /&amp;gt; Scripts written in lua can expand VLC media player&#039;s capabilities (read Youtube, Dailymotion URLs, fetch meta-data...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are &#039;&#039;journalist&#039;&#039;, &#039;&#039;press&#039;&#039; related or a &#039;&#039;blogger&#039;&#039;, please look [[What_is_cool_in_0.9#Press|here]]. If you distribute VLC on your website, please do the same. In both case, please state that [[Help us|need help]].&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;	&amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;	&amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find [http://www.videolan.org/videos/ better quality Videos], [http://www.youtube.com/watch?v=zVhk7Kq1rEU Youtube] or [http://www.dailymotion.com/dionoea/video/11351932 dailymotion].&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&lt;br /&gt;
A new interface module based on the Qt toolkit has been added to VLC. If you are a &#039;&#039;&#039;GNOME&#039;&#039;&#039; or &#039;&#039;&#039;Xfce&#039;&#039;&#039; user, &#039;&#039;&#039;before trolling&#039;&#039;&#039;, please read [[Qt and GTK|this]].&lt;br /&gt;
&lt;br /&gt;
This new interface module has a few improvements on the old one:&lt;br /&gt;
* Simplified settings and dialogs&lt;br /&gt;
* Media library integration&lt;br /&gt;
* Album art displaying and metadata editing&lt;br /&gt;
* Live activation of Video and audio filters &lt;br /&gt;
* Basic encoding profiles&lt;br /&gt;
* Multiple start modes (classic, enhanced and minimalist)&lt;br /&gt;
* System tray icon and minimizing&lt;br /&gt;
* Fullscreen controller&lt;br /&gt;
And many other improvements and bug-fixes.&lt;br /&gt;
&lt;br /&gt;
Moreover, some global hotkeys plugin can be found on the forum.&lt;br /&gt;
&lt;br /&gt;
=== Playlist ===&lt;br /&gt;
&lt;br /&gt;
The playlist has been improved in many ways, in addition to the new Media Library &#039;&#039;(very simple so far, but will be extended in the future)&#039;&#039;:&lt;br /&gt;
* Live Searching in the playlist,&lt;br /&gt;
* Youtube, Dailymotion, Google Video and similar services URL can be scripted in VLC to play directly those URLs,&lt;br /&gt;
* last.fm submission support,&lt;br /&gt;
* Album art support,&lt;br /&gt;
* Better metadata tagging reading and writing support for audio files.&lt;br /&gt;
&lt;br /&gt;
=== Playback ===&lt;br /&gt;
&lt;br /&gt;
A lot of new decoders, demuxers, and protocols have been added.&lt;br /&gt;
&lt;br /&gt;
There are new codecs support, like Flash video variants, camcorder codecs (M2TS ones), Dirac, Atrac3, H.264 PAFF, APE audio, RealVideo, VC-3, Fraps and others, but also better decoding and better performance. Many thanks to the [http://ffmpeg.org FFmpeg project] which can take most of the credits for these improvements.&lt;br /&gt;
&lt;br /&gt;
There are improvements in the demuxers and new supports (subtitles format rework with many new formats, Tivo2, OMA, MIDI support...).&lt;br /&gt;
&lt;br /&gt;
Tag supports of audio files have vastly been improved(fix of APE, AAC, OGG tags,...)&lt;br /&gt;
&lt;br /&gt;
This version also supports DVB windows devices (BDA), iSight Webcams, v4l2 on Linux and many other ones.&lt;br /&gt;
&lt;br /&gt;
=== Filters ===&lt;br /&gt;
&lt;br /&gt;
Many new audio and video filters have been added:&lt;br /&gt;
* New video filters like puzzle game, color extracting, sharpen, logo erasing, blue-screen and more have been added.&lt;br /&gt;
* New audio filters have introduced Replay Gain support, Faster/Slower audio playback with pitch correction and a spatializer.&lt;br /&gt;
&lt;br /&gt;
Most video filters can now be streamed.&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
* libVLC has been rewritten and splitted and supports externally built plugins&lt;br /&gt;
* VLCKit, a Mac OS X Framework, enables external developers to develop applications around VLC.&lt;br /&gt;
* New bindings can be found on the wiki and the forums&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
A new update system, more secured, was developed for this release.&lt;br /&gt;
&lt;br /&gt;
New localizations in Finnish, Persian, Polish, Punjabi, Bulgarian have joined the old ones.&lt;br /&gt;
&lt;br /&gt;
== Long summary and details ==&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
You can also have the mailing list information on http://mailman.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
If you are press related, can you please note a few things:&lt;br /&gt;
* The software name is &amp;quot;VLC media player&amp;quot;, not &amp;quot;VLC Media Player&amp;quot;, not &amp;quot;VideoLAN&amp;quot;, not &amp;quot;VideoLan Client&amp;quot; nor any other variation.&lt;br /&gt;
* The team behind videolan.org is &amp;quot;VideoLAN&amp;quot;, not &amp;quot;Videolan&amp;quot;, not &amp;quot;VLC folks&amp;quot;, nor &amp;quot;vlc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Please be nice to state that we need help to develop the software, and link to the [[Help us]] page.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12419</id>
		<title>What is cool in 0.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9&amp;diff=12419"/>
		<updated>2008-09-14T21:56:46Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to explain what are the cool features of &#039;&#039;&#039;&#039;&#039;VLC media player 0.9&#039;&#039;&#039;&#039;&#039;, codename &#039;&#039;&#039;Grishenko&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Think about it as a &amp;quot;&#039;&#039;&#039;Important features (AKA: the cool stuff)&#039;&#039;&#039;&amp;quot; kernelnewbies-like page, so you don&#039;t have to read the complete changelog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Very short summary ==&lt;br /&gt;
&lt;br /&gt;
=== One liner ===&lt;br /&gt;
The 0.9 version of {{VLC}} adds a new interface module for Linux, Unix and Windows, a media library and an improved playlist, many new inputs and codecs support and many new audio and video filters.&lt;br /&gt;
&lt;br /&gt;
=== A bit more ===&lt;br /&gt;
For video playback, new protocols, new codecs, new demuxers and many bug-fixes have been added to support more formats.&lt;br /&gt;
&lt;br /&gt;
For audio playback, cover art and metadata support (and editing) have been vastly enhanced. It can play audio when the playback speed is changed.&lt;br /&gt;
&lt;br /&gt;
For the developers, libVLC has been simplified and improved, many bindings for many languages were added and there is a new Mac OS X Framework.&amp;lt;br /&amp;gt; Scripts written in lua can expand VLC media player&#039;s capabilities (read Youtube, Dailymotion URLs, fetch meta-data...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are &#039;&#039;journalist&#039;&#039;, &#039;&#039;press&#039;&#039; related or a &#039;&#039;blogger&#039;&#039;, please look [[What_is_cool_in_0.9#Press|here]]. If you distribute VLC on your website, please do the same. In both case, please state that [[Help us|need help]].&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;	&amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;	&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;	&amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=1732418&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=1&amp;amp;amp;show_portrait=0&amp;amp;amp;color=&amp;amp;amp;fullscreen=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;302&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find [http://www.videolan.org/videos/ better quality Videos].&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&lt;br /&gt;
A new interface module based on the Qt toolkit has been added to VLC. If you are a GNOME user, &#039;&#039;&#039;before trolling&#039;&#039;&#039;, please read [[Qt and GTK|this]].&lt;br /&gt;
&lt;br /&gt;
This new interface module has a few improvements on the old one:&lt;br /&gt;
* Simplified settings and dialogs&lt;br /&gt;
* Media library integration&lt;br /&gt;
* Album art displaying and metadata editing&lt;br /&gt;
* Live activation of Video and audio filters &lt;br /&gt;
* Basic encoding profiles&lt;br /&gt;
* Multiple start modes (classic, enhanced and minimalist)&lt;br /&gt;
* System tray icon and minimizing&lt;br /&gt;
* Fullscreen controller&lt;br /&gt;
And many other improvements and bug-fixes.&lt;br /&gt;
&lt;br /&gt;
Moreover, some global hotkeys plugin can be found on the forum.&lt;br /&gt;
&lt;br /&gt;
=== Playlist ===&lt;br /&gt;
&lt;br /&gt;
The playlist has been improved in many ways, in addition to the new Media Library &#039;&#039;(very simple so far, but will be extended in the future)&#039;&#039;:&lt;br /&gt;
* Live Searching in the playlist,&lt;br /&gt;
* Youtube, Dailymotion, Google Video and similar services URL can be scripted in VLC to play directly those URLs,&lt;br /&gt;
* last.fm submission support,&lt;br /&gt;
* Album art support,&lt;br /&gt;
* Better metadata tagging reading and writing support for audio files.&lt;br /&gt;
&lt;br /&gt;
=== Playback ===&lt;br /&gt;
&lt;br /&gt;
A lot of new decoders, demuxers, and protocols have been added.&lt;br /&gt;
&lt;br /&gt;
There are new codecs support, like Flash video variants, camcorder codecs (M2TS ones), Dirac, Atrac3, H.264 PAFF, APE audio, RealVideo, VC-3, Fraps and others, but also better decoding and better performance.&lt;br /&gt;
&lt;br /&gt;
There are improvements in the demuxers and new supports (subtitles format rework with many new formats, Tivo2, OMA, MIDI support...).&lt;br /&gt;
&lt;br /&gt;
Tag supports of audio files have vastly been improved(fix of APE, AAC, OGG tags,...)&lt;br /&gt;
&lt;br /&gt;
This version also supports DVB windows devices (BDA), iSight Webcams, v4l2 on Linux and many other ones.&lt;br /&gt;
&lt;br /&gt;
=== Filters ===&lt;br /&gt;
&lt;br /&gt;
Many new audio and video filters have been added:&lt;br /&gt;
* New video filters like puzzle game, color extracting, sharpen, logo erasing, blue-screen and more have been added.&lt;br /&gt;
* New audio filters have introduced Replay Gain support, Faster/Slower audio playback with pitch correction and a spatializer.&lt;br /&gt;
&lt;br /&gt;
Most video filters can now be streamed.&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
* libVLC has been rewritten and splitted and supports externally built plugins&lt;br /&gt;
* VLCKit, a Mac OS X Framework, enables external developers to develop applications around VLC.&lt;br /&gt;
* New bindings can be found on the wiki and the forums&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
A new update system, more secured, was developed for this release.&lt;br /&gt;
&lt;br /&gt;
New localizations in Finnish, Persian, Polish, Punjabi, Bulgarian have joined the old ones.&lt;br /&gt;
&lt;br /&gt;
== Long summary and details ==&lt;br /&gt;
&lt;br /&gt;
If this page is not detailed enough for you, please read [[Next_changes]]. If you want the complete &#039;&#039;Changelog&#039;&#039;, see [http://git.videolan.org/?p=vlc.git;a=log;h=0.9-bugfix Git].&lt;br /&gt;
&lt;br /&gt;
You can also have the mailing list information on http://mailman.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
If you are press related, can you please note a few things:&lt;br /&gt;
* The software name is &amp;quot;VLC media player&amp;quot;, not &amp;quot;VLC Media Player&amp;quot;, not &amp;quot;VideoLAN&amp;quot;, not &amp;quot;VideoLan Client&amp;quot; nor any other variation.&lt;br /&gt;
* The team behind videolan.org is &amp;quot;VideoLAN&amp;quot;, not &amp;quot;Videolan&amp;quot;, not &amp;quot;VLC folks&amp;quot;, nor &amp;quot;vlc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Please be nice to state that we need help to develop the software, and link to the [[Help us]] page.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12359</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12359"/>
		<updated>2008-09-04T22:50:57Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Lets say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the begining of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.peek( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.peek(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other usefull meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in miliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Information about the VLC Lua scripts is available in your VLC installation in the lua subdirectory.&lt;br /&gt;
&lt;br /&gt;
* [http://www.videolan.org/developers/vlc/share/lua/README.txt Global VLC Lua README]&lt;br /&gt;
* [http://www.videolan.org/developers/vlc/share/lua/playlist/README.txt Playlist script specific README]&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usefull links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9.0&amp;diff=12349</id>
		<title>What is cool in 0.9.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=What_is_cool_in_0.9.0&amp;diff=12349"/>
		<updated>2008-09-03T23:50:30Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Filters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a &#039;&#039;&#039;draft&#039;&#039;&#039; intended to explain what are the cool features of &#039;&#039;&#039;&#039;&#039;VLC media player 0.9&#039;&#039;&#039;&#039;&#039;, codename &#039;&#039;&#039;Grishenko&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Think about it as a &amp;quot;Cool features from kernelnewbies&amp;quot;-like page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Short summary ==&lt;br /&gt;
&lt;br /&gt;
The 0.9.0 version of {{VLC}} adds a new interface module for Linux, Unix and Windows, a media library and an improved playlist, many new inputs and codecs support and many new audio and video filters.&lt;br /&gt;
&lt;br /&gt;
For video playback, new protocols, new codecs, new demuxers and many bugfixes have been added to support more formats.&lt;br /&gt;
&lt;br /&gt;
For audio playback, cover art and metadata support (and editing) have been vastly enhanced. It can play audio when the playback speed is changed.&lt;br /&gt;
&lt;br /&gt;
For the developers, libVLC has been simplified and improved, many bindings for many languages were added and there is a new Mac OS X Framework. Scripts written in lua can expand VLC media player&#039;s capacities.&lt;br /&gt;
&lt;br /&gt;
For more details, please read [[Next_changes]].&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
&lt;br /&gt;
A new interface module based on the Qt toolkit has been added to VLC. If you are a GNOME user, &#039;&#039;&#039;before trolling&#039;&#039;&#039;, please read [[Qt and GTK|this]].&lt;br /&gt;
&lt;br /&gt;
This new interface module has a few improvements on the old one:&lt;br /&gt;
* Simplified settings and dialogs&lt;br /&gt;
* Media library integration&lt;br /&gt;
* Album art displaying and metadata editing&lt;br /&gt;
* Live activation of Video and audio filters &lt;br /&gt;
* Basic encoding profiles&lt;br /&gt;
* Multiple start modes (classic, enhanced and minimalist)&lt;br /&gt;
* System tray icon and minimizing&lt;br /&gt;
* Fullscreen controler&lt;br /&gt;
And many other improvements and bugfixes.&lt;br /&gt;
&lt;br /&gt;
Moreover, some global hotkeys plugin can be found on the forum.&lt;br /&gt;
&lt;br /&gt;
== Playlist ==&lt;br /&gt;
&lt;br /&gt;
The playlist has been improved in many ways, in addition to the new Media Library &#039;&#039;(very simple so far, but will be extended in the future)&#039;&#039;:&lt;br /&gt;
* Live Searching in the playlist,&lt;br /&gt;
* Youtube, Dailymotion, Google Video and similar services URL can be scripted in VLC to play directly those URLs,&lt;br /&gt;
* last.fm submission support,&lt;br /&gt;
* Album art support,&lt;br /&gt;
* Better metadata tagging reading and writing support for audio files.&lt;br /&gt;
&lt;br /&gt;
== Playback ==&lt;br /&gt;
&lt;br /&gt;
A lot of new decoders, demuxers, and protocols have been added.&lt;br /&gt;
&lt;br /&gt;
There are new codecs support, like Flash video variants, Camescope codecs (M2TS ones), Dirac, Atrac3, H.264 PAFF, APE audio, RealVideo, VC-3, Fraps and others, but also better decoding and better performance.&lt;br /&gt;
&lt;br /&gt;
There are improvements in the demuxers and new supports (subtitles format rework with many new formats, Tivo2, OMA, MIDI support...).&lt;br /&gt;
&lt;br /&gt;
Tag supports of audio files have vastly been improved(fix of APE, AAC, OGG tags,...)&lt;br /&gt;
&lt;br /&gt;
This version also supports DVB windows devices (BDA), iSight webcams, v4l2 on linux and many other ones.&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
&lt;br /&gt;
Many new audio and video filters have been added:&lt;br /&gt;
* New video filters like puzzle game, colour extracting, sharpen, logo erasing, bluescreen and more have been added.&lt;br /&gt;
* New audio filters have introduced Replay Gain support, Faster/Slower audio playback with pitch correction and a spatializer.&lt;br /&gt;
&lt;br /&gt;
Most video filters can now be streamed.&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* libVLC has been rewritten ? and supports externally built plugins&lt;br /&gt;
* VLCKit, a Mac OS X Framework, enables external developers to develop applications around VLC.&lt;br /&gt;
* New bindings can be found on the wiki and the forums&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
A new update system, more secured, was developed for this release.&lt;br /&gt;
&lt;br /&gt;
New localizations in Finnish, Persian, Polish, Punjabi, Bulgarian have joined the old ones.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12348</id>
		<title>VideoLAN Sites</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12348"/>
		<updated>2008-09-03T11:04:30Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Ganesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebSites =&lt;br /&gt;
== VideoLAN public sites ==&lt;br /&gt;
* [http://www.videolan.org Main Site]&lt;br /&gt;
* [http://wiki.videolan.org Wiki]&lt;br /&gt;
* [http://forum.videolan.org Forum]&lt;br /&gt;
* [http://planet.videolan.org Developers&#039; News]&lt;br /&gt;
* [ftp://ftp.videolan.org/pub/videolan/ Main FTP]&lt;br /&gt;
* [http://paste.videolan.org/ PasteBin]&lt;br /&gt;
* [http://lists.videolan.org/ Files Attachments from the mailing-lists]&lt;br /&gt;
&lt;br /&gt;
== Developers == &lt;br /&gt;
* [http://developers.videolan.org Main Developers Site]&lt;br /&gt;
* [http://nightlies.videolan.org Nightly builds]&lt;br /&gt;
* [http://buildbot.videolan.org Buildbot for Automatic Builds]&lt;br /&gt;
* [http://trac.videolan.org Trac, bugs, features, roadmap]&lt;br /&gt;
* [http://git.videolan.org Gitweb]&lt;br /&gt;
* [http://mirrors.videolan.org Mirrors check]&lt;br /&gt;
* [http://downloads.videolan.org/pub/ Download Site]&lt;br /&gt;
* [http://stats.videolan.org Servers stats]&lt;br /&gt;
* [ftp://streams.videolan.org Reference and buggy stream collection]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
* [http://update.videolan.org VLC update site] - Non human readable site !&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [http://getvlcstatus.videolan.org VLC Status Page] (This is humour, of course)&lt;br /&gt;
&lt;br /&gt;
= Servers =&lt;br /&gt;
== Ganesh ==&lt;br /&gt;
* ganesh.videolan.org&lt;br /&gt;
* developers.videolan.org&lt;br /&gt;
* download.videolan.org, downloads.videolan.org&lt;br /&gt;
* ftp.videolan.org&lt;br /&gt;
* rsync.videolan.org&lt;br /&gt;
* forum.videolan.org&lt;br /&gt;
* lists.videolan.org&lt;br /&gt;
* mirrors.videolan.org&lt;br /&gt;
* planet.videolan.org&lt;br /&gt;
* paste.videolan.org&lt;br /&gt;
* stats.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* trac.videolan.org&lt;br /&gt;
* update.videolan.org&lt;br /&gt;
* www.videolan.org&lt;br /&gt;
&lt;br /&gt;
The primary web and FTP server&lt;br /&gt;
Hosted in one of FREE S.A.S&#039; datacenter.&lt;br /&gt;
&lt;br /&gt;
== Altair ==&lt;br /&gt;
* altair.videolan.org&lt;br /&gt;
* buildbot.videolan.org&lt;br /&gt;
* nightlies.videolan.org&lt;br /&gt;
* people.videolan.org&lt;br /&gt;
* git-soc.videolan.org&lt;br /&gt;
&lt;br /&gt;
It is the dev server, that hosts the automatic builds.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Epsilon (Shipped back, RIP) ==&lt;br /&gt;
*epsilon.videolan.org&lt;br /&gt;
&lt;br /&gt;
Used to be...&lt;br /&gt;
Mac Intel Developer Preview machine&lt;br /&gt;
Also a nightly build machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Jones ==&lt;br /&gt;
*jones.videolan.org&lt;br /&gt;
* streams.videolan.org&lt;br /&gt;
* hudson.videolan.org&lt;br /&gt;
&lt;br /&gt;
Mac Pro (Intel)&lt;br /&gt;
build bot machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
Named after Christmas Jones&lt;br /&gt;
&lt;br /&gt;
== Veda ==&lt;br /&gt;
*veda.student.utwente.nl&lt;br /&gt;
PowerMac - 1.8Ghz Dual, 750MB RAM&lt;br /&gt;
Primary Mac OS X PowerPC development machine. Hosts the nightly build client for the OSX PowerPC platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Deneb ==&lt;br /&gt;
*deneb.student.utwente.nl&lt;br /&gt;
Imac 17&amp;quot; - 2Ghz DC, 1GB RAM&lt;br /&gt;
Primary Mac OS X Intel development machine. Hosts the nightly build client for the OSX Intel platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Skanda ==&lt;br /&gt;
* skanda.videolan.org&lt;br /&gt;
* wiki.videolan.org&lt;br /&gt;
* git.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* mailman.videolan.org&lt;br /&gt;
* download2.videolan.org (for backup, currently unused)&lt;br /&gt;
Hosted by OVH with donations of Actech. For more information contact [[User:Remiii|Remiii]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some server pictures can be found on: http://people.videolan.org/~dionoea/servers/&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12347</id>
		<title>VideoLAN Sites</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12347"/>
		<updated>2008-09-03T11:02:54Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Krishna */  -&amp;gt; We don&amp;#039;t use it to host anything anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebSites =&lt;br /&gt;
== VideoLAN public sites ==&lt;br /&gt;
* [http://www.videolan.org Main Site]&lt;br /&gt;
* [http://wiki.videolan.org Wiki]&lt;br /&gt;
* [http://forum.videolan.org Forum]&lt;br /&gt;
* [http://planet.videolan.org Developers&#039; News]&lt;br /&gt;
* [ftp://ftp.videolan.org/pub/videolan/ Main FTP]&lt;br /&gt;
* [http://paste.videolan.org/ PasteBin]&lt;br /&gt;
* [http://lists.videolan.org/ Files Attachments from the mailing-lists]&lt;br /&gt;
&lt;br /&gt;
== Developers == &lt;br /&gt;
* [http://developers.videolan.org Main Developers Site]&lt;br /&gt;
* [http://nightlies.videolan.org Nightly builds]&lt;br /&gt;
* [http://buildbot.videolan.org Buildbot for Automatic Builds]&lt;br /&gt;
* [http://trac.videolan.org Trac, bugs, features, roadmap]&lt;br /&gt;
* [http://git.videolan.org Gitweb]&lt;br /&gt;
* [http://mirrors.videolan.org Mirrors check]&lt;br /&gt;
* [http://downloads.videolan.org/pub/ Download Site]&lt;br /&gt;
* [http://stats.videolan.org Servers stats]&lt;br /&gt;
* [ftp://streams.videolan.org Reference and buggy stream collection]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
* [http://update.videolan.org VLC update site] - Non human readable site !&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [http://getvlcstatus.videolan.org VLC Status Page] (This is humour, of course)&lt;br /&gt;
&lt;br /&gt;
= Servers =&lt;br /&gt;
== Ganesh ==&lt;br /&gt;
* ganesh.videolan.org&lt;br /&gt;
* developers.videolan.org&lt;br /&gt;
* download.videolan.org, downloads.videolan.org&lt;br /&gt;
* ftp.videolan.org&lt;br /&gt;
* forum.videolan.org&lt;br /&gt;
* lists.videolan.org&lt;br /&gt;
* mirrors.videolan.org&lt;br /&gt;
* planet.videolan.org&lt;br /&gt;
* paste.videolan.org&lt;br /&gt;
* stats.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* trac.videolan.org&lt;br /&gt;
* update.videolan.org&lt;br /&gt;
* www.videolan.org&lt;br /&gt;
&lt;br /&gt;
The primary web and FTP server&lt;br /&gt;
Hosted in one of FREE S.A.S&#039; datacenter.&lt;br /&gt;
&lt;br /&gt;
== Altair ==&lt;br /&gt;
* altair.videolan.org&lt;br /&gt;
* buildbot.videolan.org&lt;br /&gt;
* nightlies.videolan.org&lt;br /&gt;
* people.videolan.org&lt;br /&gt;
* git-soc.videolan.org&lt;br /&gt;
&lt;br /&gt;
It is the dev server, that hosts the automatic builds.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Epsilon (Shipped back, RIP) ==&lt;br /&gt;
*epsilon.videolan.org&lt;br /&gt;
&lt;br /&gt;
Used to be...&lt;br /&gt;
Mac Intel Developer Preview machine&lt;br /&gt;
Also a nightly build machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Jones ==&lt;br /&gt;
*jones.videolan.org&lt;br /&gt;
* streams.videolan.org&lt;br /&gt;
* hudson.videolan.org&lt;br /&gt;
&lt;br /&gt;
Mac Pro (Intel)&lt;br /&gt;
build bot machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
Named after Christmas Jones&lt;br /&gt;
&lt;br /&gt;
== Veda ==&lt;br /&gt;
*veda.student.utwente.nl&lt;br /&gt;
PowerMac - 1.8Ghz Dual, 750MB RAM&lt;br /&gt;
Primary Mac OS X PowerPC development machine. Hosts the nightly build client for the OSX PowerPC platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Deneb ==&lt;br /&gt;
*deneb.student.utwente.nl&lt;br /&gt;
Imac 17&amp;quot; - 2Ghz DC, 1GB RAM&lt;br /&gt;
Primary Mac OS X Intel development machine. Hosts the nightly build client for the OSX Intel platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Skanda ==&lt;br /&gt;
* skanda.videolan.org&lt;br /&gt;
* wiki.videolan.org&lt;br /&gt;
* git.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* mailman.videolan.org&lt;br /&gt;
* download2.videolan.org (for backup, currently unused)&lt;br /&gt;
Hosted by OVH with donations of Actech. For more information contact [[User:Remiii|Remiii]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some server pictures can be found on: http://people.videolan.org/~dionoea/servers/&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12346</id>
		<title>VideoLAN Sites</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12346"/>
		<updated>2008-09-03T10:59:40Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Skanda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebSites =&lt;br /&gt;
== VideoLAN public sites ==&lt;br /&gt;
* [http://www.videolan.org Main Site]&lt;br /&gt;
* [http://wiki.videolan.org Wiki]&lt;br /&gt;
* [http://forum.videolan.org Forum]&lt;br /&gt;
* [http://planet.videolan.org Developers&#039; News]&lt;br /&gt;
* [ftp://ftp.videolan.org/pub/videolan/ Main FTP]&lt;br /&gt;
* [http://paste.videolan.org/ PasteBin]&lt;br /&gt;
* [http://lists.videolan.org/ Files Attachments from the mailing-lists]&lt;br /&gt;
&lt;br /&gt;
== Developers == &lt;br /&gt;
* [http://developers.videolan.org Main Developers Site]&lt;br /&gt;
* [http://nightlies.videolan.org Nightly builds]&lt;br /&gt;
* [http://buildbot.videolan.org Buildbot for Automatic Builds]&lt;br /&gt;
* [http://trac.videolan.org Trac, bugs, features, roadmap]&lt;br /&gt;
* [http://git.videolan.org Gitweb]&lt;br /&gt;
* [http://mirrors.videolan.org Mirrors check]&lt;br /&gt;
* [http://downloads.videolan.org/pub/ Download Site]&lt;br /&gt;
* [http://stats.videolan.org Servers stats]&lt;br /&gt;
* [ftp://streams.videolan.org Reference and buggy stream collection]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
* [http://update.videolan.org VLC update site] - Non human readable site !&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [http://getvlcstatus.videolan.org VLC Status Page] (This is humour, of course)&lt;br /&gt;
&lt;br /&gt;
= Servers =&lt;br /&gt;
== Ganesh ==&lt;br /&gt;
* ganesh.videolan.org&lt;br /&gt;
* developers.videolan.org&lt;br /&gt;
* download.videolan.org, downloads.videolan.org&lt;br /&gt;
* ftp.videolan.org&lt;br /&gt;
* forum.videolan.org&lt;br /&gt;
* lists.videolan.org&lt;br /&gt;
* mirrors.videolan.org&lt;br /&gt;
* planet.videolan.org&lt;br /&gt;
* paste.videolan.org&lt;br /&gt;
* stats.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* trac.videolan.org&lt;br /&gt;
* update.videolan.org&lt;br /&gt;
* www.videolan.org&lt;br /&gt;
&lt;br /&gt;
The primary web and FTP server&lt;br /&gt;
Hosted in one of FREE S.A.S&#039; datacenter.&lt;br /&gt;
&lt;br /&gt;
== Altair ==&lt;br /&gt;
* altair.videolan.org&lt;br /&gt;
* buildbot.videolan.org&lt;br /&gt;
* nightlies.videolan.org&lt;br /&gt;
* people.videolan.org&lt;br /&gt;
* git-soc.videolan.org&lt;br /&gt;
&lt;br /&gt;
It is the dev server, that hosts the automatic builds.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Krishna ==&lt;br /&gt;
It is one of [http://www.via.ecp.fr VIA]&#039;s servers.&lt;br /&gt;
* wiki.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Epsilon (Shipped back, RIP) ==&lt;br /&gt;
*epsilon.videolan.org&lt;br /&gt;
&lt;br /&gt;
Used to be...&lt;br /&gt;
Mac Intel Developer Preview machine&lt;br /&gt;
Also a nightly build machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Jones ==&lt;br /&gt;
*jones.videolan.org&lt;br /&gt;
* streams.videolan.org&lt;br /&gt;
* hudson.videolan.org&lt;br /&gt;
&lt;br /&gt;
Mac Pro (Intel)&lt;br /&gt;
build bot machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
Named after Christmas Jones&lt;br /&gt;
&lt;br /&gt;
== Veda ==&lt;br /&gt;
*veda.student.utwente.nl&lt;br /&gt;
PowerMac - 1.8Ghz Dual, 750MB RAM&lt;br /&gt;
Primary Mac OS X PowerPC development machine. Hosts the nightly build client for the OSX PowerPC platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Deneb ==&lt;br /&gt;
*deneb.student.utwente.nl&lt;br /&gt;
Imac 17&amp;quot; - 2Ghz DC, 1GB RAM&lt;br /&gt;
Primary Mac OS X Intel development machine. Hosts the nightly build client for the OSX Intel platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Skanda ==&lt;br /&gt;
* skanda.videolan.org&lt;br /&gt;
* wiki.videolan.org&lt;br /&gt;
* git.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* mailman.videolan.org&lt;br /&gt;
* download2.videolan.org (for backup, currently unused)&lt;br /&gt;
Hosted by OVH with donations of Actech. For more information contact [[User:Remiii|Remiii]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some server pictures can be found on: http://people.videolan.org/~dionoea/servers/&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12345</id>
		<title>VideoLAN Sites</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12345"/>
		<updated>2008-09-03T10:59:19Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Skanda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebSites =&lt;br /&gt;
== VideoLAN public sites ==&lt;br /&gt;
* [http://www.videolan.org Main Site]&lt;br /&gt;
* [http://wiki.videolan.org Wiki]&lt;br /&gt;
* [http://forum.videolan.org Forum]&lt;br /&gt;
* [http://planet.videolan.org Developers&#039; News]&lt;br /&gt;
* [ftp://ftp.videolan.org/pub/videolan/ Main FTP]&lt;br /&gt;
* [http://paste.videolan.org/ PasteBin]&lt;br /&gt;
* [http://lists.videolan.org/ Files Attachments from the mailing-lists]&lt;br /&gt;
&lt;br /&gt;
== Developers == &lt;br /&gt;
* [http://developers.videolan.org Main Developers Site]&lt;br /&gt;
* [http://nightlies.videolan.org Nightly builds]&lt;br /&gt;
* [http://buildbot.videolan.org Buildbot for Automatic Builds]&lt;br /&gt;
* [http://trac.videolan.org Trac, bugs, features, roadmap]&lt;br /&gt;
* [http://git.videolan.org Gitweb]&lt;br /&gt;
* [http://mirrors.videolan.org Mirrors check]&lt;br /&gt;
* [http://downloads.videolan.org/pub/ Download Site]&lt;br /&gt;
* [http://stats.videolan.org Servers stats]&lt;br /&gt;
* [ftp://streams.videolan.org Reference and buggy stream collection]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
* [http://update.videolan.org VLC update site] - Non human readable site !&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [http://getvlcstatus.videolan.org VLC Status Page] (This is humour, of course)&lt;br /&gt;
&lt;br /&gt;
= Servers =&lt;br /&gt;
== Ganesh ==&lt;br /&gt;
* ganesh.videolan.org&lt;br /&gt;
* developers.videolan.org&lt;br /&gt;
* download.videolan.org, downloads.videolan.org&lt;br /&gt;
* ftp.videolan.org&lt;br /&gt;
* forum.videolan.org&lt;br /&gt;
* lists.videolan.org&lt;br /&gt;
* mirrors.videolan.org&lt;br /&gt;
* planet.videolan.org&lt;br /&gt;
* paste.videolan.org&lt;br /&gt;
* stats.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* trac.videolan.org&lt;br /&gt;
* update.videolan.org&lt;br /&gt;
* www.videolan.org&lt;br /&gt;
&lt;br /&gt;
The primary web and FTP server&lt;br /&gt;
Hosted in one of FREE S.A.S&#039; datacenter.&lt;br /&gt;
&lt;br /&gt;
== Altair ==&lt;br /&gt;
* altair.videolan.org&lt;br /&gt;
* buildbot.videolan.org&lt;br /&gt;
* nightlies.videolan.org&lt;br /&gt;
* people.videolan.org&lt;br /&gt;
* git-soc.videolan.org&lt;br /&gt;
&lt;br /&gt;
It is the dev server, that hosts the automatic builds.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Krishna ==&lt;br /&gt;
It is one of [http://www.via.ecp.fr VIA]&#039;s servers.&lt;br /&gt;
* wiki.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Epsilon (Shipped back, RIP) ==&lt;br /&gt;
*epsilon.videolan.org&lt;br /&gt;
&lt;br /&gt;
Used to be...&lt;br /&gt;
Mac Intel Developer Preview machine&lt;br /&gt;
Also a nightly build machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Jones ==&lt;br /&gt;
*jones.videolan.org&lt;br /&gt;
* streams.videolan.org&lt;br /&gt;
* hudson.videolan.org&lt;br /&gt;
&lt;br /&gt;
Mac Pro (Intel)&lt;br /&gt;
build bot machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
Named after Christmas Jones&lt;br /&gt;
&lt;br /&gt;
== Veda ==&lt;br /&gt;
*veda.student.utwente.nl&lt;br /&gt;
PowerMac - 1.8Ghz Dual, 750MB RAM&lt;br /&gt;
Primary Mac OS X PowerPC development machine. Hosts the nightly build client for the OSX PowerPC platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Deneb ==&lt;br /&gt;
*deneb.student.utwente.nl&lt;br /&gt;
Imac 17&amp;quot; - 2Ghz DC, 1GB RAM&lt;br /&gt;
Primary Mac OS X Intel development machine. Hosts the nightly build client for the OSX Intel platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Skanda ==&lt;br /&gt;
* skanda.videolan.org&lt;br /&gt;
* git.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* mailman.videolan.org&lt;br /&gt;
* download2.videolan.org (for backup, currently unused)&lt;br /&gt;
Hosted by OVH with donations of Actech. For more information contact [[User:Remiii|Remiii]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some server pictures can be found on: http://people.videolan.org/~dionoea/servers/&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12344</id>
		<title>VideoLAN Sites</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VideoLAN_Sites&amp;diff=12344"/>
		<updated>2008-09-03T10:58:09Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Ganesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebSites =&lt;br /&gt;
== VideoLAN public sites ==&lt;br /&gt;
* [http://www.videolan.org Main Site]&lt;br /&gt;
* [http://wiki.videolan.org Wiki]&lt;br /&gt;
* [http://forum.videolan.org Forum]&lt;br /&gt;
* [http://planet.videolan.org Developers&#039; News]&lt;br /&gt;
* [ftp://ftp.videolan.org/pub/videolan/ Main FTP]&lt;br /&gt;
* [http://paste.videolan.org/ PasteBin]&lt;br /&gt;
* [http://lists.videolan.org/ Files Attachments from the mailing-lists]&lt;br /&gt;
&lt;br /&gt;
== Developers == &lt;br /&gt;
* [http://developers.videolan.org Main Developers Site]&lt;br /&gt;
* [http://nightlies.videolan.org Nightly builds]&lt;br /&gt;
* [http://buildbot.videolan.org Buildbot for Automatic Builds]&lt;br /&gt;
* [http://trac.videolan.org Trac, bugs, features, roadmap]&lt;br /&gt;
* [http://git.videolan.org Gitweb]&lt;br /&gt;
* [http://mirrors.videolan.org Mirrors check]&lt;br /&gt;
* [http://downloads.videolan.org/pub/ Download Site]&lt;br /&gt;
* [http://stats.videolan.org Servers stats]&lt;br /&gt;
* [ftp://streams.videolan.org Reference and buggy stream collection]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
* [http://update.videolan.org VLC update site] - Non human readable site !&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [http://getvlcstatus.videolan.org VLC Status Page] (This is humour, of course)&lt;br /&gt;
&lt;br /&gt;
= Servers =&lt;br /&gt;
== Ganesh ==&lt;br /&gt;
* ganesh.videolan.org&lt;br /&gt;
* developers.videolan.org&lt;br /&gt;
* download.videolan.org, downloads.videolan.org&lt;br /&gt;
* ftp.videolan.org&lt;br /&gt;
* forum.videolan.org&lt;br /&gt;
* lists.videolan.org&lt;br /&gt;
* mirrors.videolan.org&lt;br /&gt;
* planet.videolan.org&lt;br /&gt;
* paste.videolan.org&lt;br /&gt;
* stats.videolan.org&lt;br /&gt;
* svn.videolan.org&lt;br /&gt;
* trac.videolan.org&lt;br /&gt;
* update.videolan.org&lt;br /&gt;
* www.videolan.org&lt;br /&gt;
&lt;br /&gt;
The primary web and FTP server&lt;br /&gt;
Hosted in one of FREE S.A.S&#039; datacenter.&lt;br /&gt;
&lt;br /&gt;
== Altair ==&lt;br /&gt;
* altair.videolan.org&lt;br /&gt;
* buildbot.videolan.org&lt;br /&gt;
* nightlies.videolan.org&lt;br /&gt;
* people.videolan.org&lt;br /&gt;
* git-soc.videolan.org&lt;br /&gt;
&lt;br /&gt;
It is the dev server, that hosts the automatic builds.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Krishna ==&lt;br /&gt;
It is one of [http://www.via.ecp.fr VIA]&#039;s servers.&lt;br /&gt;
* wiki.videolan.org&lt;br /&gt;
&lt;br /&gt;
== Epsilon (Shipped back, RIP) ==&lt;br /&gt;
*epsilon.videolan.org&lt;br /&gt;
&lt;br /&gt;
Used to be...&lt;br /&gt;
Mac Intel Developer Preview machine&lt;br /&gt;
Also a nightly build machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
&lt;br /&gt;
== Jones ==&lt;br /&gt;
*jones.videolan.org&lt;br /&gt;
* streams.videolan.org&lt;br /&gt;
* hudson.videolan.org&lt;br /&gt;
&lt;br /&gt;
Mac Pro (Intel)&lt;br /&gt;
build bot machine for Mac OS X Intel.&lt;br /&gt;
Hosted at VIA.&lt;br /&gt;
Named after Christmas Jones&lt;br /&gt;
&lt;br /&gt;
== Veda ==&lt;br /&gt;
*veda.student.utwente.nl&lt;br /&gt;
PowerMac - 1.8Ghz Dual, 750MB RAM&lt;br /&gt;
Primary Mac OS X PowerPC development machine. Hosts the nightly build client for the OSX PowerPC platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Deneb ==&lt;br /&gt;
*deneb.student.utwente.nl&lt;br /&gt;
Imac 17&amp;quot; - 2Ghz DC, 1GB RAM&lt;br /&gt;
Primary Mac OS X Intel development machine. Hosts the nightly build client for the OSX Intel platform.&lt;br /&gt;
Hosted by TheDJ.&lt;br /&gt;
&lt;br /&gt;
== Skanda ==&lt;br /&gt;
*skanda.videolan.org&lt;br /&gt;
*git.videolan.org&lt;br /&gt;
Hosted by OVH with donations of Actech. For more information contact [[User:Remiii|Remiii]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some server pictures can be found on: http://people.videolan.org/~dionoea/servers/&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User_talk:Narendra_Sisodiya&amp;diff=12343</id>
		<title>User talk:Narendra Sisodiya</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User_talk:Narendra_Sisodiya&amp;diff=12343"/>
		<updated>2008-09-03T10:57:20Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: New page: Please do *not* ask questions in the documentation pages. You can use http://forum.videolan.org for that. ~~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please do *not* ask questions in the documentation pages. You can use http://forum.videolan.org for that. [[User:Dionoea|Dionoea]] 12:57, 3 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Advanced_Use_of_VLC&amp;diff=12342</id>
		<title>Documentation:Advanced Use of VLC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Advanced_Use_of_VLC&amp;diff=12342"/>
		<updated>2008-09-03T10:56:27Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Reverted edits by Narendra Sisodiya (Talk); changed back to last version by Jpsaman&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
==Use the command line==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TODO: completely outdated&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All standard operations of VLC should be available from the GUI. However, some complex operations can only be done from the command line and there are situations in which you don&#039;t need or want a GUI. Here is the complete description of VLC&#039;s command line and how to use it.&lt;br /&gt;
&lt;br /&gt;
You need to be quite comfortable with command line usage to use this.&lt;br /&gt;
&lt;br /&gt;
 Note: Windows users have to use the &#039;&#039;--option-name=&amp;quot;value&amp;quot;&#039;&#039; syntax instead of the &#039;&#039;--option-name value&#039;&#039; syntax.&lt;br /&gt;
&lt;br /&gt;
===Getting help===&lt;br /&gt;
&lt;br /&gt;
VLC uses a modular structure. The core mainly manages communication between modules. All the multimedia processing is done by modules. There are input modules, demultiplexers, decoders, video output modules, ...&lt;br /&gt;
&lt;br /&gt;
This chapter will only describe the &amp;quot;general&amp;quot; options, i.e. the core options. Each module adds new options. For example, the HTTP input module will add options for caching, proxy, authentication, ...&lt;br /&gt;
&lt;br /&gt;
By using &#039;&#039;&#039;vlc --help&#039;&#039;&#039;, you will get the basic core options. &#039;&#039;&#039;vlc --longhelp&#039;&#039;&#039; will give all the basic options (core + modules). Adding &#039;&#039;&#039;--advanced&#039;&#039;&#039; will give the &amp;quot;advanced options&amp;quot; (for advanced users). So &#039;&#039;&#039;vlc --longhelp --advanced&#039;&#039;&#039; will give you all options. You can also append &#039;&#039;&#039;--help-verbose&#039;&#039;&#039; if you want more detailed help.&lt;br /&gt;
&lt;br /&gt;
Also, you might want to get debug informations. To do this, use &#039;&#039;&#039;-v&#039;&#039;&#039; or &#039;&#039;&#039;-vv&#039;&#039;&#039; (this will show lower severity messages). If your console supports it, you can add &#039;&#039;&#039;--color to get messages in color.&lt;br /&gt;
&lt;br /&gt;
===Opening streams===&lt;br /&gt;
&lt;br /&gt;
The following commands start VLC and start reading the given element(s)&lt;br /&gt;
&lt;br /&gt;
====Opening a file====&lt;br /&gt;
&lt;br /&gt;
Start VLC with:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc my_file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
VLC should be able to recognize the file type. If it does not, you can force demultiplexer and decoder (see below).&lt;br /&gt;
&lt;br /&gt;
A list of all video and audio codecs supported by VLC is available on the [http://www.videolan.org/vlc/features.html VLC features list].&lt;br /&gt;
&lt;br /&gt;
====Opening a DVD or VCD, or an audio CD====&lt;br /&gt;
&lt;br /&gt;
Start VLC with:&lt;br /&gt;
&lt;br /&gt;
For a DVD with menus:&lt;br /&gt;
 % &#039;&#039;&#039;vlc dvd://[device][@raw_device][@[title][:[chapter][:angle]]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In most cases, &#039;&#039;&#039;vlc dvd://&#039;&#039;&#039; or &#039;&#039;&#039;vlc dvd://[device]&#039;&#039;&#039; will do. [device] is for example &#039;&#039;&#039;/dev/dvd&#039;&#039;&#039; on GNU/Linux or &#039;&#039;&#039;D:&#039;&#039;&#039; on Windows (complete path to your DVD drive).&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
(DVD without menus):&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc dvdsimple://[device][@raw_device][@[title][:[chapter][:angle]]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
(VCD):&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc vcd://[device][@{E|P|E|T|S}[number]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
(Audio CD):&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc cdda://[device][@[track]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Receiving a network stream====&lt;br /&gt;
&lt;br /&gt;
To receive an unicast UDP stream (sent by VLS or VLC&#039;s stream output), start VLC with:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc  udp:[@:server_port]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use the default port (1234), &#039;&#039;&#039;vlc udp:&#039;&#039;&#039; will do. For more information, look at the Streaming Howto.&lt;br /&gt;
&lt;br /&gt;
To receive an multicast UDP stream (sent by VLS or VLC&#039;s stream output), start VLC with:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc udp:@multicast_address[:server_port]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To receive a SSM (source specific multicast) stream, you can use:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc udp:server_address@multicast_address[:server_port]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This only works on OSs that support SSM (Windows XP and recent Linux kernels).&lt;br /&gt;
&lt;br /&gt;
To receive a HTTP stream, start VLC with:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc http://www.example.org/your_file.mpg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To receive a RTSP stream, start VLC with:&amp;lt;/para&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc rtsp://www.example.org/your_stream&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modules selection===&lt;br /&gt;
&lt;br /&gt;
VLC always try to select the most appropriate interface, input and output modules, among the ones available on the system, according to the stream it is given to read. However, you may wish to force the use of a specific module with the following options.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--intf  &amp;lt;module&amp;gt;&#039;&#039;&#039; allows you to select the interface module.&lt;br /&gt;
*&#039;&#039;&#039;--extraintf  &amp;lt;module&amp;gt;&#039;&#039;&#039; allows you to select extra interface modules that will be launched in addition to the main one. This is mainly useful for special &#039;&#039;control&#039;&#039; interfaces, like HTTP, RC (Remote Control), ... (see below)&lt;br /&gt;
*&#039;&#039;&#039;--aout  &amp;lt;module&amp;gt;&#039;&#039;&#039; allows you to select the audio output module.&lt;br /&gt;
*&#039;&#039;&#039;--vout  &amp;lt;module&amp;gt;&#039;&#039;&#039; allows you to select the video output module.&lt;br /&gt;
*&#039;&#039;&#039;--memcpy  &amp;lt;module&amp;gt;&#039;&#039;&#039; allows you to choose a memory copy module. You should probably never touch that.&lt;br /&gt;
&lt;br /&gt;
You can get a listing of the available modules by using &#039;&#039;&#039;vlc -l&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Stream Output===&lt;br /&gt;
&lt;br /&gt;
The Stream output system allows vlc to become a streaming server.&lt;br /&gt;
&lt;br /&gt;
For more details on the stream output system, please have a look at the [[Documentation:Streaming HowTo|Streaming HowTo]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other Options===&lt;br /&gt;
&lt;br /&gt;
====Audio options====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--noaudio&#039;&#039;&#039; disables audio output.&lt;br /&gt;
*&#039;&#039;&#039;--mono&#039;&#039;&#039; forces VLC to treat the stream in mono audio.&lt;br /&gt;
*&#039;&#039;&#039;--volume &amp;lt;integer&amp;gt;&#039;&#039;&#039; sets the level of audio output (between 0 and 1024).&lt;br /&gt;
*&#039;&#039;&#039;--aout-rate &amp;lt;integer&amp;gt;&#039;&#039;&#039; sets the audio output frequency (Hz). By default, VLC will try to autodetect this.&lt;br /&gt;
*&#039;&#039;&#039;--desync &amp;lt;integer&amp;gt;&#039;&#039;&#039; compensates desynchronization of audio (ms). (If audio and video streams are not synchronized, use this setting to delay the audio stream)&lt;br /&gt;
*&#039;&#039;&#039;--audio-filter &amp;lt;string&amp;gt;&#039;&#039;&#039; adds audio filters to the processing chain. Available filters are visual (visualizer with spectrum analyzer and oscilloscope), headphone (virtual headphone  patialization) and normalizer (volume normalizer)&lt;br /&gt;
&lt;br /&gt;
====Video options====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--novideo&#039;&#039;&#039; disables video output.&lt;br /&gt;
*&#039;&#039;&#039;--greyscale&#039;&#039;&#039; turns video output into grayscale mode.&lt;br /&gt;
*&#039;&#039;&#039;--fullscreen&#039;&#039;&#039; ( or &#039;&#039;&#039;-f&#039;&#039;&#039;) sets fullscreen video.&lt;br /&gt;
*&#039;&#039;&#039;--nooverlay&#039;&#039;&#039; disables hardware acceleration for the video output.&lt;br /&gt;
*&#039;&#039;&#039;--width, --height &amp;lt;integer&amp;gt;&#039;&#039;&#039; sets the video window dimensions. By default, the video window size will be adjusted to match the video dimensions.&lt;br /&gt;
*&#039;&#039;&#039;--zoom &amp;lt;float&amp;gt;&#039;&#039;&#039; adds a zoom factor.&lt;br /&gt;
*&#039;&#039;&#039;--aspect-ratio &amp;lt;mode&amp;gt;&#039;&#039;&#039; forces source aspect ratio. Modes are 4x3, 16x9, ...&lt;br /&gt;
*&#039;&#039;&#039;--spumargin  &amp;lt;integer&amp;gt;&#039;&#039;&#039; forces SPU subtitles postion.&lt;br /&gt;
*&#039;&#039;&#039;--filter &amp;lt;string&amp;gt;&#039;&#039;&#039; adds video filters to the processing chain. You can add several filters, separated by commas&lt;br /&gt;
*&#039;&#039;&#039;--sub-filter &amp;lt;string&amp;gt;&#039;&#039;&#039; adds video subpictures filter to the processing chain.&lt;br /&gt;
&lt;br /&gt;
====Playlist options====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--random&#039;&#039;&#039; plays files randomly forever.&lt;br /&gt;
*&#039;&#039;&#039;--loop&#039;&#039;&#039; loops playlist on end.&lt;br /&gt;
*&#039;&#039;&#039;--repeat&#039;&#039;&#039; repeats current item until another item is forced&lt;br /&gt;
*&#039;&#039;&#039;--play-and-stop&#039;&#039;&#039; stops the playlist after each played item.&lt;br /&gt;
&lt;br /&gt;
====Network options====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--server-port &amp;lt;integer&amp;gt;&#039;&#039;&#039; sets server port.&lt;br /&gt;
*&#039;&#039;&#039;--iface  &amp;lt;string&amp;gt;&#039;&#039;&#039; specifies the network interface to use.&lt;br /&gt;
*&#039;&#039;&#039;--iface-addr  &amp;lt;string&amp;gt;&#039;&#039;&#039; specifies your network interface IP address.&lt;br /&gt;
*&#039;&#039;&#039;--mtu  &amp;lt;integer&amp;gt;&#039;&#039;&#039; specifies the MTU of the network interface.&lt;br /&gt;
*&#039;&#039;&#039;--ipv6&#039;&#039;&#039; forces IPv6.&lt;br /&gt;
*&#039;&#039;&#039;--ipv4&#039;&#039;&#039; forces IPv4.&lt;br /&gt;
&lt;br /&gt;
====CPU options====&lt;br /&gt;
&lt;br /&gt;
You should probably not touch these options unless you know what you are doing.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--nommx&#039;&#039;&#039; disables the use of MMX CPU extensions.&lt;br /&gt;
*&#039;&#039;&#039;--no3dn&#039;&#039;&#039; disables the use of 3D Now! CPU extensions.&lt;br /&gt;
*&#039;&#039;&#039;--nommxext&#039;&#039;&#039; disables the use of MMX Ext CPU extensions.&lt;br /&gt;
*&#039;&#039;&#039;--nosse&#039;&#039;&#039; disables the use of SSE CPU extensions.&lt;br /&gt;
*&#039;&#039;&#039;--noaltivec&#039;&#039;&#039; disables the use of Altivec CPU extensions.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous options====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--quiet&#039;&#039;&#039;  deactivates all console messages.&lt;br /&gt;
*&#039;&#039;&#039;--color&#039;&#039;&#039; displays color messages.&lt;br /&gt;
*&#039;&#039;&#039;--search-path  &amp;lt;string&amp;gt;&#039;&#039;&#039; specifies interface default search path.&lt;br /&gt;
*&#039;&#039;&#039;--plugin-path  &amp;lt;string&amp;gt;&#039;&#039;&#039; specifies plugin search path.&lt;br /&gt;
*&#039;&#039;&#039;--no-plugins-cache&#039;&#039;&#039; disables the plugin cache (plugins cache speeds up startup)&lt;br /&gt;
*&#039;&#039;&#039;--dvd  &amp;lt;string&amp;gt;&#039;&#039;&#039; specifies the default DVD device.&lt;br /&gt;
*&#039;&#039;&#039;--vcd  &amp;lt;string&amp;gt;&#039;&#039;&#039; specifies the default VCD device.&lt;br /&gt;
*&#039;&#039;&#039;--program  &amp;lt;integer&amp;gt;&#039;&#039;&#039; specifies program (SID) (for streams with several programs, like satellite ones).&lt;br /&gt;
*&#039;&#039;&#039;--audio-type  &amp;lt;integer&amp;gt;&#039;&#039;&#039; specifies the default audio type to use with dvds.&lt;br /&gt;
*&#039;&#039;&#039;--audio-channel  &amp;lt;integer&amp;gt;&#039;&#039;&#039; specifies the default audio channel to use with dvds.&lt;br /&gt;
*&#039;&#039;&#039;--spu-channel  &amp;lt;integer&amp;gt;&#039;&#039;&#039; specifies the default subtitle channel to use with dvds.&lt;br /&gt;
*&#039;&#039;&#039;--version&#039;&#039;&#039; gives you information about the current VLC version.&lt;br /&gt;
*&#039;&#039;&#039;--module  &amp;lt;module&amp;gt; &#039;&#039;&#039; displays help about specified module. (Shortcut: &#039;&#039;&#039;-p&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
===Item-specific options===&lt;br /&gt;
&lt;br /&gt;
There are many options that are related to items (like &#039;&#039;&#039;--novideo&#039;&#039;&#039;, &#039;&#039;&#039;--codec&#039;&#039;&#039;, &#039;&#039;&#039;--fullscreen&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For all of these, you have the possibility to make them item-specific, using &amp;quot;:&amp;quot; instead of &amp;quot;--&amp;quot; and putting the option just after the concerned item.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc file1.mpg :fullscreen file2.mpg&#039;&#039;&#039;&lt;br /&gt;
will play file1.mpg in fullscreen mode and file2.mpg in the default mode (which is generally no fullscreen), whereas&lt;br /&gt;
 % &#039;&#039;&#039;vlc --fullscreen file1.mpg file2.mpg&#039;&#039;&#039;&lt;br /&gt;
will play both files in fullscreen mode&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc --fullscreen file1.mpg :sub-file=file1.srt :no-fullscreen file2.mpg :filter=distort&#039;&#039;&#039;&lt;br /&gt;
will play file1.mpg in windowed (no-fullscreen) mode with the subtitles file file1.srt and will play file2.mpg with video filter distort enabled in fullscreen mode (item-specific options override global options)&lt;br /&gt;
&lt;br /&gt;
==Advanced use of filters==&lt;br /&gt;
&lt;br /&gt;
===Filters===&lt;br /&gt;
&lt;br /&gt;
These are the old style VLC filters. They only apply to on screen display and thus cannot be streamed.&lt;br /&gt;
&lt;br /&gt;
====Deinterlacing video filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;deinterlace&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--deinterlace-mode {discard,blend,mean,bob,linear}&#039;&#039;&#039; choose a deinterlacing mode.&lt;br /&gt;
&lt;br /&gt;
====Invert video filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;invert&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Image properties filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;adjust&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--contrast &amp;lt;float&amp;gt;&#039;&#039;&#039; Image contrast in the 0-2 range.&lt;br /&gt;
*&#039;&#039;&#039;--brightness &amp;lt;float&amp;gt;&#039;&#039;&#039; Image brightness in the 0-2 range.&lt;br /&gt;
*&#039;&#039;&#039;--hue &amp;lt;integer&amp;gt;&#039;&#039;&#039; Image hue in the 0-360 range.&lt;br /&gt;
*&#039;&#039;&#039;--saturation &amp;lt;float&amp;gt;&#039;&#039;&#039; Image saturation in the 0-3 range.&lt;br /&gt;
*&#039;&#039;&#039;-gamma &amp;lt;float&amp;gt;&#039;&#039;&#039; Image gamma in the 0-10 range.&lt;br /&gt;
&lt;br /&gt;
====Wall video filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;wall&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This filter splits the output in several windows.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--wall-cols &amp;lt;integer&amp;gt;&#039;&#039;&#039; Number of columns.&lt;br /&gt;
*&#039;&#039;&#039;--wall-rows &amp;lt;integer&amp;gt;&#039;&#039;&#039; Number of rows.&lt;br /&gt;
*&#039;&#039;&#039;--wall-active &amp;lt;string&amp;gt;&#039;&#039;&#039; Select the windows you want to display. To select windows 2 and 4 you would write &#039;&#039;&#039;--wall-active 2,4&#039;&#039;&#039;. When this option isn&#039;t specified, all windows are displayed.&lt;br /&gt;
&lt;br /&gt;
====Video transformation filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;transform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--transform-type {90,180,270,hflip,vflip}&#039;&#039;&#039; Select rotation angle or symmetry.&lt;br /&gt;
&lt;br /&gt;
====Distort video filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;distort&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Clone video filter====&lt;br /&gt;
&lt;br /&gt;
This filter clones the output window.&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;clone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--clone-count &amp;lt;integer&amp;gt;&#039;&#039;&#039; Number of clones.&lt;br /&gt;
*&#039;&#039;&#039;--clone-vout-list &amp;lt;string&amp;gt;&#039;&#039;&#039; Comma separated string of video output modules.&lt;br /&gt;
&lt;br /&gt;
====Crop video filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;crop&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--crop-geometry &amp;lt;string&amp;gt;&#039;&#039;&#039; Set the geometry of the zone to crop. This is set as &amp;lt;width&amp;gt; x &amp;lt;height&amp;gt; + &amp;lt;left offset&amp;gt; + &amp;lt;top offset&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;--autocrop&#039;&#039;&#039; Enable automatic black border cropping.&lt;br /&gt;
&lt;br /&gt;
====Motion blur filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;motionblur&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;blur-factor &amp;lt;integer&amp;gt;&#039;&#039;&#039; Blur factor in the 1-127 range.&lt;br /&gt;
&lt;br /&gt;
====Video pictures blending====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;blend&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Video scaling filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;scale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Subpictures Filters===&lt;br /&gt;
&lt;br /&gt;
These are the new VLC filters. They can be streamed.&lt;br /&gt;
&lt;br /&gt;
====Time display sub filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--time-format &amp;lt;string&amp;gt;&#039;&#039;&#039; Time format string. You can use the following special characters %Y = year, %m = month, %d = day, %H = hour, %M = minute, %S = second.&lt;br /&gt;
*&#039;&#039;&#039;--time-x &amp;lt;integer&amp;gt;&#039;&#039;&#039; X offset from the left in pixels.&lt;br /&gt;
*&#039;&#039;&#039;--time-y &amp;lt;integer&amp;gt;&#039;&#039;&#039; Y offset from the top in pixels.&lt;br /&gt;
&lt;br /&gt;
====Marquee display sub filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;marq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--marq-marquee &amp;lt;string&amp;gt;&#039;&#039;&#039; Marquee text to display.&lt;br /&gt;
*&#039;&#039;&#039;--marq-x &amp;lt;integer&amp;gt;&#039;&#039;&#039; X offset from the left in pixels.&lt;br /&gt;
*&#039;&#039;&#039;--marq-y &amp;lt;integer&amp;gt;&#039;&#039;&#039; Y offset from the top in pixels.&lt;br /&gt;
*&#039;&#039;&#039;--marq-timeout &amp;lt;timeout&amp;gt;&#039;&#039;&#039; Defines the time the marquee must remain displayed in milliseconds. Default value is 0 (remain forever).&lt;br /&gt;
&lt;br /&gt;
====Logo video filter====&lt;br /&gt;
&lt;br /&gt;
Module name: &#039;&#039;&#039;logo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This filter can be used both as an old style filter or a subpictures filter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;--logo-file &amp;lt;string&amp;gt;&#039;&#039;&#039; Full path of the PNG file to use.&lt;br /&gt;
*&#039;&#039;&#039;--logo-x &amp;lt;integer&amp;gt;&#039;&#039;&#039; X offset from the left in pixels.&lt;br /&gt;
*&#039;&#039;&#039;--logo-y &amp;lt;integer&amp;gt;&#039;&#039;&#039; Y offset from the top in pixels.&lt;br /&gt;
*&#039;&#039;&#039;--logo-transparency &amp;lt;integer&amp;gt;&#039;&#039;&#039; You can set the logo transparency value here (from 0 for full transparency to 255 for full opacity).&lt;br /&gt;
&lt;br /&gt;
Note: You can move the logo by left-clicking on it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The HTTP interface==&lt;br /&gt;
&lt;br /&gt;
VLC ships with a little HTTP server integrated. It is used both to stream using HTTP, and for the HTTP remote control interface.&lt;br /&gt;
&lt;br /&gt;
To start VLC with the HTTP interface, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc -I http [--http-src /directory/] [--http-host host:port]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to have both the &amp;quot;normal&amp;quot; interface and the HTTP interface, use &#039;&#039;&#039;vlc --extraintf http&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The HTTP interface will start listening at host:port (&amp;lt;all interfaces&amp;gt;:8080 if omitted), and will reproduce the structure of /directory at http://host:port/ ( vlc_source_path/share/http if omitted ).&lt;br /&gt;
&lt;br /&gt;
Use a browser to go to http://your_host_machine:port. You should be taken to the main page.&lt;br /&gt;
&lt;br /&gt;
VLC is shipped with a set of files that should be enough for generic needs. It is also possible to customize pages. See [[Documentation:Play_HowTo/Building_Pages_for_the_HTTP_Interface]].&lt;br /&gt;
&lt;br /&gt;
Available pages are:&lt;br /&gt;
* &#039;&#039;&#039;list was obsolete&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other control interfaces==&lt;br /&gt;
&lt;br /&gt;
VLC includes a number of so-called interfaces that are not really interfaces, but means of controlling VLC. Nevertheless, they are enabled by setting them as interface or extra interface, either in the Preferences, in General/Interface, or using &#039;&#039;&#039;-I&#039;&#039;&#039; or &#039;&#039;&#039;--extraintf&#039;&#039;&#039; on the command line.&lt;br /&gt;
&lt;br /&gt;
===Hotkeys===&lt;br /&gt;
&lt;br /&gt;
This module allows you to control VLC and playback via hotkeys. It is always enabled by default. You can use hotkeys in the video output window.&lt;br /&gt;
&lt;br /&gt;
Hotkeys can be hacked by:&lt;br /&gt;
 % &#039;&#039;&#039;vlc --key-&amp;lt;function&amp;gt; &amp;amp;lt;code&amp;amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Code is composed by modifiers keys (Alt, Shift, Ctrl, Meta,Command) separated by a dash (-) and terminated by a key (a...z, +, =, -, &#039;,&#039;, +, &amp;amp;lt;, &amp;amp;gt;, `, /, ;, &#039;, \, [, ], *, Left, Right, Up, Down, Space, Enter, F1...F12, Home, End, Menu, Esc, Page Up, Page Down, Tab, Backspace, Mouse Wheel Up and Mouse Wheel Down). Main controls are available from hotkeys, such as : fullscreen, play-pause, faster, slower, next, prev, stop, quit, vol-up, etc. (use the &#039;&#039;&#039;--longhelp&#039;&#039;&#039; option for full list of functions).&lt;br /&gt;
For example, for binding fullscreen to Ctrl-f, run:&lt;br /&gt;
 % &#039;&#039;&#039;vlc --key-fullscreen &#039;Ctrl-f&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===RC and RTCI===&lt;br /&gt;
&lt;br /&gt;
These two interfaces allow you to control VLC from a command shell (possibly using a remote connexion or a Unix socket).&lt;br /&gt;
&lt;br /&gt;
Start VLC with &#039;&#039;&#039;-I rc&#039;&#039;&#039; or &#039;&#039;&#039;--extraintf rc&#039;&#039;&#039;. When you get the &#039;&#039;&#039;Remote control interface initialized, `h&#039; for help&#039;&#039;&#039; message, press h and Enter to get help about available commands.&lt;br /&gt;
&lt;br /&gt;
To be able to remote connect to your VLC using a TCP socket (telnet-like connexion), use &#039;&#039;&#039;--rc-host your_host:port&#039;&#039;&#039;. Then, by connecting (using telnet or netcat) to the host on the given port, you will get the command shell.&lt;br /&gt;
&lt;br /&gt;
To use a UNIX socket (local socket, this does not work for Windows), use &#039;&#039;&#039;--rc-unix /path/to/socket&#039;&#039;&#039;. Commands can then be passed using this UNIX socket.&lt;br /&gt;
&lt;br /&gt;
The RTCI interface gives you more advanced options, such as marquee control for the marquee subpicture filter (See filter section).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ncurses===&lt;br /&gt;
&lt;br /&gt;
This is a text interface, using ncurses library.&lt;br /&gt;
&lt;br /&gt;
Start VLC with &#039;&#039;&#039;-I ncurses&#039;&#039;&#039; or &#039;&#039;&#039;--extraintf ncurses&#039;&#039;&#039;. You will then get something like that:&lt;br /&gt;
&lt;br /&gt;
http://www.videolan.org/doc/play-howto/en/images/play-howto/intf-ncurses-playlist.jpg The ncurses interface&lt;br /&gt;
&lt;br /&gt;
Press h to get the list of all available commands, with a short description.&lt;br /&gt;
&lt;br /&gt;
There is also a filebrowser available for the ncurses interface in order to add playlist items. Press &#039;B&#039; to use it.&lt;br /&gt;
&lt;br /&gt;
http://www.videolan.org/doc/play-howto/en/images/play-howto/intf-ncurses-filebrowser.jpg The ncurses filebrowser&lt;br /&gt;
&lt;br /&gt;
You can set the filebrowser starting point by launching vlc with the &#039;&#039;&#039;--browse-dir&#039;&#039;&#039; option:&lt;br /&gt;
&lt;br /&gt;
 % &#039;&#039;&#039;vlc -I ncurses --browse-dir /filebrowser/starting/point/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Gestures===&lt;br /&gt;
&lt;br /&gt;
Gestures provide a simple mouse gestures control. TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Mozilla plugin==&lt;br /&gt;
&lt;br /&gt;
VLC can also be embedded in a web browser! The following browsers are supported [http://www.mozilla.org/ Mozilla], [http://www.mozilla.org/products/firefox/ Firefox] and [http://www.apple.com/macosx/features/safari Safari].&lt;br /&gt;
&lt;br /&gt;
===Install the plugin===&lt;br /&gt;
&lt;br /&gt;
====GNU/Linux Debian====&lt;br /&gt;
&lt;br /&gt;
Install the &#039;&#039;mozilla-plugin-vlc&#039;&#039; package:&lt;br /&gt;
&lt;br /&gt;
 # &#039;&#039;&#039;apt-get update&#039;&#039;&#039;&lt;br /&gt;
 # &#039;&#039;&#039;apt-get install mozilla-plugin-vlc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
&lt;br /&gt;
Quit Firefox or Mozilla.&lt;br /&gt;
&lt;br /&gt;
Copy the two files in &#039;&#039;&#039;VLC_Installation_folder\mozilla&#039;&#039;&#039; (usually &#039;&#039;&#039;C:\Program Files\VideoLAN\VLC\mozilla&#039;&#039;&#039;) to your mozilla plugins directory (Usually &#039;&#039;&#039;C:\Program Files\Mozilla\plugins&#039;&#039;&#039; or &#039;&#039;&#039;C:\Program Files\Mozilla&lt;br /&gt;
Firefox\plugins&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Restart Firefox or Mozilla.&lt;br /&gt;
&lt;br /&gt;
====MacOS X====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The Mozilla/Safari plugin for MacOS X is only available from vlc version 0.8.5.1 and onwards.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Quit Safari browser.&lt;br /&gt;
&lt;br /&gt;
Download the Mozilla/safari plugin package from [http://www.videolan.org/vlc/download-macosx.html MacOS X download page].&lt;br /&gt;
&lt;br /&gt;
Run the installer from the dmg image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Compile the sources yourself====&lt;br /&gt;
&lt;br /&gt;
Please look at the [http://developers.videolan.org developers page] for information on how to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use the mozilla plugin===&lt;br /&gt;
&lt;br /&gt;
If you open a link to a video file handled by the VLC plugin (To get the list of handled types, browse to &#039;&#039;&#039;about:plugins&#039;&#039;&#039;) or a page with an embedded video, the plugin should open and read the&lt;br /&gt;
video.&lt;br /&gt;
&lt;br /&gt;
===Build HTML pages that use the plugin (VLC version up to 0.8.5)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING:&#039;&#039;&#039; the APIs described in this section are &#039;&#039;&#039;deprecated&#039;&#039;&#039;, do not use, &lt;br /&gt;
&lt;br /&gt;
The following API description is only valid uptill version 0.8.5 of the mozilla plugin.&lt;br /&gt;
&lt;br /&gt;
Additionally to viewing video on all pages, you can build custom pages that will use the advanced features of the plugin, using Javascript functions to control playback or extract information from the&lt;br /&gt;
plugin.&lt;br /&gt;
&lt;br /&gt;
The vlc plugin supports the following function calls:&lt;br /&gt;
*&#039;&#039;&#039;play()&#039;&#039;&#039;: Start playing media in the plugin.&lt;br /&gt;
*&#039;&#039;&#039;pause()&#039;&#039;&#039;: Pause playback.&lt;br /&gt;
*&#039;&#039;&#039;stop()&#039;&#039;&#039;: Stop media playback.&lt;br /&gt;
*&#039;&#039;&#039;fullscreen()&#039;&#039;&#039;: Switch the video to full screen.&lt;br /&gt;
*&#039;&#039;&#039;set_volume(vol)&#039;&#039;&#039;: Set the volume. &#039;&#039;&#039;vol&#039;&#039;&#039; has to be an int in the 0-200 range.&lt;br /&gt;
*&#039;&#039;&#039;get_volume()&#039;&#039;&#039;: Get the current volume setting.&lt;br /&gt;
*&#039;&#039;&#039;mute()&#039;&#039;&#039;: Toggle volume muting.&lt;br /&gt;
*&#039;&#039;&#039;set_int_variable(var_name, value)&#039;&#039;&#039;:&lt;br /&gt;
*&#039;&#039;&#039;set_bool_variable(var_name, value)&#039;&#039;&#039;:&lt;br /&gt;
*&#039;&#039;&#039;set_str_variable(var_name, value)&#039;&#039;&#039;:&lt;br /&gt;
*&#039;&#039;&#039;get_int_variable(var_name)&#039;&#039;&#039;:&lt;br /&gt;
*&#039;&#039;&#039;get_bool_variable(var_name)&#039;&#039;&#039;:&lt;br /&gt;
*&#039;&#039;&#039;get_str_variable(var_name)&#039;&#039;&#039;:&lt;br /&gt;
*&#039;&#039;&#039;clear_playlist()&#039;&#039;&#039;: Clear the playlist.&lt;br /&gt;
*&#039;&#039;&#039;add_item(mrl)&#039;&#039;&#039;: Append an item whose location is given by the [[media resource locator]] to the playlist.&lt;br /&gt;
*&#039;&#039;&#039;next()&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;previous()&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;isplaying()&#039;&#039;&#039;: return true if the plugin is playing something.&lt;br /&gt;
*&#039;&#039;&#039;get_length()&#039;&#039;&#039;: Get the media&#039;s length in seconds.&lt;br /&gt;
*&#039;&#039;&#039;get_position()&#039;&#039;&#039;: Get the current position in the media in percent.&lt;br /&gt;
*&#039;&#039;&#039;get_time()&#039;&#039;&#039;: Get the current position in the media in seconds.&lt;br /&gt;
*&#039;&#039;&#039;seek(seconds,is_relative)&#039;&#039;&#039;: If is_relative is true, seek relatively to current time, else seek from beginning of the stream. Seek time is specified in seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a few examples of HTML pages that use the&lt;br /&gt;
Mozilla plugin.&lt;br /&gt;
&lt;br /&gt;
====Example 1====&lt;br /&gt;
&lt;br /&gt;
In this example, the plugin will read an HTTP stream inside the web page. If the user goes fullscreen, he will have to press &#039;&#039;f&#039;&#039; or double-click on the video to go back in normal view.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;head&amp;amp;gt;&amp;amp;lt;title&amp;amp;gt;Demo of VLC mozilla plugin&amp;amp;lt;/title&amp;amp;gt;&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;Demo of VLC mozilla plugin - Example 1&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;embed type=&amp;quot;application/x-vlc-plugin&amp;quot;&lt;br /&gt;
          name=&amp;quot;video1&amp;quot;&lt;br /&gt;
          autoplay=&amp;quot;no&amp;quot; loop=&amp;quot;yes&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;300&amp;quot;&lt;br /&gt;
          target=&amp;quot;http://server.example.org/video1.vob&amp;quot; /&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video1.play()&#039;&amp;amp;gt;Play video1&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video1.pause()&#039;&amp;amp;gt;Pause video1&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video1.stop()&#039;&amp;amp;gt;Stop video1&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video1.fullscreen()&#039;&amp;amp;gt;Fullscreen&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example 2====&lt;br /&gt;
&lt;br /&gt;
In this example, the plugin will read a multicast UDP stream in a dedicated video output window.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;head&amp;amp;gt;&amp;amp;lt;title&amp;amp;gt;Demo of VLC mozilla plugin&amp;amp;lt;/title&amp;amp;gt;&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;Demo of VLC mozilla plugin - Example 2&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;embed type=&amp;quot;application/x-vlc-plugin&amp;quot;&lt;br /&gt;
          name=&amp;quot;video2&amp;quot;&lt;br /&gt;
          autoplay=&amp;quot;no&amp;quot; loop=&amp;quot;no&amp;quot; hidden=&amp;quot;yes&amp;quot;&lt;br /&gt;
          target=&amp;quot;udp:@239.255.12.42&amp;quot; /&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video2.play()&#039;&amp;amp;gt;Play video2&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video2.stop()&#039;&amp;amp;gt;Stop video2&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;javascript:;&amp;quot; onclick=&#039;document.video2.fullscreen()&#039;&amp;amp;gt;Fullscreen&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Building HTML pages for Mozilla/Firefox/Internet Explorere/Safari (VLC version 0.8.6 and above)==&lt;br /&gt;
&lt;br /&gt;
The following description works for any of the browsers VLC supports. The JavaScript API has been unified between Mozilla/Firefox/IE (ActiveX) and Safari, thus targetting at all of the major OS out there. This is only valid for VLC version 0.8.6 and above.&lt;br /&gt;
&lt;br /&gt;
Additionally to viewing video on all pages, you can build custom pages that will use the advanced features of the plugin, using Javascript functions to control playback or extract information from the&lt;br /&gt;
plugin.&lt;br /&gt;
&lt;br /&gt;
The vlc plugin exports serveral objects that can be accessed for setting and getting information. When used improperly the API&#039;s will throw an exception that includes a string that explains what happened. For example when asking for vlc.input.length when there is no playlist item playing.&lt;br /&gt;
&lt;br /&gt;
The vlc plugin knows the following objects:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;audio&#039;&#039;&#039;: Access audio properties.&lt;br /&gt;
*&#039;&#039;&#039;input&#039;&#039;&#039;: Access input properties.&lt;br /&gt;
*&#039;&#039;&#039;playlist&#039;&#039;&#039;: Access playlist properties.&lt;br /&gt;
*&#039;&#039;&#039;video&#039;&#039;&#039;: Access video properties.&lt;br /&gt;
*&#039;&#039;&#039;log&#039;&#039;&#039;: Access log properties.&lt;br /&gt;
*&#039;&#039;&#039;messages&#039;&#039;&#039;: Access to log message properties.&lt;br /&gt;
*&#039;&#039;&#039;iterator&#039;&#039;&#039;: Access to log iterator properties.&lt;br /&gt;
&lt;br /&gt;
The following JavaScript code shows howto get a reference to the vlc plugin. This reference can then be used to access the objects of the vlc plugin.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;title&amp;amp;gt;VLC Mozilla plugin test page&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;embed type=&amp;quot;application/x-vlc-plugin&amp;quot; pluginspage=&amp;quot;http://www.videolan.org&amp;quot; version=&amp;quot;VideoLAN.VLCPlugin.2&amp;quot;&lt;br /&gt;
     width=&amp;quot;640&amp;quot;&lt;br /&gt;
     height=&amp;quot;480&amp;quot;&lt;br /&gt;
     id=&amp;quot;vlc&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/embed&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;script language=&amp;quot;Javascript&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;!--&lt;br /&gt;
 var vlc = document.getElementById(&amp;quot;vlc&amp;quot;);&lt;br /&gt;
 vlc.audio.toggleMute();&lt;br /&gt;
 !--&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Root object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;VersionInfo&#039;&#039;&#039;: returns version information string&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;vlc.versionInfo()&#039;&#039;&#039;: returns version information string (same as VersionInfo)&lt;br /&gt;
&lt;br /&gt;
====Audio object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.audio.mute&#039;&#039;&#039;: boolean value to mute and ummute the audio&lt;br /&gt;
*&#039;&#039;&#039;vlc.audio.volume&#039;&#039;&#039;: a value between [0-200] which indicates a percentage of the volume.&lt;br /&gt;
*&#039;&#039;&#039;vlc.audio.track&#039;&#039;&#039;: (supported in vlc version &amp;gt; 0.8.6) a value between [1-65535] which indicates the audio track to play or that is playing. a value of 0 means the audio is/will be disabled.&lt;br /&gt;
*&#039;&#039;&#039;vlc.audio.channel&#039;&#039;&#039;: (supported in vlc version &amp;gt; 0.8.6) integer value between [1-5] that indicates which audio channel mode is used, values can be: &amp;quot;1=stereo&amp;quot;, &amp;quot;2=reverse stereo&amp;quot;, &amp;quot;3=left&amp;quot;, &amp;quot;4=right&amp;quot;, &amp;quot;5=dolby&amp;quot;. Use vlc.audio.channel to check if setting of the audio channel mode has succeeded.&lt;br /&gt;
&lt;br /&gt;
 Audio Channel:&lt;br /&gt;
 &amp;lt;SELECT readonly onChange=&#039;doAudioChannel(this.value)&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;OPTION value=1&amp;gt;Stereo&amp;lt;/OPTION&amp;gt;&lt;br /&gt;
    &amp;lt;OPTION value=2&amp;gt;Reverse stereo&amp;lt;/OPTION&amp;gt;&lt;br /&gt;
    &amp;lt;OPTION value=3&amp;gt;Left&amp;lt;/OPTION&amp;gt;&lt;br /&gt;
    &amp;lt;OPTION value=4&amp;gt;Right&amp;lt;/OPTION&amp;gt;&lt;br /&gt;
    &amp;lt;OPTION value=5&amp;gt;Dolby&amp;lt;/OPTION&amp;gt;&lt;br /&gt;
 &amp;lt;/SELECT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;SCRIPT language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;amp;lt;!--&lt;br /&gt;
 function doAudioChannel(value)&lt;br /&gt;
 {&lt;br /&gt;
    var vlc = getVLC(&amp;quot;vlc&amp;quot;);&lt;br /&gt;
    vlc.audio.channel = parseInt(value);&lt;br /&gt;
    alert(vlc.audio.channel);&lt;br /&gt;
 };&lt;br /&gt;
 --&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;vlc.audio.toggleMute()&#039;&#039;&#039;: boolean toggle that mutes and unmutes the audio based upon the previous state&lt;br /&gt;
&lt;br /&gt;
====Input object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.length&#039;&#039;&#039;: length of the input file in number of milliseconds. 0 is returned for &#039;live&#039; streams or clips whose length cannot be determined by VLC&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.fps&#039;&#039;&#039;: frames per second returned as a float (typically 60.0, 50.0, 23.976, etc...)&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.hasVout&#039;&#039;&#039;: a boolean that returns true when the video is being displayed, it returns false when video is not displayed&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.position&#039;&#039;&#039;: normalized position in multimedia stream item given as a float value between [0.0 - 1.0]&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.time&#039;&#039;&#039;: the absolute position in time given in milliseconds, this property can be used to seek through the stream&lt;br /&gt;
 &amp;amp;lt;!-- absolute seek in stream !--&amp;amp;gt;&lt;br /&gt;
 vlc.input.time = &amp;amp;lt;absolute seek&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;!-- relative seek in stream !--&amp;amp;gt;&lt;br /&gt;
 vlc.input.time = vlc.input.time + &amp;amp;lt;relative seek&amp;amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.state&#039;&#039;&#039;: current state of the input chain given as enumeration (IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4, STOPPING=5, FORWARD=6, BACKWARD=7, ENDED=8, ERROR=9). &#039;&#039;&#039;Note that FORWARD and BACKWARD states are currently reserved and not yet operational.&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;vlc.input.rate&#039;&#039;&#039;: input speed given as float (1.0 for normal speed, 0.5 for half speed, 2.0 for twice as fast, etc.)&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Playlist object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.itemCount&#039;&#039;&#039;: number that returns the amount of items currently in the playlist (&#039;&#039;&#039;deprecated&#039;&#039;&#039;, do not use, see [[#Playlist_items_object| Playlist items]])&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.isPlaying&#039;&#039;&#039;: a boolean that returns true if the current playlist item is playing and false when it is not playing&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.items&#039;&#039;&#039;: return the playlist items collection, see [[#Playlist_items_object| Playlist items]]&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.add(mrl)&#039;&#039;&#039;: add a playlist item as [[MRL]]. The MRL must be given as a string. Returns a number as an item identifier in playlist (this is not a position  in playlist).&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.add(mrl,name,options)&#039;&#039;&#039;: add a playlist item as MRL, with metaname &#039;name&#039; and options &#039;options&#039;. options are text arguments which can be provided either as a single string containing space separated values, akin to VLC command line, or as an array of string values. Returns a number as an item identifier in playlist (this is not a position in playlist).&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.play()&#039;&#039;&#039;: start playing the current playlist item&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.playItem(number)&#039;&#039;&#039;: start playing the item whose identifier is number&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.togglePause()&#039;&#039;&#039;: toggle the pause state for the current playlist item&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.stop()&#039;&#039;&#039;: stop playing the current playlist item&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.next()&#039;&#039;&#039;: iterate to the next playlist item&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.prev()&#039;&#039;&#039;: iterate to the previous playlist item&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.clear()&#039;&#039;&#039;: empty the current playlist, all items will be deleted from the playlist (&#039;&#039;&#039;deprecated&#039;&#039;&#039;, do not use, see [[#Playlist_items_object| Playlist items]])&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.removeItem(number)&#039;&#039;&#039;: remove the item from playlist whose identifier is number &amp;lt;!-- (note: this number isn&#039;t the position in the playlist, but the number given by vlc.playlist.add() ) --&amp;gt; (&#039;&#039;&#039;deprecated&#039;&#039;&#039;, do not use, see [[#Playlist_items_object| Playlist items]])&lt;br /&gt;
&lt;br /&gt;
====Playlist items object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.items.count&#039;&#039;&#039;: number of items currently in the playlist&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.items.clear()&#039;&#039;&#039;: empty the current playlist, all items will be deleted from the playlist. If a movie is playing, it stop. Note that when this method returns, playlist may not have been entirely been cleared as this operation is performed asynchronously; use the &#039;&#039;count&#039;&#039; property to verify/wait until the playlist is empty.&lt;br /&gt;
*&#039;&#039;&#039;vlc.playlist.items.remove(number)&#039;&#039;&#039;: remove the item whose identifier is number from playlist. (note: this number isn&#039;t the position in the playlist, but the number given by vlc.playlist.add() )&lt;br /&gt;
&lt;br /&gt;
====Video object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.width&#039;&#039;&#039;: returns the horizontal size of the video&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.height&#039;&#039;&#039;: returns the vertical size of the video&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.fullscreen&#039;&#039;&#039;: when set to true the video will be displayed in fullscreen mode, when set to false the video will be shown inside the video output size. The property takes a boolean as input.&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.aspectRatio&#039;&#039;&#039;: get and set the aspect ratio to use in the video screen. The property takes a string as input value. Typical values are: &amp;quot;1:1&amp;quot;, &amp;quot;4:3&amp;quot;, &amp;quot;16:9&amp;quot;, &amp;quot;16:10&amp;quot;, &amp;quot;221:100&amp;quot; and &amp;quot;5:4&amp;quot;&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.subtitle&#039;&#039;&#039;: (supported in vlc version &amp;gt; 0.8.6a) get and set the subtitle track to show on the video screen. The property takes an integer as input value [1..65535]. If subtitle track is set to 0, the subtitles will be disabled. If set to a value outside the current subtitle tracks range, then it will return -1 and display an error message.&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.teletext&#039;&#039;&#039;: (supported in vlc version &amp;gt;= 0.9.0) get and set teletext page to show on the video stream. This will only work if a teletext elementary stream is available in the video stream. The property takes an integer as input value [0..999] for indicating the teletext page to view, setting the value to 0 means hide teletext. On error it will return -1 and display an error message.&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.toggleFullscreen()&#039;&#039;&#039;: toggle the fullscreen mode based on the previous setting&lt;br /&gt;
*&#039;&#039;&#039;vlc.video.toggleTeletext()&#039;&#039;&#039;: (supported in vlc version &amp;gt;= 0.9.0) toggle the teletext page to overlay transparent or not, based on the previous setting&lt;br /&gt;
&lt;br /&gt;
====Log object====&lt;br /&gt;
&lt;br /&gt;
this object allows accessing VLC main message logging queue. Typically this queue capacity is very small (no nore than 256 entries) and can easily overflow, therefore messages should be read and cleared as often as possible.&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.log.messages&#039;&#039;&#039;: returns the message collection, see [[Messages object]]&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;&#039;vlc.log.verbosity&#039;&#039;&#039;: write number [-1,0,1,2,3] for changing the verbosity level of the log messages; messages whose verbosity is higher than set will be not be logged in the queue. The numbers have the following meaning: -1 disable, 0 info, 1 error, 2 warning, 3 debug. &lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Messages object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;messages.count&#039;&#039;&#039;: returns number of messages in the log&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;messages.clear()&#039;&#039;&#039;: clear the current log buffer. It should be called as frequently as possible to not overflow the message queue. Call this method after the log messages of interest are read.&lt;br /&gt;
*&#039;&#039;&#039;messages.iterator()&#039;&#039;&#039;: creates and returns an iterator object, used to iterate over the messages in the log. &#039;&#039;&#039;Don&#039;t clear the log buffer while holding an iterator object.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Messages Iterator object====&lt;br /&gt;
&lt;br /&gt;
readonly properties&lt;br /&gt;
*&#039;&#039;&#039;iterator.hasNext&#039;&#039;&#039;: returns a boolean that indicates whether &#039;&#039;vlc.log.messages.next()&#039;&#039; will return the next message.&lt;br /&gt;
&lt;br /&gt;
read/write properties&lt;br /&gt;
*&#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
methods&lt;br /&gt;
*&#039;&#039;&#039;iterator.next()&#039;&#039;&#039;: returns the next message object in the log, see [[Message object]]&lt;br /&gt;
&lt;br /&gt;
====Message object====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;message.severity&#039;&#039;&#039;: number that indicates the severity of the log message (0 = info, 1 = error, 2 = warning, 3 = debug)&lt;br /&gt;
*&#039;&#039;&#039;message.name&#039;&#039;&#039;: name of VLC module that printed the log message (e.g: main, http, directx, etc...)&lt;br /&gt;
*&#039;&#039;&#039;message.type&#039;&#039;&#039;: type of VLC module that printed the log message (eg: input, access, vout, sout, etc...)&lt;br /&gt;
*&#039;&#039;&#039;message.message&#039;&#039;&#039;: the message text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12317</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12317"/>
		<updated>2008-08-31T21:11:20Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Lets say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the begining of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.peek( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.peek(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other usefull meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in miliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Information about the VLC Lua scripts is available in your VLC installation in the lua subdirectory.&lt;br /&gt;
&lt;br /&gt;
* [http://git.videolan.org/gitweb.cgi?p=vlc.git;a=blob_plain;f=share/lua/README.txt;hb=HEAD Global VLC Lua README]&lt;br /&gt;
* [http://git.videolan.org/gitweb.cgi?p=vlc.git;a=blob_plain;f=share/lua/playlist/README.txt;hb=HEAD Playlist script specific README]&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usefull links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12316</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12316"/>
		<updated>2008-08-31T21:08:03Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Lets say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the begining of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.probe( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.probe(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other usefull meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in miliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Information about the VLC Lua scripts is available in your VLC installation in the lua subdirectory.&lt;br /&gt;
&lt;br /&gt;
* [http://git.videolan.org/gitweb.cgi?p=vlc.git;a=blob_plain;f=share/lua/README.txt;hb=HEAD Global VLC Lua README]&lt;br /&gt;
* [http://git.videolan.org/gitweb.cgi?p=vlc.git;a=blob_plain;f=share/lua/playlist/README.txt;hb=HEAD Playlist script specific README]&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usefull links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12315</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12315"/>
		<updated>2008-08-31T21:07:45Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Lets say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the begining of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.probe( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.probe(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other usefull meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in miliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Information about the VLC Lua scripts is available in your VLC installation in the lua subdirectory.&lt;br /&gt;
&lt;br /&gt;
[http://git.videolan.org/gitweb.cgi?p=vlc.git;a=blob_plain;f=share/lua/README.txt;hb=HEAD Global VLC Lua README]&lt;br /&gt;
[http://git.videolan.org/gitweb.cgi?p=vlc.git;a=blob_plain;f=share/lua/playlist/README.txt;hb=HEAD Playlist script specific README]&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usefull links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12314</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=12314"/>
		<updated>2008-08-31T20:58:59Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Introduction */ clarify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Lets say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the begining of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.probe( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.probe(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other usefull meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in miliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
=== VLC Lua playlist script ===&lt;br /&gt;
VLC Lua playlist modules should define two functions:&lt;br /&gt;
* &#039;&#039;&#039;probe()&#039;&#039;&#039;: returns true if we want to handle the playlist in this script&lt;br /&gt;
* &#039;&#039;&#039;parse()&#039;&#039;&#039;: read the incoming data and return playlist item(s)&lt;br /&gt;
&lt;br /&gt;
The playlist is a table of playlist objects.&lt;br /&gt;
A playlist object has the following members:&lt;br /&gt;
* &#039;&#039;&#039;.path&#039;&#039;&#039;: the item&#039;s full path / URL&lt;br /&gt;
* &#039;&#039;&#039;.name&#039;&#039;&#039;: the item&#039;s name in playlist &#039;&#039;(OPTIONAL)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.title&#039;&#039;&#039;: the item&#039;s Title &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.artist&#039;&#039;&#039;: the item&#039;s Artist &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.genre&#039;&#039;&#039;: the item&#039;s Genre &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.copyright&#039;&#039;&#039;: the item&#039;s Copyright &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.album&#039;&#039;&#039;: the item&#039;s Album &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.tracknum&#039;&#039;&#039;: the item&#039;s Tracknum &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.description&#039;&#039;&#039;: the item&#039;s Description &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.rating&#039;&#039;&#039;: the item&#039;s Rating &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.date&#039;&#039;&#039;: the item&#039;s Date &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.setting&#039;&#039;&#039;: the item&#039;s Setting &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.url&#039;&#039;&#039;: the item&#039;s URL &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.language&#039;&#039;&#039;: the item&#039;s Language &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.nowplaying&#039;&#039;&#039;: the item&#039;s NowPlaying &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.publisher&#039;&#039;&#039;: the item&#039;s Publisher &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.encodedby&#039;&#039;&#039;: the item&#039;s EncodedBy &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.arturl&#039;&#039;&#039;: the item&#039;s ArtURL &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.trackid&#039;&#039;&#039;: the item&#039;s TrackID &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.options&#039;&#039;&#039;: a list of VLC options &#039;&#039;(OPTIONAL)&#039;&#039; &amp;lt;br/&amp;gt; example: .options = { &amp;quot;fullscreen&amp;quot; }&lt;br /&gt;
* &#039;&#039;&#039;.duration&#039;&#039;&#039;: stream duration in seconds &#039;&#039;(OPTIONAL)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.meta&#039;&#039;&#039;: custom meta data &#039;&#039;(OPTIONAL, meta data)&#039;&#039; &amp;lt;br/&amp;gt; A .meta field is a table of custom meta categories which each have custom meta properties. &amp;lt;br/&amp;gt; example: .meta = { [&amp;quot;Google video&amp;quot;] = { [&amp;quot;docid&amp;quot;] = &amp;quot;-5784010886294950089&amp;quot;; [&amp;quot;GVP version&amp;quot;] = &amp;quot;1.1&amp;quot; }; [&amp;quot;misc&amp;quot;] = { &amp;quot;Hello&amp;quot; = &amp;quot;World!&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
Invalid playlist items will be discarded by VLC.&lt;br /&gt;
&lt;br /&gt;
=== The vlc Lua object ===&lt;br /&gt;
VLC defines a global vlc object with the following members:&lt;br /&gt;
* &#039;&#039;&#039;vlc.path&#039;&#039;&#039;: the URL string (without the leading http:// or file:// element)&lt;br /&gt;
* &#039;&#039;&#039;vlc.access&#039;&#039;&#039;: the access used (&amp;quot;http&amp;quot; for &amp;lt;nowiki&amp;gt;http://,&amp;lt;/nowiki&amp;gt; &amp;quot;file&amp;quot; for file://, etc.)&lt;br /&gt;
* &#039;&#039;&#039;vlc.peek(&#039;&#039;&#039; &#039;&#039;&amp;lt;int&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: return the first &amp;lt;int&amp;gt; characters from the playlist file.&lt;br /&gt;
* &#039;&#039;&#039;vlc.read(&#039;&#039;&#039; &#039;&#039;&amp;lt;int&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: read &amp;lt;int&amp;gt; characters from the playlist file. &#039;&#039;&#039;THIS FUNCTION CANNOT BE USED IN peek().&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039;: return a new line of playlist data on each call. &#039;&#039;&#039;THIS FUNCTION CANNOT BE USED IN peek().&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vlc.decode_uri(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: decode %xy characters in a string.&lt;br /&gt;
* &#039;&#039;&#039;vlc.resolve_xml_special_chars(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: decode &amp;amp;abc; characters in a string.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_dbg(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print a debug message.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_warn(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print a warning message.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_err(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print an error message.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_info(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print an info message.&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usefull links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules&amp;diff=12298</id>
		<title>Documentation:Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules&amp;diff=12298"/>
		<updated>2008-08-24T21:01:48Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: add croppadd and canvas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
This page lists most of the modules present in the official VLC source code. Understanding these pages might require that you know about VLC and its command line usage. It is recommended that you read the other [[Documentation:Documentation|documentation]] first.&lt;br /&gt;
&lt;br /&gt;
To list all the available modules in your VLC build, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc --list&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To list a module&#039;s configuration options, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc -p &amp;lt;modulename&amp;gt; --advanced --help-verbose&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
=== Graphical ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/wxWidgets|wxWidgets]]&lt;br /&gt;
*[[Documentation:Modules/skins2|Skins2]]&lt;br /&gt;
*[[Documentation:Modules/Qt4|Qt4]]&lt;br /&gt;
*[[Documentation:Modules/macosx_gui|Mac OS X]]&lt;br /&gt;
*[[Documentation:Modules/beos_gui|BeOS]]&lt;br /&gt;
*[[Documentation:Modules/wince|Windows CE]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/rc|remote control (rc)]]&lt;br /&gt;
*[[Documentation:Modules/telnet|telnet]]&lt;br /&gt;
*[[Documentation:Modules/ncurses|ncurses]]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/http_intf|HTTP]]&lt;br /&gt;
*[[Documentation:Modules/hotkeys|Hotkeys]]&lt;br /&gt;
*[[Documentation:Modules/lirc|lirc]]&lt;br /&gt;
&lt;br /&gt;
== Outputs ==&lt;br /&gt;
&lt;br /&gt;
=== Audio Output ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/directx_aout|DirectX]]&lt;br /&gt;
*[[Documentation:Modules/waveout|waveout]]&lt;br /&gt;
*[[Documentation:Modules/portaudio|portaudio]]&lt;br /&gt;
*[[Documentation:Modules/sdl_aout|SDL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/auhal|AUHAL]]&lt;br /&gt;
*[[Documentation:Modules/jack|jack]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/alsa|Alsa]]&lt;br /&gt;
*[[Documentation:Modules/oss|OSS]]&lt;br /&gt;
*[[Documentation:Modules/arts|aRts]]&lt;br /&gt;
*[[Documentation:Modules/esd|esound]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/file_aout|file]]&lt;br /&gt;
&lt;br /&gt;
=== Video Output ===&lt;br /&gt;
*[[Documentation:Modules/direct3d|Direct3D]]&lt;br /&gt;
*[[Documentation:Modules/directx_vout|DirectX]]&lt;br /&gt;
*[[Documentation:Modules/wingdi|Windows GDI]]&lt;br /&gt;
*[[Documentation:Modules/glwin32|OpenGL for windows]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/opengl|OpenGL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/xvideo|XVideo]]&lt;br /&gt;
*[[Documentation:Modules/x11|X11]]&lt;br /&gt;
*[[Documentation:Modules/glx|OpenGL (GLX)]]&lt;br /&gt;
*[[Documentation:Modules/fb|Framebuffer]]&lt;br /&gt;
*[[Documentation:Modules/directfb|Direct framebuffer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/sdl_vout|SDL]]&lt;br /&gt;
*[[Documentation:Modules/caca|Colored ASCII Art]]&lt;br /&gt;
*[[Documentation:Modules/aa|ASCII Art]]&lt;br /&gt;
*[[Documentation:Modules/image|Image]]&lt;br /&gt;
&lt;br /&gt;
=== Stream Output ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/standard|Standard (std)]]&lt;br /&gt;
*[[Documentation:Modules/transcode|Transcode]]&lt;br /&gt;
*[[Documentation:Modules/duplicate|Duplicate]]&lt;br /&gt;
*[[Documentation:Modules/rtp|RTP]]&lt;br /&gt;
*[[Documentation:Modules/es|Elementary Stream (es)]]&lt;br /&gt;
*[[Documentation:Modules/display|Display]]&lt;br /&gt;
*[[Documentation:Modules/dummy_sout|Dummy]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/bridge-out|Bridge Out]]&lt;br /&gt;
*[[Documentation:Modules/bridge-in|Bridge In]]&lt;br /&gt;
*[[Documentation:Modules/mosaic-bridge|Mosaic Bridge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/autodel|Autodel]]&lt;br /&gt;
*[[Documentation:Modules/gather|Gather]]&lt;br /&gt;
*[[Documentation:Modules/description|Description]]&lt;br /&gt;
*[[Documentation:Modules/switcher|Switcher]]&lt;br /&gt;
*[[Documentation:Modules/transrate|Transrate]]&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
=== Video Filters ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/adjust|Adjust]]&lt;br /&gt;
*[[Documentation:Modules/gradient|Gradient]]&lt;br /&gt;
*[[Documentation:Modules/invert|Invert]]&lt;br /&gt;
*[[Documentation:Modules/wave|Wave]]&lt;br /&gt;
*[[Documentation:Modules/ripple|Ripple]]&lt;br /&gt;
*[[Documentation:Modules/motionblur|Motion Blur]]&lt;br /&gt;
*[[Documentation:Modules/psychedelic|Psychedelic]]&lt;br /&gt;
*[[Documentation:Modules/noise|Noise]]&lt;br /&gt;
*[[Documentation:Modules/colorthres|Color Threshold]]&lt;br /&gt;
*[[Documentation:Modules/rotate|Rotate]]&lt;br /&gt;
*[[Documentation:Modules/extract|Extract]]&lt;br /&gt;
*[[Documentation:Modules/erase|Logo Erase]]&lt;br /&gt;
*[[Documentation:Modules/gaussianblur|Gaussian Blur]]&lt;br /&gt;
*[[Documentation:Modules/sharpen|Sharpen]]&lt;br /&gt;
&lt;br /&gt;
The following video filters are for use in transcode only:&lt;br /&gt;
*[[Documentation:Modules/croppadd|Crop Padd]]&lt;br /&gt;
*[[Documentation:Modules/canvas|Canvas]]&lt;br /&gt;
&lt;br /&gt;
The following video filters are for use in the mosaic framework only:&lt;br /&gt;
*[[Documentation:Modules/bluescreen|Blue Screen]]&lt;br /&gt;
*[[Documentation:Modules/alphamask|Alpha mask]]&lt;br /&gt;
&lt;br /&gt;
=== Video Sub-Filters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/marq|Marq]]&lt;br /&gt;
*[[Documentation:Modules/rss|RSS]]&lt;br /&gt;
*[[Documentation:Modules/logo|Logo]]&lt;br /&gt;
*[[Documentation:Modules/mosaic|Mosaic]]&lt;br /&gt;
*[[Documentation:Modules/time|Time]] (up to 0.8.6)&lt;br /&gt;
&lt;br /&gt;
=== Video Output Filters ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/deinterlace|Deinterlace]]&lt;br /&gt;
*[[Documentation:Modules/transform|Transform]]&lt;br /&gt;
*[[Documentation:Modules/wall|Wall]]&lt;br /&gt;
*[[Documentation:Modules/crop|Crop]]&lt;br /&gt;
*[[Documentation:Modules/panoramix|Panoramix]]&lt;br /&gt;
*[[Documentation:Modules/clone|Clone]]&lt;br /&gt;
*[[Documentation:Modules/logo|Logo]]&lt;br /&gt;
*[[Documentation:Modules/magnify|Magnify]]&lt;br /&gt;
*[[Documentation:Modules/puzzle|Puzzle]]&lt;br /&gt;
*[[Documentation:Modules/distort|Distort]] (up to 0.8.6)&lt;br /&gt;
&lt;br /&gt;
=== Visualizations ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/visualizer|Visualizer]]&lt;br /&gt;
*[[Documentation:Modules/goom|Goom]]&lt;br /&gt;
*[[Documentation:Modules/galaktos|Galaktos]]&lt;br /&gt;
&lt;br /&gt;
=== Access Filters ===&lt;br /&gt;
*[[Documentation:Modules/timeshift|Timeshift]]&lt;br /&gt;
*[[Documentation:Modules/record|Record]]&lt;br /&gt;
*[[Documentation:Modules/dump|Dump]]&lt;br /&gt;
*[[Documentation:Modules/bandwidth|Bandwidth]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Accesses ===&lt;br /&gt;
*[[Documentation:Modules/file|File]]&lt;br /&gt;
*[[Documentation:Modules/directory|Directory]]&lt;br /&gt;
*[[Documentation:Modules/dvdnav|dvdnav]]&lt;br /&gt;
*[[Documentation:Modules/dvdread|dvdread]]&lt;br /&gt;
*[[Documentation:Modules/vcd|VCD]]&lt;br /&gt;
*[[Documentation:Modules/http|HTTP]]&lt;br /&gt;
*[[Documentation:Modules/ftp|FTP]]&lt;br /&gt;
*[[Documentation:Modules/udp|UDP/RTP]]&lt;br /&gt;
*[[Documentation:Modules/rtsp|RTSP]]&lt;br /&gt;
*[[Documentation:Modules/mms|MMS]]&lt;br /&gt;
*[[Documentation:Modules/screen|Screen]]&lt;br /&gt;
*[[Documentation:Modules/fake|Fake]]&lt;br /&gt;
Linux specific:&lt;br /&gt;
*[[Documentation:Modules/dv|DV]]&lt;br /&gt;
*[[Documentation:Modules/dvb|DVB]]&lt;br /&gt;
*[[Documentation:Modules/pvr|PVR]]&lt;br /&gt;
*[[Documentation:Modules/v4l|Video4Linux (v4l)]]&lt;br /&gt;
*[[Documentation:Modules/v4l2|Video4Linux2 (v4l2)]]&lt;br /&gt;
*[[Dc1394|Dc 1394]] FIXME: shouldn&#039;t link outside of Documentation:Modules/&lt;br /&gt;
Windows specific:&lt;br /&gt;
*[[Documentation:Modules/bda|BDA]]&lt;br /&gt;
*[[Documentation:Modules/dshow|DirectShow]]&lt;br /&gt;
&lt;br /&gt;
=== Access Outputs ===&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
==== Audio ====&lt;br /&gt;
==== Video ====&lt;br /&gt;
==== Subtitles ====&lt;br /&gt;
&lt;br /&gt;
=== Demuxers ===&lt;br /&gt;
==== Playlist ====&lt;br /&gt;
*[[Documentation:Modules/m3u-open|m3u]]&lt;br /&gt;
*[[Documentation:Modules/pls-open|pls]]&lt;br /&gt;
*[[Documentation:Modules/b4s-open|b4s]]&lt;br /&gt;
*[[Documentation:Modules/dvb-open|dvb]]&lt;br /&gt;
*[[Documentation:Modules/podcast|podcast]]&lt;br /&gt;
*[[Documentation:Modules/xspf-open|XSPF]]&lt;br /&gt;
*[[Documentation:Modules/shout-winamp|Winamp Shoutcast]]&lt;br /&gt;
*[[Documentation:Modules/asx-open|ASX]]&lt;br /&gt;
*[[Documentation:Modules/sgimb|sgimb]]&lt;br /&gt;
*[[Documentation:Modules/qtl|QTL]]&lt;br /&gt;
*[[Documentation:Modules/gvi|gvi]]&lt;br /&gt;
&lt;br /&gt;
=== Muxers ===&lt;br /&gt;
&lt;br /&gt;
=== Service Discovery ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/sap|SAP]]&lt;br /&gt;
*[[Documentation:Modules/shout|Shoutcast]]&lt;br /&gt;
*[[Documentation:Modules/podcast_sd|Podcast]]&lt;br /&gt;
*[[Documentation:Modules/hal|HAL]]&lt;br /&gt;
*[[Documentation:Modules/daap|DAAP]]&lt;br /&gt;
*[[Documentation:Modules/bonjour|Bonjour]]&lt;br /&gt;
*[[Documentation:Modules/upnp_intel|UPnP (intel)]]&lt;br /&gt;
*[[Documentation:Modules/upnp_cc|UPnP (cyberlink)]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
*[[Documentation:Modules/netsync|netsync]]&lt;br /&gt;
*[[Documentation:Modules/motion_control|motion control]]&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_HowTo/Make_a_mosaic&amp;diff=12297</id>
		<title>VLC HowTo/Make a mosaic</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_HowTo/Make_a_mosaic&amp;diff=12297"/>
		<updated>2008-08-24T14:31:34Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{howto| set up a mosaic of a few videos or stream like a TV portal}}&lt;br /&gt;
&lt;br /&gt;
==VLC mosaic howto==&lt;br /&gt;
&lt;br /&gt;
This is a small example about how to use {{VLC}} to create a mosaic. What we basically want is a video mosaic mixing 3 video channels (channels 1, 2 and 3) on a background image (background.png) and streaming the resulting video on the network. Note that we will also be streaming the 3 sound tracks from channels 1, 2 and 3 in the same mpeg-ts stream.&lt;br /&gt;
&lt;br /&gt;
Starting with VLC 0.8.5-test2, the http interface features a &amp;quot;Mosaic wizard&amp;quot;. You might want to use it if you have no knowledge of VLC command line usage.&lt;br /&gt;
&lt;br /&gt;
http://people.via.ecp.fr/~dionoea/videolan/mosaic1.png&lt;br /&gt;
&lt;br /&gt;
Other neat examples :&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mosaic2.jpg 12 video mosaic]&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mos1.png 20 video mosaic]&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mos2.png 20 video mosaic]&lt;br /&gt;
&lt;br /&gt;
===Step 0===&lt;br /&gt;
&lt;br /&gt;
Read the VLC streaming howto (chapters 3 and 5 concerning command line and vlm usage in VLC) : http://videolan.org/doc/&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
Get VLC 0.8.4-test1 or newer and install it on your computer.&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
You now have to get a background image. Many image formats are supported (JPEG, PNG ...).&lt;br /&gt;
&lt;br /&gt;
You can also test it with VLC to see if it displays locally :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./vlc --fake-file background.png --fake-aspect-ratio &amp;quot;4:3&amp;quot; fake:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Step 3===&lt;br /&gt;
&lt;br /&gt;
You now need to configure VLC to get the 3 source streams and blend them on the background image.&lt;br /&gt;
&lt;br /&gt;
The vlm configuration file looks like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new channel1 broadcast enabled                                                       &lt;br /&gt;
setup channel1 input udp://@239.255.2.60:1234                                        &lt;br /&gt;
setup channel1 output #duplicate{dst=mosaic-bridge{id=1,height=144,width=180},select=video,dst=bridge-out{id=1},select=audio}                                                         &lt;br /&gt;
                                                                                &lt;br /&gt;
new channel2 broadcast enabled&lt;br /&gt;
setup channel2 input udp://@239.255.10.200:1234&lt;br /&gt;
setup channel2 output #duplicate{dst=mosaic-bridge{id=2,height=144,width=180},select=video,dst=bridge-out{id=2},select=audio}                                                         &lt;br /&gt;
&lt;br /&gt;
new channel3 broadcast enabled&lt;br /&gt;
setup channel3 input udp://@239.255.6.9:1234&lt;br /&gt;
setup channel3 output #duplicate{dst=mosaic-bridge{id=3,height=144,width=180},select=video,dst=bridge-out{id=3},select=audio}                                                         &lt;br /&gt;
&lt;br /&gt;
new background broadcast enabled&lt;br /&gt;
setup background input fake:&lt;br /&gt;
setup background output #transcode{sfilter=mosaic,vcodec=mp2v,vb=10000,scale=1}:bridge-in{delay=400,id-offset=100}:standard{access=udp,mux=ts,url=239.255.12.42,sap,name=&amp;quot;mosaic&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
control background play&lt;br /&gt;
control channel1 play&lt;br /&gt;
control channel2 play&lt;br /&gt;
control channel3 play&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the source streams are network streams, which is likely to be the case if you&#039;re considering doing a mosaic.&lt;br /&gt;
&lt;br /&gt;
===Step 4===&lt;br /&gt;
&lt;br /&gt;
And now, the right command to launch vlc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./vlc --color -I telnet --vlm-conf ../mosaic.vlm.conf --ttl 12 \&lt;br /&gt;
 --fake-file background.png --fake-aspect-ratio &amp;quot;4:3&amp;quot; \&lt;br /&gt;
 --mosaic-width 360 --mosaic-height 288 --udp-caching 800 \&lt;br /&gt;
 --mosaic-keep-picture --mosaic-rows 2 --mosaic-cols 2 \&lt;br /&gt;
 --mosaic-position 1 --mosaic-order 1,2,3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other examples ==&lt;br /&gt;
&lt;br /&gt;
=== Dual webcam with alphamask ===&lt;br /&gt;
&lt;br /&gt;
http://people.videolan.org/~dionoea/mosaic/dual-webcam.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;new isight broadcast&lt;br /&gt;
setup isight input v4l2:///dev/video0:width=320:height=240:audio-method=0&lt;br /&gt;
setup isight option v4l2-brightness=90&lt;br /&gt;
setup isight output #mosaic-bridge{chroma=YUVA,vfilter=alphamask{mask=../mask.png},width=320,height=240}&lt;br /&gt;
setup isight enabled&lt;br /&gt;
&lt;br /&gt;
new logitech broadcast&lt;br /&gt;
setup logitech input v4l2:///dev/video1:width=640:height=480:audio-method=0&lt;br /&gt;
setup logitech output #transcode{vcodec=mp4v,vb=1024,sfilter=&amp;quot;mosaic:marq{marquee=&#039;VLC dual webcam setup&#039;,position=8}&amp;quot;}:bridge-in:display&lt;br /&gt;
setup logitech enabled&lt;br /&gt;
&lt;br /&gt;
new audio broadcast enabled&lt;br /&gt;
setup audio input v4l:///dev/dsp1&lt;br /&gt;
setup audio output #transcode{acodec=mp4a,ab=128}:bridge-out&lt;br /&gt;
&lt;br /&gt;
control isight play&lt;br /&gt;
#control audio play&lt;br /&gt;
control logitech play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then launch it with:&lt;br /&gt;
 vlc --vlm-conf ../dual-webcam.conf --no-media-library --plugin-path modules -v --no-video-title --mosaic-keep-picture&lt;br /&gt;
&lt;br /&gt;
The mask.png file is used to set transparency values on the isight camera (uses the png alpha plane). An example file to use is available at http://people.videolan.org/~dionoea/mosaic/.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://people.via.ecp.fr/~dionoea/videolan/mosaic-diagram.png Small Diagram That Might Help]&lt;br /&gt;
* [http://people.videolan.org/~dionoea/mosaic/ VLC Mosaic related resources]&lt;br /&gt;
* [[MosaicExampleSetup | Example set-up of conference web-streaming with two grabber cards]]&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
* [[Documentation:Modules/mosaic]]&lt;br /&gt;
* [[Documentation:Modules/mosaic-bridge]]&lt;br /&gt;
* [[Documentation:Modules/bridge-out]]&lt;br /&gt;
* [[Documentation:Modules/bridge-in]]&lt;br /&gt;
===Mosaic specific video filters===&lt;br /&gt;
* [[Documentation:Modules/alphamask]]&lt;br /&gt;
* [[Documentation:Modules/bluescreen]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_HowTo/Make_a_mosaic&amp;diff=12296</id>
		<title>VLC HowTo/Make a mosaic</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_HowTo/Make_a_mosaic&amp;diff=12296"/>
		<updated>2008-08-24T14:15:41Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Dual webcam with alphamask */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{howto| set up a mosaic of a few videos or stream like a TV portal}}&lt;br /&gt;
&lt;br /&gt;
==VLC mosaic howto==&lt;br /&gt;
&lt;br /&gt;
This is a small example about how to use {{VLC}} to create a mosaic. What we basically want is a video mosaic mixing 3 video channels (channels 1, 2 and 3) on a background image (background.png) and streaming the resulting video on the network. Note that we will also be streaming the 3 sound tracks from channels 1, 2 and 3 in the same mpeg-ts stream.&lt;br /&gt;
&lt;br /&gt;
Starting with VLC 0.8.5-test2, the http interface features a &amp;quot;Mosaic wizard&amp;quot;. You might want to use it if you have no knowledge of VLC command line usage.&lt;br /&gt;
&lt;br /&gt;
http://people.via.ecp.fr/~dionoea/videolan/mosaic1.png&lt;br /&gt;
&lt;br /&gt;
Other neat examples :&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mosaic2.jpg 12 video mosaic]&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mos1.png 20 video mosaic]&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mos2.png 20 video mosaic]&lt;br /&gt;
&lt;br /&gt;
===Step 0===&lt;br /&gt;
&lt;br /&gt;
Read the VLC streaming howto (chapters 3 and 5 concerning command line and vlm usage in VLC) : http://videolan.org/doc/&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
Get VLC 0.8.4-test1 or newer and install it on your computer.&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
You now have to get a background image. Many image formats are supported (JPEG, PNG ...).&lt;br /&gt;
&lt;br /&gt;
You can also test it with VLC to see if it displays locally :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./vlc --fake-file background.png --fake-aspect-ratio &amp;quot;4:3&amp;quot; fake:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Step 3===&lt;br /&gt;
&lt;br /&gt;
You now need to configure VLC to get the 3 source streams and blend them on the background image.&lt;br /&gt;
&lt;br /&gt;
The vlm configuration file looks like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new channel1 broadcast enabled                                                       &lt;br /&gt;
setup channel1 input udp://@239.255.2.60:1234                                        &lt;br /&gt;
setup channel1 output #duplicate{dst=mosaic-bridge{id=1,height=144,width=180},select=video,dst=bridge-out{id=1},select=audio}                                                         &lt;br /&gt;
                                                                                &lt;br /&gt;
new channel2 broadcast enabled&lt;br /&gt;
setup channel2 input udp://@239.255.10.200:1234&lt;br /&gt;
setup channel2 output #duplicate{dst=mosaic-bridge{id=2,height=144,width=180},select=video,dst=bridge-out{id=2},select=audio}                                                         &lt;br /&gt;
&lt;br /&gt;
new channel3 broadcast enabled&lt;br /&gt;
setup channel3 input udp://@239.255.6.9:1234&lt;br /&gt;
setup channel3 output #duplicate{dst=mosaic-bridge{id=3,height=144,width=180},select=video,dst=bridge-out{id=3},select=audio}                                                         &lt;br /&gt;
&lt;br /&gt;
new background broadcast enabled&lt;br /&gt;
setup background input fake:&lt;br /&gt;
setup background output #transcode{sfilter=mosaic,vcodec=mp2v,vb=10000,scale=1}:bridge-in{delay=400,id-offset=100}:standard{access=udp,mux=ts,url=239.255.12.42,sap,name=&amp;quot;mosaic&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
control background play&lt;br /&gt;
control channel1 play&lt;br /&gt;
control channel2 play&lt;br /&gt;
control channel3 play&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the source streams are network streams, which is likely to be the case if you&#039;re considering doing a mosaic.&lt;br /&gt;
&lt;br /&gt;
===Step 4===&lt;br /&gt;
&lt;br /&gt;
And now, the right command to launch vlc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./vlc --color -I telnet --vlm-conf ../mosaic.vlm.conf --ttl 12 \&lt;br /&gt;
 --fake-file background.png --fake-aspect-ratio &amp;quot;4:3&amp;quot; \&lt;br /&gt;
 --mosaic-width 360 --mosaic-height 288 --udp-caching 800 \&lt;br /&gt;
 --mosaic-keep-picture --mosaic-rows 2 --mosaic-cols 2 \&lt;br /&gt;
 --mosaic-position 1 --mosaic-order 1,2,3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other examples ==&lt;br /&gt;
&lt;br /&gt;
=== Dual webcam with alphamask ===&lt;br /&gt;
&lt;br /&gt;
http://people.videolan.org/~dionoea/mosaic/dual-webcam.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;new isight broadcast&lt;br /&gt;
setup isight input v4l2:///dev/video0:width=320:height=240:audio-method=0&lt;br /&gt;
setup isight option v4l2-brightness=90&lt;br /&gt;
setup isight output #mosaic-bridge{chroma=YUVA,vfilter=alphamask{mask=../mask.png},width=320,height=240}&lt;br /&gt;
setup isight enabled&lt;br /&gt;
&lt;br /&gt;
new logitech broadcast&lt;br /&gt;
setup logitech input v4l2:///dev/video1:width=640:height=480:audio-method=0&lt;br /&gt;
setup logitech output #transcode{vcodec=mp4v,vb=1024,sfilter=&amp;quot;mosaic:marq{marquee=&#039;VLC dual webcam setup&#039;,position=8}&amp;quot;}:bridge-in:display&lt;br /&gt;
setup logitech enabled&lt;br /&gt;
&lt;br /&gt;
new audio broadcast enabled&lt;br /&gt;
setup audio input v4l:///dev/dsp1&lt;br /&gt;
setup audio output #transcode{acodec=mp4a,ab=128}:bridge-out&lt;br /&gt;
&lt;br /&gt;
control isight play&lt;br /&gt;
#control audio play&lt;br /&gt;
control logitech play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then launch it with:&lt;br /&gt;
 vlc --vlm-conf ../dual-webcam.conf --no-media-library --plugin-path modules -v --no-video-title --mosaic-keep-picture&lt;br /&gt;
&lt;br /&gt;
The mask.png file is used to set transparency values on the isight camera (uses the png alpha plane). An example file to use is available at http://people.videolan.org/~dionoea/mosaic/.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://people.via.ecp.fr/~dionoea/videolan/mosaic-diagram.png Small Diagram That Might Help]&lt;br /&gt;
* [http://people.videolan.org/~dionoea/mosaic/ VLC Mosaic related resources]&lt;br /&gt;
* [[MosaicExampleSetup | Example set-up of conference web-streaming with two grabber cards]]&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
* [[Documentation:Modules/mosaic]]&lt;br /&gt;
* [[Documentation:Modules/mosaic-bridge]]&lt;br /&gt;
* [[Documentation:Modules/bridge-out]]&lt;br /&gt;
* [[Documentation:Modules/bridge-in]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_HowTo/Make_a_mosaic&amp;diff=12295</id>
		<title>VLC HowTo/Make a mosaic</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_HowTo/Make_a_mosaic&amp;diff=12295"/>
		<updated>2008-08-24T14:13:32Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{howto| set up a mosaic of a few videos or stream like a TV portal}}&lt;br /&gt;
&lt;br /&gt;
==VLC mosaic howto==&lt;br /&gt;
&lt;br /&gt;
This is a small example about how to use {{VLC}} to create a mosaic. What we basically want is a video mosaic mixing 3 video channels (channels 1, 2 and 3) on a background image (background.png) and streaming the resulting video on the network. Note that we will also be streaming the 3 sound tracks from channels 1, 2 and 3 in the same mpeg-ts stream.&lt;br /&gt;
&lt;br /&gt;
Starting with VLC 0.8.5-test2, the http interface features a &amp;quot;Mosaic wizard&amp;quot;. You might want to use it if you have no knowledge of VLC command line usage.&lt;br /&gt;
&lt;br /&gt;
http://people.via.ecp.fr/~dionoea/videolan/mosaic1.png&lt;br /&gt;
&lt;br /&gt;
Other neat examples :&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mosaic2.jpg 12 video mosaic]&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mos1.png 20 video mosaic]&lt;br /&gt;
&lt;br /&gt;
[http://people.via.ecp.fr/~dionoea/videolan/mos2.png 20 video mosaic]&lt;br /&gt;
&lt;br /&gt;
===Step 0===&lt;br /&gt;
&lt;br /&gt;
Read the VLC streaming howto (chapters 3 and 5 concerning command line and vlm usage in VLC) : http://videolan.org/doc/&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
Get VLC 0.8.4-test1 or newer and install it on your computer.&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
You now have to get a background image. Many image formats are supported (JPEG, PNG ...).&lt;br /&gt;
&lt;br /&gt;
You can also test it with VLC to see if it displays locally :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./vlc --fake-file background.png --fake-aspect-ratio &amp;quot;4:3&amp;quot; fake:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Step 3===&lt;br /&gt;
&lt;br /&gt;
You now need to configure VLC to get the 3 source streams and blend them on the background image.&lt;br /&gt;
&lt;br /&gt;
The vlm configuration file looks like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new channel1 broadcast enabled                                                       &lt;br /&gt;
setup channel1 input udp://@239.255.2.60:1234                                        &lt;br /&gt;
setup channel1 output #duplicate{dst=mosaic-bridge{id=1,height=144,width=180},select=video,dst=bridge-out{id=1},select=audio}                                                         &lt;br /&gt;
                                                                                &lt;br /&gt;
new channel2 broadcast enabled&lt;br /&gt;
setup channel2 input udp://@239.255.10.200:1234&lt;br /&gt;
setup channel2 output #duplicate{dst=mosaic-bridge{id=2,height=144,width=180},select=video,dst=bridge-out{id=2},select=audio}                                                         &lt;br /&gt;
&lt;br /&gt;
new channel3 broadcast enabled&lt;br /&gt;
setup channel3 input udp://@239.255.6.9:1234&lt;br /&gt;
setup channel3 output #duplicate{dst=mosaic-bridge{id=3,height=144,width=180},select=video,dst=bridge-out{id=3},select=audio}                                                         &lt;br /&gt;
&lt;br /&gt;
new background broadcast enabled&lt;br /&gt;
setup background input fake:&lt;br /&gt;
setup background output #transcode{sfilter=mosaic,vcodec=mp2v,vb=10000,scale=1}:bridge-in{delay=400,id-offset=100}:standard{access=udp,mux=ts,url=239.255.12.42,sap,name=&amp;quot;mosaic&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
control background play&lt;br /&gt;
control channel1 play&lt;br /&gt;
control channel2 play&lt;br /&gt;
control channel3 play&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the source streams are network streams, which is likely to be the case if you&#039;re considering doing a mosaic.&lt;br /&gt;
&lt;br /&gt;
===Step 4===&lt;br /&gt;
&lt;br /&gt;
And now, the right command to launch vlc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./vlc --color -I telnet --vlm-conf ../mosaic.vlm.conf --ttl 12 \&lt;br /&gt;
 --fake-file background.png --fake-aspect-ratio &amp;quot;4:3&amp;quot; \&lt;br /&gt;
 --mosaic-width 360 --mosaic-height 288 --udp-caching 800 \&lt;br /&gt;
 --mosaic-keep-picture --mosaic-rows 2 --mosaic-cols 2 \&lt;br /&gt;
 --mosaic-position 1 --mosaic-order 1,2,3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other examples ==&lt;br /&gt;
&lt;br /&gt;
=== Dual webcam with alphamask ===&lt;br /&gt;
&amp;lt;pre&amp;gt;new isight broadcast&lt;br /&gt;
setup isight input v4l2:///dev/video0:width=320:height=240:audio-method=0&lt;br /&gt;
setup isight option v4l2-brightness=90&lt;br /&gt;
setup isight output #mosaic-bridge{chroma=YUVA,vfilter=alphamask{mask=../mask.png},width=320,height=240}&lt;br /&gt;
setup isight enabled&lt;br /&gt;
&lt;br /&gt;
new logitech broadcast&lt;br /&gt;
setup logitech input v4l2:///dev/video1:width=640:height=480:audio-method=0&lt;br /&gt;
setup logitech output #transcode{vcodec=mp4v,vb=1024,sfilter=&amp;quot;mosaic:marq{marquee=&#039;VLC dual webcam setup&#039;,position=8}&amp;quot;}:bridge-in:display&lt;br /&gt;
setup logitech enabled&lt;br /&gt;
&lt;br /&gt;
new audio broadcast enabled&lt;br /&gt;
setup audio input v4l:///dev/dsp1&lt;br /&gt;
setup audio output #transcode{acodec=mp4a,ab=128}:bridge-out&lt;br /&gt;
&lt;br /&gt;
control isight play&lt;br /&gt;
#control audio play&lt;br /&gt;
control logitech play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then launch it with:&lt;br /&gt;
 vlc --vlm-conf ../dual-webcam.conf --no-media-library --plugin-path modules -v --no-video-title --mosaic-keep-picture&lt;br /&gt;
&lt;br /&gt;
The mask.png file is used to set transparency values on the isight camera (uses the png alpha plane). An example file to use is available at http://people.videolan.org/~dionoea/mosaic/.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://people.via.ecp.fr/~dionoea/videolan/mosaic-diagram.png Small Diagram That Might Help]&lt;br /&gt;
* [http://people.videolan.org/~dionoea/mosaic/ VLC Mosaic related resources]&lt;br /&gt;
* [[MosaicExampleSetup | Example set-up of conference web-streaming with two grabber cards]]&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
* [[Documentation:Modules/mosaic]]&lt;br /&gt;
* [[Documentation:Modules/mosaic-bridge]]&lt;br /&gt;
* [[Documentation:Modules/bridge-out]]&lt;br /&gt;
* [[Documentation:Modules/bridge-in]]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11898</id>
		<title>SoC 2008 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008_projects&amp;diff=11898"/>
		<updated>2008-06-16T18:18:24Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* Panorama Viewing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2OO8.&lt;br /&gt;
&lt;br /&gt;
You can see how good the student do on their project on [[SoC_2008/Student_Tracking]].&lt;br /&gt;
&lt;br /&gt;
= List of current VLC projects =&lt;br /&gt;
&lt;br /&gt;
== Panorama Viewing ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/PanoramaViewing]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Plouj|Michael Ploujnikov]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Yuval Levy, [[User:J-b|Jean-Baptiste Kempf]], [[User:Dionoea|Antoine Cellerier]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: The goal of this project is to make VLC a one-stop solution for viewing panoramas of various formats. Currently, FreePV is the best/only cross-platform, non-proprietary solution for viewing QuickTimeVR and plain image panoramas. However it suffers from a few drawbacks, which include difficult installation, browser plug-in conflicts and low popularity. The intent is to integrate the FreePV rendering code with VLC. This should not only automatically alleviate installation difficulty and plug-in conflicts, but also bring panorama viewing to a much larger audience. This project will initially focus on basic support for QTVR files and equirectangular images.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This project has been discontinued.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt improvements ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Qt improvements]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: Lukas Durfina&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: In my project I should do fullscreen controller, backend for Phonon and playlist improvements. FS controller have to be clickable, dragable with all VLC functionality. Phonon backend will help spread VLC and support its using by other developers. And finally I will upgrade playlist, fix and update DragAndDrop and other bugs.&lt;br /&gt;
&lt;br /&gt;
== Enhance PVR capabilities of VLC ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/Enhance PVR capabilities of VLC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Dylan|Dylan Yudaken]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Pdherbemont|Pierre d&#039;Herbemont]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: VLC has fast become one of the most common video players available for &#039;non-technical&#039; users. The ability to watch streams easily and efficiently is a huge advantage for VLC. The ability to timeshift streams has been added to the latest unstable builds, however it is vastly underfeatured and not nearly ready for release. The features would enhance VLC to a new level which would allow a new set of users to use it.&lt;br /&gt;
&lt;br /&gt;
: I propose to extend &amp;amp; improve the PVR capabilities of VLC. The current version is severely lacking in functionality and performance. There is a very basic timeshift capability already. To this I will add the ability to randomly seek through the buffer (fast forward, rewind, etc ). The ability to save buffers and continue recording to the new file will be added. These recordings will be in any chosen format. These features will help anyone who uses VLC to watch TV shows to easily turn their client into a MythTV/Media Centre style client.  &lt;br /&gt;
: I will tie the module in with the user interface properly so that the state of the buffer and the current position can be easily seen. &lt;br /&gt;
: I then plan to begin work on a framework that combines all of these features into a simple interface easily accessible with a remote control. The interface will combine VLM and the media library into a single easily accesible place. The interface will have the ability to &#039;talk&#039; to the server sending commands such as changing tv channel or switching input source.&lt;br /&gt;
&lt;br /&gt;
: With this and the completion of VLM and the playlist managing system VLC will have the capabilities to become a fully featured PVR system with the massive advantage of it being run off a streaming server if need be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WinCE Port ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/WinCE Port]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Geal|Geoffroy Couprie]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Jérôme Decoodt&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
:The VLC media player has been port to many different platforms, but it lacks Windows CE support since some versions. This project aims at making VLC work on a Windows CE platform, with a few features:&lt;br /&gt;
:*RTSP&lt;br /&gt;
:*H264&lt;br /&gt;
:*Snapshots&lt;br /&gt;
:*Playlist&lt;br /&gt;
:*Rebuild of interface to adapt it to small screens&lt;br /&gt;
&lt;br /&gt;
== Create a new VLC interface for Maemo (internet tablet) ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/New VLC interface for Maemo]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Phytos|Antoine Lejeune]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:funman|Rafaël Carré]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
: The goal is to create a new interface for VLC with Maemo, a Debian-based development platform for handheld devices used by Nokia N800 and N810 devices and to package VLC for this platform.&lt;br /&gt;
: The main constraint are the small size of the screen which means the GUI must be thought specifically for this platform and the fact that the devices is not very powerful.&lt;br /&gt;
&lt;br /&gt;
== DLNA UPnP A/V integration ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/UPnP]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Mr_Mirsal|Mirsal Ennaime]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:funman|Rafaël Carré]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
  Even if it is controverted, UPnP A/V Is a widely used standard set of protocols for networked digital &lt;br /&gt;
  audio and video equipment interoperability, thus making it almost a requirement digital media software &lt;br /&gt;
  that aim to become real part of the average multimedia home network. This project aims to implement &lt;br /&gt;
  at least the Media Server part in VLC media player, which will enable it to advertise and stream media &lt;br /&gt;
  to DNLA UPnP A/V enabled devices, such as the PlayStation 3.&lt;br /&gt;
&lt;br /&gt;
== MTP Devices Support ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/MTP]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Sephiroth87|Fabio Ritrovato]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Dionoea|Antoine Cellerier]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:As MTP (Media Transfer Protocol) devices become more and more popular, and the protocol itself is about to become a standard, using them is still a problem for some people, since they cannot be mounted or opened  as disks, but can be natively used only on Vista and Windows XP with WMP10, or using other programs.&lt;br /&gt;
:Adding the MTP support to VLC would not only give the opportunity to use these device on almost every platform, but also allow to have a free, open source and largely diffuse program to manage them.&lt;br /&gt;
:My work on the MTP support will enable VLC not only to play music from the device, but also to add new music, manage the content of the device, edit tags, playlists and anything else that would be needed by an Mp3 player user.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X (Leopard) Integration ==&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2008/OS X Integration]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:dudiak|Eric Dudiak]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Fkuehne|Felix Paul Kühne]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:Unlike Windows and Linux, Mac OS X does not offer much in terms of alternatives to its built-in QuickTime media player. VLC media player represents the only Mac media player with significant support for various media formats and a tight integration with the OS, including a &amp;quot;Mac-like&amp;quot; user interface. As it is the only full, viable alternative to QuickTime on the Mac OS X platform, it is important that it stay current with various Mac technologies to offer users a comprehensive option for media playback.&lt;br /&gt;
&lt;br /&gt;
:Aspects of tighter Mac OS X integration:&lt;br /&gt;
:*Quick Look Generator for Leopard (to generate thumbnails and full media previews from the Finder)&lt;br /&gt;
:*Making most common preferences accessible in a Mac-style preference window organized with icon tabs across the top such as in Safari and Mail.&lt;br /&gt;
:*Moving the Readme document and other help resources into a HelpViewer HTML document to allow better help searching in Leopard.&lt;br /&gt;
:*Improvements in steaming server wizard to be more in-line with other Mac wizards and easier to use for personal streaming between Macs.&lt;br /&gt;
:*Add better support for package files that contain media VLC can play, such as iMovie Projects and EyeTV recordings.&lt;br /&gt;
:*Update the VLC file icons to the 512 by 512 size for Leopard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vista Enhanced Video Renderer output module  ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC_2008/EVR_video_output_module]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:VLC_help|Kaarlo Räihä]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Atmo|André Weber]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: EVR (Enhanced Video Renderer) is new video renderer that came with Windows Vista. Goal of this project is to implement EVR video output module for VLC media player. EVR will hopefully be default video output module for Windows Vista but it might also work with Windows XP if the .NET Framework 3.0 is installed. EVR should guarantee tearing free output that also works with Aero. It should also be more compatible with different display adapters (or driver versions) and that way hopefully end problems that certain people have with their video watching. &lt;br /&gt;
&lt;br /&gt;
: If there will be some extra time (EVR finishes early), I will try to add some features to Direct3D output module (shaders, rotating video etc.)&lt;br /&gt;
&lt;br /&gt;
= List of current x264 projects =&lt;br /&gt;
&lt;br /&gt;
== Macroblock tree ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC_2008/x264/Macroblock_tree]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Kuukunen|Aki Jäntti]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Alex Izvorski&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
: The basic idea of a &amp;quot;macroblock tree&amp;quot; is to keep track of macroblock references to try to figure out which macroblocks are the most important. This information can be used for deciding the quantizers for frames or even individual macroblocks.&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Dionoea&amp;diff=11798</id>
		<title>User:Dionoea</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Dionoea&amp;diff=11798"/>
		<updated>2008-06-04T22:46:29Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* My VideoLAN to do list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Antoine Cellerier&lt;br /&gt;
&lt;br /&gt;
Contact me: dionoea on irc.freenode.net #videolan&lt;br /&gt;
([http://dionoea.chewa.net/irc/videolan #videolan IRC logs since March 2004])&lt;br /&gt;
&lt;br /&gt;
My vlc compilation scripts are available online: http://people.videolan.org/~dionoea/config/ .&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/Dionoea|My contributions to this wiki]]&lt;br /&gt;
&lt;br /&gt;
== My VLC to do list ==&lt;br /&gt;
&lt;br /&gt;
For 0.9.0:&lt;br /&gt;
* finish the video filter2 transition (core + interface).&lt;br /&gt;
* clean up the motion detection plugin code + add VLM callbacks when motion is detected.&lt;br /&gt;
* help with the Qt interface.&lt;br /&gt;
* fix the marq/logo callbacks in the RC interface. &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;br /&gt;
Other stuff I&#039;m thinking about:&lt;br /&gt;
* my secret project (can&#039;t tell you what that is yet ... sorry).&lt;br /&gt;
* erase video filter2 to remove logos from a live stream. &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;br /&gt;
* change hotkeys handling in VLC (from 1 action -&amp;gt; 1 key to 1 key -&amp;gt; 1 action). Would make it possible to have multiple hotkeys for 1 action.&lt;br /&gt;
* add DVD menu controls to the HTTP interface (using hotkey simulations from the HTTP interface code ... or maybe something cleaner).&lt;br /&gt;
* improve the HTTP interface&#039;s Flash plugin page. Add a page using the VLC plugin (both IE and Mozilla).&lt;br /&gt;
* subtitles support in the ffmpeg muxer.&lt;br /&gt;
&lt;br /&gt;
Code I have lying around which might need to be commited one day:&lt;br /&gt;
* cache access filter (not finished). Basic idea was to read as much data as possible from the hard drive (or a DVD drive) and put it in RAM to lower battery usage (and noise) in VLC. Maybe we&#039;d need to implement that directly in the VLC core ... and maybe it&#039;s even already available using some obscure command line option. I&#039;ll have to ask fenrir about that.&lt;br /&gt;
* VLC screen saver on win32.&lt;br /&gt;
* Start of native windows (XP(?)) remote control handling code on win32.&lt;br /&gt;
&lt;br /&gt;
== My VideoLAN to do list ==&lt;br /&gt;
&lt;br /&gt;
* add country detection to our mirrors script (using mod_geoip from [http://www.maxmind.com maxmind] ? Test page available [http://dionoea.chewa.net/geoip.php here]). &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;br /&gt;
* install punBB with [[User:J-b]] to offload Ganesh. &#039;&#039;&#039;Not needed since phpBB 3 works far better&#039;&#039;&#039;&lt;br /&gt;
* move the last 2 pages from the [http://www.videolan.org/doc/ documentation] to the [[Documentation:Documentation|wiki]] and start updating it. &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Dionoea&amp;diff=11797</id>
		<title>User:Dionoea</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Dionoea&amp;diff=11797"/>
		<updated>2008-06-04T22:45:08Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Antoine Cellerier&lt;br /&gt;
&lt;br /&gt;
Contact me: dionoea on irc.freenode.net #videolan&lt;br /&gt;
([http://dionoea.chewa.net/irc/videolan #videolan IRC logs since March 2004])&lt;br /&gt;
&lt;br /&gt;
My vlc compilation scripts are available online: http://people.videolan.org/~dionoea/config/ .&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/Dionoea|My contributions to this wiki]]&lt;br /&gt;
&lt;br /&gt;
== My VLC to do list ==&lt;br /&gt;
&lt;br /&gt;
For 0.9.0:&lt;br /&gt;
* finish the video filter2 transition (core + interface).&lt;br /&gt;
* clean up the motion detection plugin code + add VLM callbacks when motion is detected.&lt;br /&gt;
* help with the Qt interface.&lt;br /&gt;
* fix the marq/logo callbacks in the RC interface. &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;br /&gt;
Other stuff I&#039;m thinking about:&lt;br /&gt;
* my secret project (can&#039;t tell you what that is yet ... sorry).&lt;br /&gt;
* erase video filter2 to remove logos from a live stream. &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;br /&gt;
* change hotkeys handling in VLC (from 1 action -&amp;gt; 1 key to 1 key -&amp;gt; 1 action). Would make it possible to have multiple hotkeys for 1 action.&lt;br /&gt;
* add DVD menu controls to the HTTP interface (using hotkey simulations from the HTTP interface code ... or maybe something cleaner).&lt;br /&gt;
* improve the HTTP interface&#039;s Flash plugin page. Add a page using the VLC plugin (both IE and Mozilla).&lt;br /&gt;
* subtitles support in the ffmpeg muxer.&lt;br /&gt;
&lt;br /&gt;
Code I have lying around which might need to be commited one day:&lt;br /&gt;
* cache access filter (not finished). Basic idea was to read as much data as possible from the hard drive (or a DVD drive) and put it in RAM to lower battery usage (and noise) in VLC. Maybe we&#039;d need to implement that directly in the VLC core ... and maybe it&#039;s even already available using some obscure command line option. I&#039;ll have to ask fenrir about that.&lt;br /&gt;
* VLC screen saver on win32.&lt;br /&gt;
* Start of native windows (XP(?)) remote control handling code on win32.&lt;br /&gt;
&lt;br /&gt;
== My VideoLAN to do list ==&lt;br /&gt;
&lt;br /&gt;
* add country detection to our mirrors script (using mod_geoip from [http://www.maxmind.com maxmind] ? Test page available [http://dionoea.chewa.net/geoip.php here]).&lt;br /&gt;
* install punBB with [[User:J-b]] to offload Ganesh.&lt;br /&gt;
* move the last 2 pages from the [http://www.videolan.org/doc/ documentation] to the [[Documentation:Documentation|wiki]] and start updating it. &#039;&#039;&#039;Done&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Format_String&amp;diff=11668</id>
		<title>Documentation:Format String</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Format_String&amp;diff=11668"/>
		<updated>2008-05-26T09:10:24Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Add missing $f variable.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
Starting with [[VLC media player]] 0.9.0, format string variables can be used with the following options:&lt;br /&gt;
* --marq-marquee&lt;br /&gt;
* --snapshot-path (when specifying a full image path, not a directory)&lt;br /&gt;
* --snapshot-prefix&lt;br /&gt;
* --image-out-prefix&lt;br /&gt;
* --msn-format (windows only)&lt;br /&gt;
* file access output dst/url (like in std{access=file,mux=ts,dst=&#039;&#039;&#039;THIS&#039;&#039;&#039;})&lt;br /&gt;
&lt;br /&gt;
There are two kinds of format string variables: time variables and meta variables.&lt;br /&gt;
&lt;br /&gt;
==Time==&lt;br /&gt;
&lt;br /&gt;
Time variables are those defined by the &#039;&#039;&#039;strftime&#039;&#039;&#039; C function. Those include:&lt;br /&gt;
* %Y : year&lt;br /&gt;
* %m : month&lt;br /&gt;
* %d : day&lt;br /&gt;
* %H : hour&lt;br /&gt;
* %M : minute&lt;br /&gt;
* %s : second&lt;br /&gt;
For an extensive list have a look at [http://www.hmug.org/man/3/strftime.php man strftime].&lt;br /&gt;
&lt;br /&gt;
==Meta==&lt;br /&gt;
&lt;br /&gt;
Meta variables are VLC specific. The complete list is:&lt;br /&gt;
* $a : artist&lt;br /&gt;
* $b : album&lt;br /&gt;
* $c : copyright&lt;br /&gt;
* $d : description&lt;br /&gt;
* $e : encoded by&lt;br /&gt;
* $f : frame count&lt;br /&gt;
* $g : genre&lt;br /&gt;
* $l : language&lt;br /&gt;
* $n : track num&lt;br /&gt;
* $p : now playing&lt;br /&gt;
* $r : rating&lt;br /&gt;
* $s : subtitles language&lt;br /&gt;
* $t : title&lt;br /&gt;
* $u : url&lt;br /&gt;
* $A : date&lt;br /&gt;
* $B : audio bitrate (in kb/s)&lt;br /&gt;
* $C : chapter&lt;br /&gt;
* $D : duration&lt;br /&gt;
* $F : full name with path&lt;br /&gt;
* $I : title&lt;br /&gt;
* $L : time left&lt;br /&gt;
* $N : name&lt;br /&gt;
* $O : audio language&lt;br /&gt;
* $P : position (in %)&lt;br /&gt;
* $R : rate&lt;br /&gt;
* $S : audio sample rate (in kHz)&lt;br /&gt;
* $T : time&lt;br /&gt;
* $U : publisher&lt;br /&gt;
* $V : volume&lt;br /&gt;
* $_ : new line&lt;br /&gt;
* $&amp;lt;any other char&amp;gt; : &amp;lt;any other char&amp;gt; (for example: $$ transforms to $)&lt;br /&gt;
&lt;br /&gt;
You can insert a space between the $ sign and the character to tell it to not display anything if the meta data isn&#039;t available. For example: $ T instead will display &amp;quot;&amp;quot; if no time is available while $T would display &amp;quot;--:--:--&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Git&amp;diff=11499</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Git&amp;diff=11499"/>
		<updated>2008-05-07T14:02:04Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Comment GSoC 2007 specific instructions.&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/. Type&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;
== Configure your global git config ==&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 too 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 ther same things you are working on, want to refresh yourself (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&#039;ve reached a step in developement you can commit &#039;&#039;&#039;locally&#039;&#039;&#039; your work by&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;
&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 commit 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;
which will produce the patches for each local commit in the directory &amp;quot;patches&amp;quot; and send them.&lt;br /&gt;
--no-chain-reply-to make sure it doesn&#039;t reply 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 :&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;
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 you are 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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=11163</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=11163"/>
		<updated>2008-04-02T21:49:03Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Sync with 4ad218c25fb08d55b944e1c78c20cb96492f6267&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Lets say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the begining of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.probe( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.probe(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other usefull meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in miliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
=== VLC Lua playlist script ===&lt;br /&gt;
VLC Lua playlist modules should define two functions:&lt;br /&gt;
* &#039;&#039;&#039;probe()&#039;&#039;&#039;: returns true if we want to handle the playlist in this script&lt;br /&gt;
* &#039;&#039;&#039;parse()&#039;&#039;&#039;: read the incoming data and return playlist item(s)&lt;br /&gt;
&lt;br /&gt;
The playlist is a table of playlist objects.&lt;br /&gt;
A playlist object has the following members:&lt;br /&gt;
* &#039;&#039;&#039;.path&#039;&#039;&#039;: the item&#039;s full path / URL&lt;br /&gt;
* &#039;&#039;&#039;.name&#039;&#039;&#039;: the item&#039;s name in playlist &#039;&#039;(OPTIONAL)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.title&#039;&#039;&#039;: the item&#039;s Title &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.artist&#039;&#039;&#039;: the item&#039;s Artist &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.genre&#039;&#039;&#039;: the item&#039;s Genre &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.copyright&#039;&#039;&#039;: the item&#039;s Copyright &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.album&#039;&#039;&#039;: the item&#039;s Album &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.tracknum&#039;&#039;&#039;: the item&#039;s Tracknum &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.description&#039;&#039;&#039;: the item&#039;s Description &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.rating&#039;&#039;&#039;: the item&#039;s Rating &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.date&#039;&#039;&#039;: the item&#039;s Date &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.setting&#039;&#039;&#039;: the item&#039;s Setting &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.url&#039;&#039;&#039;: the item&#039;s URL &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.language&#039;&#039;&#039;: the item&#039;s Language &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.nowplaying&#039;&#039;&#039;: the item&#039;s NowPlaying &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.publisher&#039;&#039;&#039;: the item&#039;s Publisher &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.encodedby&#039;&#039;&#039;: the item&#039;s EncodedBy &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.arturl&#039;&#039;&#039;: the item&#039;s ArtURL &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.trackid&#039;&#039;&#039;: the item&#039;s TrackID &#039;&#039;(OPTIONAL, meta data)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.options&#039;&#039;&#039;: a list of VLC options &#039;&#039;(OPTIONAL)&#039;&#039; &amp;lt;br/&amp;gt; example: .options = { &amp;quot;fullscreen&amp;quot; }&lt;br /&gt;
* &#039;&#039;&#039;.duration&#039;&#039;&#039;: stream duration in seconds &#039;&#039;(OPTIONAL)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;.meta&#039;&#039;&#039;: custom meta data &#039;&#039;(OPTIONAL, meta data)&#039;&#039; &amp;lt;br/&amp;gt; A .meta field is a table of custom meta categories which each have custom meta properties. &amp;lt;br/&amp;gt; example: .meta = { [&amp;quot;Google video&amp;quot;] = { [&amp;quot;docid&amp;quot;] = &amp;quot;-5784010886294950089&amp;quot;; [&amp;quot;GVP version&amp;quot;] = &amp;quot;1.1&amp;quot; }; [&amp;quot;misc&amp;quot;] = { &amp;quot;Hello&amp;quot; = &amp;quot;World!&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
Invalid playlist items will be discarded by VLC.&lt;br /&gt;
&lt;br /&gt;
=== The vlc Lua object ===&lt;br /&gt;
VLC defines a global vlc object with the following members:&lt;br /&gt;
* &#039;&#039;&#039;vlc.path&#039;&#039;&#039;: the URL string (without the leading http:// or file:// element)&lt;br /&gt;
* &#039;&#039;&#039;vlc.access&#039;&#039;&#039;: the access used (&amp;quot;http&amp;quot; for &amp;lt;nowiki&amp;gt;http://,&amp;lt;/nowiki&amp;gt; &amp;quot;file&amp;quot; for file://, etc.)&lt;br /&gt;
* &#039;&#039;&#039;vlc.peek(&#039;&#039;&#039; &#039;&#039;&amp;lt;int&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: return the first &amp;lt;int&amp;gt; characters from the playlist file.&lt;br /&gt;
* &#039;&#039;&#039;vlc.read(&#039;&#039;&#039; &#039;&#039;&amp;lt;int&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: read &amp;lt;int&amp;gt; characters from the playlist file. &#039;&#039;&#039;THIS FUNCTION CANNOT BE USED IN peek().&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039;: return a new line of playlist data on each call. &#039;&#039;&#039;THIS FUNCTION CANNOT BE USED IN peek().&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vlc.decode_uri(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: decode %xy characters in a string.&lt;br /&gt;
* &#039;&#039;&#039;vlc.resolve_xml_special_chars(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: decode &amp;amp;abc; characters in a string.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_dbg(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print a debug message.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_warn(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print a warning message.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_err(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print an error message.&lt;br /&gt;
* &#039;&#039;&#039;vlc.msg_info(&#039;&#039;&#039; &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039;: print an info message.&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usefull links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;/div&gt;</summary>
		<author><name>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11114</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=11114"/>
		<updated>2008-03-25T12:58:27Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: &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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11113</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=11113"/>
		<updated>2008-03-25T12:56:13Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Undo revision 11106 by Dionoea (Talk)&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
Someone has already began it on the forum, so start from there.	 &lt;br /&gt;
kenS has &#039;&#039;&#039;begun&#039;&#039;&#039; it, but no code has yet been produced today - [[User:J-b|jb]] 01:56, 8 March 2007 (CET)	 &lt;br /&gt;
Contact before starting it !!!	 &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 updated by Richard Hosking		 &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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11112</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=11112"/>
		<updated>2008-03-25T12:55:57Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Undo revision 11107 by Dionoea (Talk)&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
Someone has already began it on the forum, so start from there.	 &lt;br /&gt;
kenS has &#039;&#039;&#039;begun&#039;&#039;&#039; it, but no code has yet been produced today - [[User:J-b|jb]] 01:56, 8 March 2007 (CET)	 &lt;br /&gt;
Contact before starting it !!!	 &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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11111</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=11111"/>
		<updated>2008-03-25T12:55:29Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Undo revision 11108 by Dionoea (Talk)&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
Someone has already began it on the forum, so start from there.	 &lt;br /&gt;
kenS has &#039;&#039;&#039;begun&#039;&#039;&#039; it, but no code has yet been produced today - [[User:J-b|jb]] 01:56, 8 March 2007 (CET)	 &lt;br /&gt;
Contact before starting it !!!&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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11110</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=11110"/>
		<updated>2008-03-25T12:54:55Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Undo revision 11109 by Dionoea (Talk)&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11109</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=11109"/>
		<updated>2008-03-25T12:54:22Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: Reverted edits by Dionoea (Talk); changed back to last version by J-b&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
= Interfaces = &lt;br /&gt;
&lt;br /&gt;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
Someone has already began it on the forum, so start from there.	 &lt;br /&gt;
kenS has &#039;&#039;&#039;begun&#039;&#039;&#039; it, but no code has yet been produced today - [[User:J-b|jb]] 01:56, 8 March 2007 (CET)	 &lt;br /&gt;
Contact before starting it !!!	 &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 updated by Richard Hosking		 &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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11108</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=11108"/>
		<updated>2008-03-25T12:53:25Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* DVB support for Windows / BDA Drivers */  -&amp;gt; done too&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11107</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=11107"/>
		<updated>2008-03-25T12:52:56Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* DVB support for Windows / BDA Drivers */  -&amp;gt; done too.&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
Someone has already began it on the forum, so start from there.	 &lt;br /&gt;
kenS has &#039;&#039;&#039;begun&#039;&#039;&#039; it, but no code has yet been produced today - [[User:J-b|jb]] 01:56, 8 March 2007 (CET)	 &lt;br /&gt;
Contact before starting it !!!&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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=11106</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=11106"/>
		<updated>2008-03-25T12:52:28Z</updated>

		<summary type="html">&lt;p&gt;Dionoea: /* V4L2 support */  -&amp;gt; done.&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;
if you feel confortable with english language, be sure to have a look to  [[QT4StringsReview|the QT4 Strings Review]].&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://trac.videolan.org/vlc/browser/trunk/modules/video_filter/ here].&lt;br /&gt;
&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;
== Streaming profiles == &lt;br /&gt;
&lt;br /&gt;
This is a big subject, that has barely started. Interested persons will need to work closely with existing developers to implement this.&lt;br /&gt;
Not much information is available yet. The idea is to make streaming very easy, and yet powerful by using parametrable profiles. These could be used either by the graphical interfaces or through HTTP/command line interfaces&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Zorglub|Zorglub]]&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;
= 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;
A [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;
&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;
Someone has already began it on the forum, so start from there.	 &lt;br /&gt;
kenS has &#039;&#039;&#039;begun&#039;&#039;&#039; it, but no code has yet been produced today - [[User:J-b|jb]] 01:56, 8 March 2007 (CET)	 &lt;br /&gt;
Contact before starting it !!!	 &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;
&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>Dionoea</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2008&amp;diff=11091</id>
		<title>SoC 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2008&amp;diff=11091"/>
		<updated>2008-03-24T18:27:46Z</updated>

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

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