<?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=Geal</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=Geal"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Geal/"/>
	<updated>2026-11-04T15:04:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Access&amp;diff=17570</id>
		<title>Hacker Guide/Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Access&amp;diff=17570"/>
		<updated>2010-11-11T17:04:12Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description  ==&lt;br /&gt;
&lt;br /&gt;
The modules of &#039;&#039;&#039;&#039;access&#039;&#039;&#039;&#039; capability are designed to be the first and last elements of a modules chain. &lt;br /&gt;
&lt;br /&gt;
Access [[Documentation:Hacker&#039;s Guide/Access|input]] and [[Documentation:Hacker&#039;s Guide/Access output|output]] handles most of the basic &#039;&#039;&#039;I/O&#039;&#039;&#039; for VLC. They are usually &#039;&#039;&#039;protocols&#039;&#039;&#039; implementations (http, ftp,...) or &#039;&#039;&#039;devices&#039;&#039;&#039; access (Webcams, Capture cards). &lt;br /&gt;
&lt;br /&gt;
We will discuss about &#039;&#039;&#039;&#039;input access&#039;&#039;&#039;&#039; in this page. &lt;br /&gt;
&lt;br /&gt;
== Write an access module  ==&lt;br /&gt;
&lt;br /&gt;
To write an access module, read the [[Documentation:Hacker&#039;s Guide/Module Writers Guide|introduction to module writing]]. &lt;br /&gt;
&lt;br /&gt;
Then, you should specify your module of being of access type: &lt;br /&gt;
&lt;br /&gt;
 set_capability( &amp;quot;access&amp;quot;, 60 )  &lt;br /&gt;
 set_category( CAT_INPUT )                                                                                                                                                                                  &lt;br /&gt;
 set_subcategory( SUBCAT_INPUT_ACCESS )&lt;br /&gt;
&lt;br /&gt;
Your module can be of either a &#039;&#039;&#039;&#039;Block&#039;&#039;&#039;&#039; or a &#039;&#039;&#039;&#039;Read&#039;&#039;&#039;&#039; type, depending on what you need to access.&lt;br /&gt;
&lt;br /&gt;
== Functions to implement  ==&lt;br /&gt;
&lt;br /&gt;
After implementing Open() and Close() functions, you will need to implement a few majors features that will be implemented by your functions. &lt;br /&gt;
&lt;br /&gt;
As you can see {{VLCSourceFile|name=include/vlc_access.h}}, you should define: &lt;br /&gt;
&lt;br /&gt;
*Seek, as in pf_seek &lt;br /&gt;
*Control, as in pf_control &lt;br /&gt;
*Read or Block, depending on your module type&lt;br /&gt;
&lt;br /&gt;
After implementing those functions, you should assign them to the corresponding pf_ function. &lt;br /&gt;
&lt;br /&gt;
== Seek  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prototype&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
 int         (*pf_seek) ( access_t *, uint64_t );&lt;br /&gt;
&lt;br /&gt;
The seeking function will be called whenever a seek is requested. &lt;br /&gt;
&lt;br /&gt;
The arguments are a &#039;&#039;pointer&#039;&#039; to the module structure, and the requested &#039;&#039;&#039;position&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB:&#039;&#039;&#039; Seeking function can be NULL, if it isn&#039;t possible to seek in the protocol or device. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Return:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the seek has succeeded, it should return VLC_SUCCESS, else it should return VLC_EGENERIC. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Control  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prototype&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
 int         (*pf_control)( access_t *, int i_query, va_list args);&lt;br /&gt;
&lt;br /&gt;
Control function is quite easy, the input core will query the module using this function with: &lt;br /&gt;
&lt;br /&gt;
*A pointer to the module structure.&lt;br /&gt;
*An &#039;&#039;&#039;i_query&#039;&#039;&#039; parameter that can be of several type. We will cover afterward the most important on. &lt;br /&gt;
*A list of arguments, that depends on the &#039;&#039;&#039;i_query&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Return&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
If the query has succeeded, it should return VLC_SUCCESS. Else it should return VLC_EGENERIC (&#039;&#039;fail&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
=== Control Query types  ===&lt;br /&gt;
&lt;br /&gt;
The first ones are request to know what the module supports. They are all of &#039;&#039;&#039;boolean&#039;&#039;&#039; type and should always succeed. &lt;br /&gt;
&lt;br /&gt;
 ACCESS_CAN_SEEK,        &lt;br /&gt;
 ACCESS_CAN_FASTSEEK,    &lt;br /&gt;
 ACCESS_CAN_PAUSE,       &lt;br /&gt;
 ACCESS_CAN_CONTROL_PACE,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The following one is a request for the &#039;&#039;&#039;PTS delay&#039;&#039;&#039;. It must always succeed. &lt;br /&gt;
&lt;br /&gt;
 ACCESS_GET_PTS_DELAY,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The following ones are for &#039;&#039;&#039;requesting&#039;&#039;&#039; various &#039;&#039;&#039;info&#039;&#039;&#039; about the input, like Metadata, Titles and Chapters or device signal strength. All of them can fail. &lt;br /&gt;
&lt;br /&gt;
 ACCESS_GET_TITLE_INFO,  &lt;br /&gt;
 ACCESS_GET_META,        &lt;br /&gt;
 ACCESS_GET_CONTENT_TYPE,&lt;br /&gt;
 ACCESS_GET_SIGNAL,      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Depending to the answer of the CAN_ requests, the core can &#039;&#039;&#039;set&#039;&#039;&#039; a few things, like pausing or changing &#039;&#039;&#039;title&#039;&#039;&#039; or &#039;&#039;&#039;chapter&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 ACCESS_SET_PAUSE_STATE,&lt;br /&gt;
 ACCESS_SET_TITLE,&lt;br /&gt;
 ACCESS_SET_SEEKPOINT,&lt;br /&gt;
&lt;br /&gt;
You can find the list of arguments corresponding to query types in the comments of access_query_e definition in vlc_access.h&lt;br /&gt;
&lt;br /&gt;
== Read  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prototype&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
 ssize_t     (*pf_read) ( access_t *, uint8_t *, size_t );&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Return&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Return -1 if no data yet, 0 if no more data, else actual data read on the medium. &lt;br /&gt;
&lt;br /&gt;
== Block  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prototype&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
 block_t    *(*pf_block)( access_t * );&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Return:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Returns a block of data in his &#039;natural&#039; size. It will return NULL if not yet data or eof.&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32Compile&amp;diff=16010</id>
		<title>Win32Compile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32Compile&amp;diff=16010"/>
		<updated>2010-05-03T21:19:46Z</updated>

		<summary type="html">&lt;p&gt;Geal: pkgconfig files also contain absolute paths&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From http://developers.videolan.org/vlc/vlc/INSTALL.win32&lt;br /&gt;
&lt;br /&gt;
 $Id: INSTALL.win32 15707 2006-05-22 09:42:08Z xtophe $&lt;br /&gt;
 INSTALL file for the Windows9x/Me/NT4/2k/XP version of the VLC media player&lt;br /&gt;
&lt;br /&gt;
==Before you start==&lt;br /&gt;
&lt;br /&gt;
One common desire that leads people to want to rebuild VLC is to &amp;quot;rebuild a debug version&amp;quot; or &amp;quot;add printf()s&amp;quot;, but this is not strictly necessary, as VLC includes a debug logging feature by default.  If you are using a binary release (or have already built VLC), just run &amp;lt;CODE&amp;gt;&#039;vlc.exe&#039;&amp;lt;/CODE&amp;gt; and select &amp;quot;Messages...&amp;quot; from the &amp;quot;Tools&amp;quot; menu.&lt;br /&gt;
&lt;br /&gt;
You can also run VLC from the Windows command-line interpreter, &amp;lt;CODE&amp;gt;cmd.exe&amp;lt;/CODE&amp;gt; (a.k.a. &amp;quot;DOS window&amp;quot;), in which case you&#039;ll be able to use the command-line arguments. You can obtain a list of these command line arguments by typing &amp;lt;CODE&amp;gt;&#039;vlc --help&#039;&amp;lt;/CODE&amp;gt; or &amp;lt;CODE&amp;gt;&#039;vlc --help --advanced&#039;&amp;lt;/CODE&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To store a debug log of the current VLC session, you can use &amp;lt;CODE&amp;gt;&#039;vlc -vvv --extraintf=logger&#039;&amp;lt;/CODE&amp;gt;. You will end-up with a &amp;lt;CODE&amp;gt;vlc-log.txt&amp;lt;/CODE&amp;gt; file in your current directory.&lt;br /&gt;
&lt;br /&gt;
==Building VLC from source==&lt;br /&gt;
&lt;br /&gt;
If you want to build VLC from source, you have several choices:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Method&lt;br /&gt;
 ! Documentation&lt;br /&gt;
 ! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Cross-compile with mingw32 on GNU/Linux&lt;br /&gt;
| None&lt;br /&gt;
| &#039;&#039;&#039;Preferred&#039;&#039;&#039; method (uses cross compilation)&lt;br /&gt;
|-&lt;br /&gt;
| Native-compile with [http://www.mingw.org MSYS+MINGW]&lt;br /&gt;
| [[Win32CompileMSYSNew]]&lt;br /&gt;
| &#039;&#039;&#039;Preferred&#039;&#039;&#039; native compilation method. MSYS is a minimal build environment to compile Unixish projects under Microsoft Windows. It provides all the commonly-required Unix tools (like sh, gmake, and so forth).&lt;br /&gt;
|-&lt;br /&gt;
| Native-compile with [http://www.cygwin.com Cygwin]&lt;br /&gt;
| [[Win32CompileCygwinNew]]&lt;br /&gt;
| &#039;&#039;&#039;Working&#039;&#039;&#039; native compilation method&lt;br /&gt;
|-&lt;br /&gt;
| Native-compile with Microsoft Visual C++&lt;br /&gt;
| None&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Not advised.&#039;&#039;&#039; &amp;lt;P&amp;gt;&lt;br /&gt;
Even though VLC includes some MSVC project files, this method is advised only if you just want to experiment/play with some basic functionality in VLC. VLC depends on a lot of third-party libraries and building them in MSVC is inconvenient (and in some cases, impossible). &amp;lt;BR&amp;gt; &lt;br /&gt;
If you want to run VLC under the MSVC debugger, use &amp;lt;CODE&amp;gt;--fast-mutex --win9x-cv-method=1&amp;lt;/CODE&amp;gt; because the debugger usually loses signals sent by PulseEvent().&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Obtaining the build tools==&lt;br /&gt;
&lt;br /&gt;
Each build method requires its own toolchain:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Method&lt;br /&gt;
 ! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Cross-compile with mingw32 on GNU/Linux&lt;br /&gt;
|&lt;br /&gt;
*Debian/Ubuntu users can &amp;lt;CODE&amp;gt;apt-get install mingw32 mingw32-binutils&amp;lt;/CODE&amp;gt;, however building FFmpeg now requires mingw32-runtime &amp;gt;= 3.15 and w32api &amp;gt;= 3.13 so these will have to be updated manually.&lt;br /&gt;
*Gentoo users can &amp;lt;CODE&amp;gt;emerge crossdev &amp;amp;&amp;amp; crossdev mingw32&amp;lt;/CODE&amp;gt;&lt;br /&gt;
*Other systems may attempt http://www.mingw.org/wiki/LinuxCrossMinGW&lt;br /&gt;
|-&lt;br /&gt;
| Native-compile with [http://www.mingw.org MSYS+MINGW]&lt;br /&gt;
| Read the [[Win32CompileMSYSNew|documentation]]&lt;br /&gt;
|-&lt;br /&gt;
| Native-compile with [http://www.cygwin.com Cygwin]&lt;br /&gt;
| Read the [[Win32CompileCygwinNew|documentation]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Saving time by using pre-built libraries==&lt;br /&gt;
&lt;br /&gt;
VLC requires other open source projects to provide some features (like AC3 audio decoding and MPEG-4 video decoding).  A complete list of required libraries from these projects can be found at http://developers.videolan.org/vlc/.  Depending on your needs, you must either build your own versions of these libraries or use VLC&#039;s convenient pre-built versions.&lt;br /&gt;
&lt;br /&gt;
If you feel you must build these libraries from source, the blessed source code may be found at http://download.videolan.org/pub/testing/contrib/.  An automated way of building the contrib libraries is provided in extra/contrib. It will download, configure, and build the libraries. See the extras/contrib/README for more info.&lt;br /&gt;
&lt;br /&gt;
If you want to save yourself time and energy by using the pre-built versions of these libraries, you may download them from http://people.videolan.org/~jb/Contribs/, named in fashion of contrib-&#039;&#039;&#039;yyyymmdd&#039;&#039;&#039;-win32-&#039;&#039;&#039;version&#039;&#039;&#039;-bin-gcc-&#039;&#039;&#039;gccversion&#039;&#039;&#039;-only.tar.bz2 . The pre-built versions will &#039;&#039;only work with MINGW or Cygwin&#039;&#039;.  Note that the version you download must match that of the MINGW compiler, &amp;lt;CODE&amp;gt;i586-mingw32msvc-gcc&amp;lt;/CODE&amp;gt;, which you can verify by typing &amp;lt;CODE&amp;gt;&#039;i586-mingw32msvc-gcc --ver&#039;&amp;lt;/CODE&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are two installation strategies:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Location&lt;br /&gt;
 ! Command&lt;br /&gt;
 ! Advantages&lt;br /&gt;
 ! Disadvantages&lt;br /&gt;
|-&lt;br /&gt;
| Install the pre-built libraries into the Cygwin standard directories (/usr/win32/*)&lt;br /&gt;
| &amp;lt;CODE&amp;gt;tar jxf contrib-20061122-win32-bin-gcc-3.4.5-only.tar.bz2 -C /&amp;lt;/CODE&amp;gt; (Note the &amp;lt;CODE&amp;gt;&amp;quot;-C /&amp;quot;&amp;lt;/CODE&amp;gt;!)&lt;br /&gt;
|&lt;br /&gt;
*Shorter initial setup time&lt;br /&gt;
|&lt;br /&gt;
*May conflict with other headers/libraries in the standard directories&lt;br /&gt;
*Difficult to get rid of if you want to free up space or to upgrade to the next version of the pre-built libraries (Installing over the top of older versions is highly discouraged!)&lt;br /&gt;
|-&lt;br /&gt;
| Install the pre-built libraries into a project-specific directory (e.g., &amp;lt;CODE&amp;gt;D:\VLC&amp;lt;/CODE&amp;gt;)&lt;br /&gt;
| &amp;lt;CODE&amp;gt;tar jxf contrib-20061122-win32-bin-gcc-3.4.5-only.tar.bz2 -C /cygdrive/d/VLC&amp;lt;/CODE&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
*No conflicts with other projects built under Cygwin&lt;br /&gt;
*Easy to get rid of if you want to free up space or to upgrade to the next version of the pre-built libraries&lt;br /&gt;
*For multi-person projects, easy to put under revision control to ensure all project members are using the correct pre-built versions&lt;br /&gt;
|&lt;br /&gt;
*Requires that you set &amp;lt;CODE&amp;gt;CPPFLAGS&amp;lt;/CODE&amp;gt;, &amp;lt;CODE&amp;gt;LDFLAGS&amp;lt;/CODE&amp;gt; appropriately when building&lt;br /&gt;
*Requires that you modify hard-coded paths in the pre-built libraries (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If installing into a project-specific directory, you must modify some hard-coded paths in the pre-build libraries as follows:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
CONTRIBS=/cygdrive/d/VLC&lt;br /&gt;
for file in $CONTRIBS/bin/*-config $CONTRIBS/lib/*.la $CONTRIBS/lib/pkgconfig/*.pc ; do&lt;br /&gt;
	perl -i.bak -p -e &#039;s|/usr/win32|$ENV{&amp;quot;CONTRIBS&amp;quot;}|g&#039; $file&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuring the build==&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve got all the files you need in place, you need to configure the build with the &amp;lt;CODE&amp;gt;configure&amp;lt;/CODE&amp;gt; script.  In the following examples, assume that the third-party libraries are installed in &amp;lt;CODE&amp;gt;$CONTRIBS&amp;lt;/CODE&amp;gt;.  If installed in the Cygwin standard directories, use &amp;lt;CODE&amp;gt;export CONTRIBS=/usr/win32&amp;lt;/CODE&amp;gt;. Otherwise use &amp;lt;CODE&amp;gt;export CONTRIBS=/cygdrive/d/VLC&amp;lt;/CODE&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you are cross-compiling under GNU/Linux, you can use something along these lines:&lt;br /&gt;
&lt;br /&gt;
  ./bootstrap &amp;amp;&amp;amp; \&lt;br /&gt;
  export PKG_CONFIG_LIBDIR=$CONTRIBS/lib/pkgconfig PKG_CONFIG_PATH=$CONTRIBS/lib/pkgconfig \&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I$CONTRIBS/include -I$CONTRIBS/include/ebml&amp;quot; CXXCPP=i586-mingw32msvc-cpp \&lt;br /&gt;
  LDFLAGS=-L$CONTRIBS/lib \&lt;br /&gt;
  CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++&lt;br /&gt;
  ./configure --host=i586-mingw32msvc --build=i386-linux \&lt;br /&gt;
      --disable-[[gtk]] \&lt;br /&gt;
      --enable-[[nls]] --enable-[[sdl]] --with-sdl-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --enable-[[ffmpeg]] --with-ffmpeg-mp3lame --with-ffmpeg-[[faac]] \&lt;br /&gt;
      --with-ffmpeg-[[zlib]] --enable-[[faad]] --enable-[[flac]] --enable-[[theora]] \&lt;br /&gt;
      --with-[[wx]]-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-[[freetype]]-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-[[fribidi]]-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-[[libgcrypt]]-prefix=$CONTRIBS \&lt;br /&gt;
      --enable-[[live555]] --with-live555-tree=$CONTRIBS/live.com \&lt;br /&gt;
      --enable-[[caca]] --with-caca-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-[[xml2]]-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-[[dvdnav]]-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --disable-[[cddax]] --disable-[[vcdx]] --enable-[[goom]] \&lt;br /&gt;
      --enable-[[twolame]] --enable-[[dvdread]] \&lt;br /&gt;
      --enable-[[debug]]&lt;br /&gt;
&lt;br /&gt;
If you are using cygwin, you can build VLC with or without the POSIX emulation layer. Without is usually better and with POSIX emulation hasn&#039;t been tested in over a year. So to build without the emulation layer, use something like this:&lt;br /&gt;
&lt;br /&gt;
  ./bootstrap &amp;amp;&amp;amp; \&lt;br /&gt;
  export PKG_CONFIG_PATH=$CONTRIBS/lib/pkgconfig \&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I$CONTRIBS/include -I$CONTRIBS/include/ebml&amp;quot; CXXCPP=$CPPFLAGS \&lt;br /&gt;
  LDFLAGS=-L$CONTRIBS/lib \&lt;br /&gt;
  CC=&#039;gcc -mno-cygwin&#039; CXX=&#039;g++ -mno-cygwin&#039; \&lt;br /&gt;
  ./configure \&lt;br /&gt;
      --disable-gtk \&lt;br /&gt;
      --enable-nls --enable-sdl --with-sdl-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \&lt;br /&gt;
      --with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora \&lt;br /&gt;
      --with-wx-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-freetype-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-fribidi-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --enable-live555 --with-live555-tree=$CONTRIBS/live.com \&lt;br /&gt;
      --enable-caca --with-caca-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-xml2-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-dvdnav-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --disable-cddax --disable-vcdx --enable-goom \&lt;br /&gt;
      --enable-twolame --enable-dvdread \&lt;br /&gt;
      --enable-debug&lt;br /&gt;
&lt;br /&gt;
If you want to use the emulation layer, then just omit &amp;lt;CODE&amp;gt;CFLAGS&amp;lt;/CODE&amp;gt; and &amp;lt;CODE&amp;gt;CXXFLAGS&amp;lt;/CODE&amp;gt;. You&#039;re on your own, though.&lt;br /&gt;
&lt;br /&gt;
If you are compiling with MSYS/MINGW, then you can use something along those lines:&lt;br /&gt;
  ./bootstrap &amp;amp;&amp;amp; \&lt;br /&gt;
  export PKG_CONFIG_PATH=$CONTRIBS/lib/pkgconfig \&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I$CONTRIBS/include -I$CONTRIBS/include/ebml&amp;quot; CXXCPP=$CPPFLAGS \&lt;br /&gt;
  LDFLAGS=-L$CONTRIBS/lib \&lt;br /&gt;
  ./configure \&lt;br /&gt;
      --disable-gtk \&lt;br /&gt;
      --enable-nls --enable-sdl --with-sdl-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \&lt;br /&gt;
      --with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora \&lt;br /&gt;
      --with-wx-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-freetype-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-fribidi-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --enable-caca --with-caca-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-xml2-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --with-dvdnav-config-path=$CONTRIBS/bin \&lt;br /&gt;
      --disable-cddax --disable-vcdx --enable-goom \&lt;br /&gt;
      --enable-twolame --enable-dvdread \&lt;br /&gt;
      --disable-[[mkv]] \&lt;br /&gt;
      --enable-debug&lt;br /&gt;
&lt;br /&gt;
If you have used the &amp;quot;extras/contrib&amp;quot; way, you don&#039;t need to specify &amp;lt;CODE&amp;gt;CFLAGS&amp;lt;/CODE&amp;gt;, &amp;lt;CODE&amp;gt;LDFLAGS&amp;lt;/CODE&amp;gt; and &amp;lt;CODE&amp;gt;--with-foo-config-path=&amp;lt;/CODE&amp;gt;.&lt;br /&gt;
 ./bootstrap &amp;amp;&amp;amp; \&lt;br /&gt;
  ./configure \&lt;br /&gt;
      --disable-gtk \&lt;br /&gt;
      --enable-nls --enable-sdl \&lt;br /&gt;
      --enable-ffmpeg --enable-faad --enable-flac --enable-theora \&lt;br /&gt;
      --disable-cddax --disable-vcdx --enable-goom \&lt;br /&gt;
      --enable-twolame --enable-dvdread \&lt;br /&gt;
      --enable-mkv --enable-caca --enable-live555\&lt;br /&gt;
      --enable-debug&lt;br /&gt;
&lt;br /&gt;
See &amp;lt;CODE&amp;gt;&#039;./configure --help&#039;&amp;lt;/CODE&amp;gt; for more information.&lt;br /&gt;
&lt;br /&gt;
==Building VLC==&lt;br /&gt;
&lt;br /&gt;
Once configured, to build VLC, just run &amp;lt;CODE&amp;gt;&#039;make&#039;&amp;lt;/CODE&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can either run VLC directly from the source tree or you can build self-contained VLC packages with the following &amp;lt;CODE&amp;gt;make&amp;lt;/CODE&amp;gt; rules:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Command&lt;br /&gt;
 ! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;CODE&amp;gt;make package-win32-base&amp;lt;/CODE&amp;gt;&lt;br /&gt;
| Creates a subdirectory named &amp;lt;CODE&amp;gt;vlc-x.x.x&amp;lt;/CODE&amp;gt; with all the binaries &#039;stripped&#039; (that is, smallest size, unusable with a debugger)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;CODE&amp;gt;make package-win32-zip&amp;lt;/CODE&amp;gt;&lt;br /&gt;
| Same as above but will package the directory in a zip file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;CODE&amp;gt;make package-win32&amp;lt;/CODE&amp;gt;&lt;br /&gt;
| Same as above but will also create an auto-installer package. You must have NSIS installed in its default location for this to work.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Well done&amp;amp;mdash;you&#039;re ready to use VLC!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Dev_Projects&amp;diff=15487</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=15487"/>
		<updated>2010-01-30T19:37:30Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Normal small projects */&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;
&lt;br /&gt;
&#039;&#039;&#039;For each project&#039;&#039;&#039;, we list a &#039;&#039;&#039;contact&#039;&#039;&#039; 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;amp;lt;nick&amp;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&amp;amp;nbsp;!&#039;&#039;&#039; &lt;br /&gt;
&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;
&lt;br /&gt;
It basically means to clean the code, it is helpful for all programmers. It helps to find bugs, and is a good way to learn about VLC&#039;s internals. &lt;br /&gt;
&lt;br /&gt;
It is covered in the [[Code Janitorial]] section. &lt;br /&gt;
&lt;br /&gt;
== Video Filters  ==&lt;br /&gt;
&lt;br /&gt;
You can do video filters for {{VLC}}. &lt;br /&gt;
&lt;br /&gt;
You can inspire yourself on this [http://movavi.com/enhancemovie/filters.html list of filters] from a commercial product. &lt;br /&gt;
&lt;br /&gt;
You can start the code [http://git.videolan.org/?p=vlc.git;a=tree;f=modules/video_filter here]. &lt;br /&gt;
&lt;br /&gt;
== Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
You can do audio filters for {{VLC}}&lt;br /&gt;
&lt;br /&gt;
You can start the code [http://git.videolan.org/?p=vlc.git;a=tree;f=modules/audio_filter here]. &lt;br /&gt;
&lt;br /&gt;
== Lua Playlist parsers for websites  ==&lt;br /&gt;
&lt;br /&gt;
VLC already supports youtube, dailymotion or other websites using the .lua scripts! Add new sites and new URLs support! &lt;br /&gt;
&lt;br /&gt;
== Close bugs ==&lt;br /&gt;
&lt;br /&gt;
Go to our bugtracker on http://trac.videolan.org/vlc/ and close a bug !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Normal small projects  =&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;
&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:Geal|Geal]]&lt;br /&gt;
&lt;br /&gt;
== Direct2D video output  ==&lt;br /&gt;
&lt;br /&gt;
Direct2D is a new API introduced in Windows 7. VLC could use a a Direct2D vout.&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Geal|Geal]]&lt;br /&gt;
&lt;br /&gt;
== DirectWrite support  ==&lt;br /&gt;
&lt;br /&gt;
DirectWrite is another API introduced in Windows 7, used to write nicely shaped characters to screen. Someone should look into it, to see what could be done (like subtitles display).&lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Geal|Geal]]&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;
&lt;br /&gt;
== mozila and activex javascript api  ==&lt;br /&gt;
&lt;br /&gt;
Add a callback to signal playlist state changes such as item started, item ended, next item started, last item ended, and so on. &lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Jpsaman|jpsaman]]&lt;br /&gt;
&lt;br /&gt;
&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;
&lt;br /&gt;
== WTV support ==&lt;br /&gt;
&lt;br /&gt;
We would love to have a .wtv demuxer for the new wtv files from Windows Media center&lt;br /&gt;
&lt;br /&gt;
Contact [[User:J-b|jb]]&lt;br /&gt;
&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 https://trac.videolan.org/vlc/ticket/20 &lt;br /&gt;
&lt;br /&gt;
Contact: [[User:Dnumgis|Dnumgis]] &lt;br /&gt;
&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;
== 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;
&lt;br /&gt;
== ASM optims ==&lt;br /&gt;
&lt;br /&gt;
If you know how to code in x86 ASM, we have a few tasks for you&lt;br /&gt;
&lt;br /&gt;
Contact [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVD Audio ==&lt;br /&gt;
&lt;br /&gt;
If you are a coder and fan of DVD-Audio, you can help to improve the support of DVD-Audio playback. Especially decryption.&lt;br /&gt;
&lt;br /&gt;
Contact [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
&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;
&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;
= Finished projects  =&lt;br /&gt;
&lt;br /&gt;
== Audioscrobbler ==&lt;br /&gt;
&lt;br /&gt;
An [http://www.audioscrobbler.net/ Audioscrobbler] VLC Plug-in for the social music network [http://www.last.fm Last.Fm]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Plugin is finished, now part of vlc 0.9.0 (development version). Done by [[User:Funman|funman]] &lt;br /&gt;
&lt;br /&gt;
== DVB support for Windows / BDA Drivers  ==&lt;br /&gt;
&lt;br /&gt;
DVB is the norm for&amp;amp;nbsp;: &lt;br /&gt;
&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;
== 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. However &lt;br /&gt;
&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. This is not a very difficult project, but you will need to have the hardware to test against. 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;
== 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. 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;
== Windows port  ==&lt;br /&gt;
&lt;br /&gt;
Finish port libcddb and libcdio for Windows. &lt;br /&gt;
&lt;br /&gt;
Port libzvbi for Windows &lt;br /&gt;
&lt;br /&gt;
Contact [[User:J-b|jb]] &lt;br /&gt;
&lt;br /&gt;
== Improvements to the X11 video output  ==&lt;br /&gt;
&lt;br /&gt;
Fullscreen support to improve . &lt;br /&gt;
&lt;br /&gt;
[[Category:Coding]] [[Category:Activities]]&lt;br /&gt;
&lt;br /&gt;
== Subtitles improvements  ==&lt;br /&gt;
&lt;br /&gt;
{{VLC}} does not support all the styles for a lot of subtitles type. 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;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=14096</id>
		<title>Win32CompileMSYSNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=14096"/>
		<updated>2009-05-16T10:14:42Z</updated>

		<summary type="html">&lt;p&gt;Geal: yes, it works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
MSYS is a helper environment for MinGW, the compiler chain for Windows based on GCC. It is the fastest way to build VLC natively on Windows.&lt;br /&gt;
&lt;br /&gt;
=Install MinGW=&lt;br /&gt;
Use the main installer 5.1.4 found at&lt;br /&gt;
http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780&lt;br /&gt;
&lt;br /&gt;
Use the candidate release, and select gcc, g++ and MinGW make. It should download:&lt;br /&gt;
*mingwrt-3.15&lt;br /&gt;
*w32api-3.12&lt;br /&gt;
*binutils-2.18&lt;br /&gt;
*gcc-core-3.4.5&lt;br /&gt;
*gcc-g++-3.4.5&lt;br /&gt;
*mingw32-make-3.81&lt;br /&gt;
&lt;br /&gt;
=Install MSYS=&lt;br /&gt;
* Install MSys 1.0.10 with the exe: http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe&lt;br /&gt;
* Install MSys Developer Tooltkit: http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe&lt;br /&gt;
* Update to 1.0.11, untar it in your msys install:&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2&lt;br /&gt;
or&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-20080826.tar.gz (recommended on 64bits)&lt;br /&gt;
&lt;br /&gt;
* Update your autoconf, automake and libtool by downloading and installing them.&lt;br /&gt;
http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/libtool1.5-1.5.25a-1-bin.tar.bz2&lt;br /&gt;
&lt;br /&gt;
You can also compile them according to:&lt;br /&gt;
http://wiki.enlightenment.org/index.php/EFL_Windows_XP&lt;br /&gt;
http://www.mingw.org/wiki/msys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install other tools=&lt;br /&gt;
&lt;br /&gt;
Installing mingw-utils is recommended: http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Installation of wget too: http://prdownloads.sourceforge.net/mingw/wget-1.9.1-mingwPORT.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Although this is a mingwPORT package it already has a precompiled wget on board.&lt;br /&gt;
Extract the .tar.bz2 file. It contains wget.exe in the bin subfolder, extract it to mingw/bin.&lt;br /&gt;
&lt;br /&gt;
=Install Git and checkout VLC=&lt;br /&gt;
&lt;br /&gt;
Download Git on http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Launch Git bash:&lt;br /&gt;
 cd /c&lt;br /&gt;
 mkdir VLC&lt;br /&gt;
 cd VLC&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
launch MSys again&lt;br /&gt;
cd /c/VLC/vlc&lt;br /&gt;
&lt;br /&gt;
=PKG-CONFIG=&lt;br /&gt;
pkg-config is a mess, this is not NEWS... And you cannot compile it from Windows because of a few bugs...&lt;br /&gt;
Get Glib from GNOME: http://ftp.gnome.org/pub/GNOME/binaries/win32/glib/2.18/glib_2.18.2-1_win32.zip &lt;br /&gt;
Unzip it.&lt;br /&gt;
&lt;br /&gt;
Get PKG-CONFIG from GNOME:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip &lt;br /&gt;
Unzip it too.&lt;br /&gt;
&lt;br /&gt;
=Contribs=&lt;br /&gt;
Take the precompiled contribs:&lt;br /&gt;
http://people.videolan.org/~jb/Contribs/contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy them in your ~&lt;br /&gt;
 tar xvjf contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
 rm /usr/win32/bin/moc /usr/win32/bin/uic /usr/win32/bin/rcc&lt;br /&gt;
&lt;br /&gt;
=Gcrypt=&lt;br /&gt;
You need gcrypt to bootstrap VLC. It might be stupid, but deal with it.&lt;br /&gt;
 cd extras/contrib&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 cd src&lt;br /&gt;
 make .gcrypt&lt;br /&gt;
&lt;br /&gt;
=Bootstrap VLC=&lt;br /&gt;
This is a HACK. Don&#039;t do this at HOME.&lt;br /&gt;
 cp extras/contrib/share/aclocal/* m4/&lt;br /&gt;
 cp /usr/share/aclocal/* m4/&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
It should warn about gettext... Just ignore.&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
 vim extras/package/win32/configure-msys.sh&lt;br /&gt;
Change CC to gcc and CXX to g++, I recommend to --disable-nls too&lt;br /&gt;
 sh extras/package/win32/configure-msys.sh&lt;br /&gt;
&lt;br /&gt;
=Compile=&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009/DXVA_integration&amp;diff=14003</id>
		<title>SoC 2009/DXVA integration</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009/DXVA_integration&amp;diff=14003"/>
		<updated>2009-05-09T15:06:50Z</updated>

		<summary type="html">&lt;p&gt;Geal: New page: {{SoCProject|year=2009|student=Geoffroy Couprie|mentor=Jérôme Decoodt}}  =DXVA Integration=  ==Abstract==  The Windows DXVA API gives access to video decoding and processin...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2009|student=[[User:Geal|Geoffroy Couprie]]|mentor=Jérôme Decoodt}}&lt;br /&gt;
&lt;br /&gt;
=DXVA Integration=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
The Windows DXVA API gives access to video decoding and processing in the graphic card. Decoding with the GPU will reduce the load on the CPU and (hopefully) speed up the decoding. This project aims at creating a MPEG2 and H.264 decoder for VLC using this API.&lt;br /&gt;
&lt;br /&gt;
==Calendar==&lt;br /&gt;
&#039;&#039;&#039;May 23 :&#039;&#039;&#039; Beginning of SoC&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;July 13 :&#039;&#039;&#039; Mid-term evaluations deadline&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 24 :&#039;&#039;&#039; Final evaluation deadline&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TODO list==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What !! WHAT!? !! When !! Status&lt;br /&gt;
|-&lt;br /&gt;
| Writing headers || The DXVA headers are not provided by the w32api project, so I have to write down the headers files for all the interfaces I will use. This is the very boring part of the project... || May-August || style=&amp;quot;background: #ffffdd&amp;quot;|in progress&lt;br /&gt;
|-&lt;br /&gt;
| Create test programs || I have to test the API and the headers, so I need test cases. I can use the samples from the Platform SDK, but there are not many examples, and the ones provided won&#039;t compile at the beginning of the project, because they use part of the API I have still not written || May-June || style=&amp;quot;background: #ffffdd&amp;quot;|in progress&lt;br /&gt;
|-&lt;br /&gt;
| Create the codec plugin || Using my test code, I&#039;ll be able to build a small codec plugin. Then, I&#039;ll use it to do all the further tests, and write the final part of the project || June-August || not started&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009_projects&amp;diff=14002</id>
		<title>SoC 2009 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009_projects&amp;diff=14002"/>
		<updated>2009-05-09T14:51:34Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* List of current VLC projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2OO9.&lt;br /&gt;
&lt;br /&gt;
= List of current VLC projects =&lt;br /&gt;
&lt;br /&gt;
== QuickTimeVR Playback ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2009/QuickTimeVR Playback]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Leonox|León Moctezuma]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Dionoea|Antoine Cellerier]]&lt;br /&gt;
* &#039;&#039;&#039;Comentor&#039;&#039;&#039;: Yuval Levy&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:  VLC is a cross platform media player widely used and FreePV is a panoramic viewer that was initially developed due to the lack of an implementation of QuickTime and Shockwave for Linux, both work with QuickTime files and the problem arise from that, since video and vr share the mime type, to solve this, the main goal is to integrate the FreePV library into VLC to enable it to play QuickTimeVR contents, the second goal is to explore the use of wiimote as an advance interaction method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Media Library==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2009/Media Library]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:jetru|Srikanth Raju]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-Peg|Jean-Philippe Andre]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:  The project is about extending the Media Library(ML) for VLC Player. The media library will allow users to manage all their local and network media. The project will use the basic structure that already exists for the ML and will focus on extending the features. New features include Search, Smart playlists, Annotations and &amp;quot;Just play music&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Lua Services Discovery==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2009/Lua Services Discovery]]&#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:J-Peg|Jean-Philippe Andre]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:The main goal of this project will be giving VideoLAN a Lua framework to load scriptable services discovery, to make them easier to write, if they don&#039;t require C complexity.&lt;br /&gt;
:Second goal will be giving VideoLAN access to a great number of online music and video services, like Jamendo, Magnatune, youtube, Dailymotion, etc..., using the new Lua modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A Media Center Interface for VLC==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2009/Media Center Interface for VLC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:barrywardell|Barry Wardell]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:ILEoo|Ilkka Ollakka]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:While it is easy to use and functional, the existing default, Qt based GUI for VLC is quite minimal and basic. I propose to develop a new &amp;quot;Media Center&amp;quot; style GUI. This GUI will be based on Qt/OpenGL and will aim to be aesthetically pleasing, while remaining easy to use and functional. It will draw on many nice features of other popular media center software such as Front Row, Windows Media Center and XBMC.&lt;br /&gt;
&lt;br /&gt;
==DXVA integration==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2009/DXVA integration]]&#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;
&lt;br /&gt;
:The Windows DXVA API gives access to video decoding and processing in the graphic card. Decoding with the GPU will reduce the load on the CPU and (hopefully) speed up the decoding. This project aims at creating a MPEG2 and H.264 decoder for VLC using this API.&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009_Rules&amp;diff=13794</id>
		<title>SoC 2009 Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009_Rules&amp;diff=13794"/>
		<updated>2009-03-28T16:42:36Z</updated>

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

		<summary type="html">&lt;p&gt;Geal: untar contribs before bootstrapping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
MSYS is a helper environment for MinGW, the compiler chain for Windows based on GCC. It is the fastest way to build VLC natively on Windows.&lt;br /&gt;
&lt;br /&gt;
=Install MinGW=&lt;br /&gt;
Use the main installer 5.1.4 found at&lt;br /&gt;
http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780&lt;br /&gt;
&lt;br /&gt;
Use the candidate release, and select gcc, g++ and MinGW make. It should download:&lt;br /&gt;
*mingwrt-3.15&lt;br /&gt;
*w32api-3.12&lt;br /&gt;
*binutils-2.18&lt;br /&gt;
*gcc-core-3.4.5&lt;br /&gt;
*gcc-g++-3.4.5&lt;br /&gt;
*mingw32-make-3.81&lt;br /&gt;
&lt;br /&gt;
=Install MSYS=&lt;br /&gt;
* Install MSys 1.0.10 with the exe: http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe&lt;br /&gt;
* Install MSys Developer Tooltkit: http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe&lt;br /&gt;
* Update to 1.0.11, untar it in your msys install:&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2&lt;br /&gt;
or&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-20080826.tar.gz (recommended on 64bits)&lt;br /&gt;
&lt;br /&gt;
* Update your autoconf, automake and libtool by downloading and installing them.&lt;br /&gt;
http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/libtool1.5-1.5.25a-1-bin.tar.bz2&lt;br /&gt;
&lt;br /&gt;
You can also compile them according to:&lt;br /&gt;
http://wiki.enlightenment.org/index.php/EFL_Windows_XP&lt;br /&gt;
http://www.mingw.org/wiki/msys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install other tools=&lt;br /&gt;
&lt;br /&gt;
Installing mingw-utils is recommended: http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Installation of wget too: http://prdownloads.sourceforge.net/mingw/wget-1.9.1-mingwPORT.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Although this is a mingwPORT package it already has a precompiled wget on board.&lt;br /&gt;
Extract the .tar.bz2 file. It contains wget.exe in the bin subfolder, extract it to mingw/bin.&lt;br /&gt;
&lt;br /&gt;
=Install Git and checkout VLC=&lt;br /&gt;
&lt;br /&gt;
Download Git on http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Launch Git bash:&lt;br /&gt;
 cd /c&lt;br /&gt;
 mkdir VLC&lt;br /&gt;
 cd VLC&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
launch MSys again&lt;br /&gt;
cd /c/VLC/vlc&lt;br /&gt;
&lt;br /&gt;
=PKG-CONFIG=&lt;br /&gt;
pkg-config is a mess, this is not NEWS... And you cannot compile it from Windows because of a few bugs...&lt;br /&gt;
Get Glib from GNOME: http://ftp.gnome.org/pub/GNOME/binaries/win32/glib/2.18/glib_2.18.2-1_win32.zip &lt;br /&gt;
Unzip it.&lt;br /&gt;
&lt;br /&gt;
Get PKG-CONFIG from GNOME:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip &lt;br /&gt;
Unzip it too.&lt;br /&gt;
&lt;br /&gt;
=Contribs=&lt;br /&gt;
Take the precompiled contribs:&lt;br /&gt;
http://people.videolan.org/~jb/Contribs/contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy them in your ~&lt;br /&gt;
 tar xvjf contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
 rm /usr/win32/bin/moc /usr/win32/bin/uic /usr/win32/bin/rcc&lt;br /&gt;
&lt;br /&gt;
=Bootstrap VLC=&lt;br /&gt;
This is a HACK. Don&#039;t do this at HOME.&lt;br /&gt;
cp extras/contrib/share/aclocal/* m4/&lt;br /&gt;
cp /usr/share/aclocal/* m4/&lt;br /&gt;
./bootstrap&lt;br /&gt;
It should warn about gettext... Just ignore.&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
 vim extras/package/win32/configure-msys.sh&lt;br /&gt;
Change CC to gcc and CXX to g++, I recommend to --disable-nls too&lt;br /&gt;
 sh extras/package/win32/configure-msys.sh&lt;br /&gt;
&lt;br /&gt;
=Compile=&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13593</id>
		<title>Win32CompileMSYSNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13593"/>
		<updated>2009-03-05T17:39:50Z</updated>

		<summary type="html">&lt;p&gt;Geal: Undo revision 13588 by Geal (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
MSYS is a helper environment for MinGW, the compiler chain for Windows based on GCC. It is the fastest way to build VLC natively on Windows.&lt;br /&gt;
&lt;br /&gt;
=Install MinGW=&lt;br /&gt;
Use the main installer 5.1.4 found at&lt;br /&gt;
http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780&lt;br /&gt;
&lt;br /&gt;
Use the candidate release, and select gcc, g++ and MinGW make. It should download:&lt;br /&gt;
*mingwrt-3.15&lt;br /&gt;
*w32api-3.12&lt;br /&gt;
*binutils-2.18&lt;br /&gt;
*gcc-core-3.4.5&lt;br /&gt;
*gcc-g++-3.4.5&lt;br /&gt;
*mingw32-make-3.81&lt;br /&gt;
&lt;br /&gt;
=Install MSYS=&lt;br /&gt;
* Install MSys 1.0.10 with the exe: http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe&lt;br /&gt;
* Install MSys Developer Tooltkit: http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe&lt;br /&gt;
* Update to 1.0.11, untar it in your msys install:&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2&lt;br /&gt;
or&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-20080826.tar.gz (recommended on 64bits)&lt;br /&gt;
&lt;br /&gt;
* Update your autoconf, automake and libtool by downloading and installing them.&lt;br /&gt;
http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/libtool1.5-1.5.25a-1-bin.tar.bz2&lt;br /&gt;
&lt;br /&gt;
You can also compile them according to:&lt;br /&gt;
http://wiki.enlightenment.org/index.php/EFL_Windows_XP&lt;br /&gt;
http://www.mingw.org/wiki/msys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install other tools=&lt;br /&gt;
&lt;br /&gt;
Installing mingw-utils is recommended: http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Installation of wget too: http://prdownloads.sourceforge.net/mingw/wget-1.9.1-mingwPORT.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Although this is a mingwPORT package it already has a precompiled wget on board.&lt;br /&gt;
Extract the .tar.bz2 file. It contains wget.exe in the bin subfolder, extract it to mingw/bin.&lt;br /&gt;
&lt;br /&gt;
=Install Git and checkout VLC=&lt;br /&gt;
&lt;br /&gt;
Download Git on http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Launch Git bash:&lt;br /&gt;
 cd /c&lt;br /&gt;
 mkdir VLC&lt;br /&gt;
 cd VLC&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
launch MSys again&lt;br /&gt;
cd /c/VLC/vlc&lt;br /&gt;
&lt;br /&gt;
=GCrypt=&lt;br /&gt;
You need gcrypt to bootstrap VLC. It might be stupid, but deal with it.&lt;br /&gt;
 cd extras/contrib&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 cd src&lt;br /&gt;
 make .gcrypt&lt;br /&gt;
&lt;br /&gt;
=PKG-CONFIG=&lt;br /&gt;
pkg-config is a mess, this is not NEWS... And you cannot compile it from Windows because of a few bugs...&lt;br /&gt;
Get Glib from GNOME: http://ftp.gnome.org/pub/GNOME/binaries/win32/glib/2.18/glib_2.18.2-1_win32.zip &lt;br /&gt;
Unzip it.&lt;br /&gt;
&lt;br /&gt;
Get PKG-CONFIG from GNOME:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip &lt;br /&gt;
Unzip it too.&lt;br /&gt;
&lt;br /&gt;
=Bootstrap VLC=&lt;br /&gt;
This is a HACK. Don&#039;t do this at HOME.&lt;br /&gt;
cp extras/contrib/share/aclocal/* m4/&lt;br /&gt;
cp /usr/share/aclocal/* m4/&lt;br /&gt;
./bootstrap&lt;br /&gt;
It should warn about gettext... Just ignore.&lt;br /&gt;
&lt;br /&gt;
=Contribs=&lt;br /&gt;
Take the precompiled contribs:&lt;br /&gt;
http://people.videolan.org/~jb/Contribs/contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy them in your ~&lt;br /&gt;
 tar xvjf contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
 rm /usr/win32/bin/moc /usr/win32/bin/uic /usr/win32/bin/rcc&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
 vim extras/package/win32/configure-msys.sh&lt;br /&gt;
Change CC to gcc and CXX to g++, I recommend to --disable-nls too&lt;br /&gt;
 sh extras/package/win32/configure-msys.sh&lt;br /&gt;
&lt;br /&gt;
=Compile=&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13590</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13590"/>
		<updated>2009-03-03T16:03:06Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* More Ideas */ Add DXVA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2009.&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 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 ideas will be included in the VLC 1.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;
This page is split 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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
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: ?&#039;&#039;&lt;br /&gt;
&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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 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: ?&#039;&#039;&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;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lua audio filters ===&lt;br /&gt;
&lt;br /&gt;
VLC currently uses Lua as an interface, to handle specific URLs, and to fetch media information. This project aims at creating an audio filter in Lua, and enabling users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures. OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== DXVA Integration ===&lt;br /&gt;
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.&lt;br /&gt;
&lt;br /&gt;
&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mini Projects - More ideas ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Original&#039;&#039;&#039; ideas will be &#039;&#039;&#039;rewarded.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].&lt;br /&gt;
&lt;br /&gt;
* Visualisation improvements (libprojectM implementation ? )&lt;br /&gt;
* 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_2009| Talk page]], &lt;br /&gt;
* use the [http://www.videolan.org/developers/lists.html vlc-devel] mailing list,&lt;br /&gt;
* come on IRC irc://irc.videolan.org #videolan&lt;br /&gt;
* contact one of the mentors or the backup mentors,&lt;br /&gt;
* or contact [[User:J-b| Jean-Baptiste Kempf]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
The proposed mentors are:&lt;br /&gt;
* ?&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>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13588</id>
		<title>Win32CompileMSYSNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13588"/>
		<updated>2009-03-02T17:22:03Z</updated>

		<summary type="html">&lt;p&gt;Geal: replace gcrypt and pkg-config hack by contribs building&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
MSYS is a helper environment for MinGW, the compiler chain for Windows based on GCC. It is the fastest way to build VLC natively on Windows.&lt;br /&gt;
&lt;br /&gt;
=Install MinGW=&lt;br /&gt;
Use the main installer 5.1.4 found at&lt;br /&gt;
http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780&lt;br /&gt;
&lt;br /&gt;
Use the candidate release, and select gcc, g++ and MinGW make. It should download:&lt;br /&gt;
*mingwrt-3.15&lt;br /&gt;
*w32api-3.12&lt;br /&gt;
*binutils-2.18&lt;br /&gt;
*gcc-core-3.4.5&lt;br /&gt;
*gcc-g++-3.4.5&lt;br /&gt;
*mingw32-make-3.81&lt;br /&gt;
&lt;br /&gt;
=Install MSYS=&lt;br /&gt;
* Install MSys 1.0.10 with the exe: http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe&lt;br /&gt;
* Install MSys Developer Tooltkit: http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe&lt;br /&gt;
* Update to 1.0.11, untar it in your msys install:&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2&lt;br /&gt;
or&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-20080826.tar.gz (recommended on 64bits)&lt;br /&gt;
&lt;br /&gt;
* Update your autoconf, automake and libtool by downloading and installing them.&lt;br /&gt;
http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/libtool1.5-1.5.25a-1-bin.tar.bz2&lt;br /&gt;
&lt;br /&gt;
You can also compile them according to:&lt;br /&gt;
http://wiki.enlightenment.org/index.php/EFL_Windows_XP&lt;br /&gt;
http://www.mingw.org/wiki/msys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install other tools=&lt;br /&gt;
&lt;br /&gt;
Installing mingw-utils is recommended: http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Installation of wget too: http://prdownloads.sourceforge.net/mingw/wget-1.9.1-mingwPORT.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Although this is a mingwPORT package it already has a precompiled wget on board.&lt;br /&gt;
Extract the .tar.bz2 file. It contains wget.exe in the bin subfolder, extract it to mingw/bin.&lt;br /&gt;
&lt;br /&gt;
=Install Git and checkout VLC=&lt;br /&gt;
&lt;br /&gt;
Download Git on http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Launch Git bash:&lt;br /&gt;
 cd /c&lt;br /&gt;
 mkdir VLC&lt;br /&gt;
 cd VLC&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
launch MSys again&lt;br /&gt;
cd /c/VLC/vlc&lt;br /&gt;
&lt;br /&gt;
=Contribs=&lt;br /&gt;
Build the third-party libs needed by VLC.&lt;br /&gt;
 cd extras/contrib&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 cd src&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
=Bootstrap VLC=&lt;br /&gt;
This is a HACK. Don&#039;t do this at HOME.&lt;br /&gt;
cp extras/contrib/share/aclocal/* m4/&lt;br /&gt;
cp /usr/share/aclocal/* m4/&lt;br /&gt;
./bootstrap&lt;br /&gt;
It should warn about gettext... Just ignore.&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
 vim extras/package/win32/configure-msys.sh&lt;br /&gt;
Change CC to gcc and CXX to g++, I recommend to --disable-nls too&lt;br /&gt;
 sh extras/package/win32/configure-msys.sh&lt;br /&gt;
&lt;br /&gt;
=Compile=&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13587</id>
		<title>Win32CompileMSYSNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13587"/>
		<updated>2009-03-02T17:19:00Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
MSYS is a helper environment for MinGW, the compiler chain for Windows based on GCC. It is the fastest way to build VLC natively on Windows.&lt;br /&gt;
&lt;br /&gt;
=Install MinGW=&lt;br /&gt;
Use the main installer 5.1.4 found at&lt;br /&gt;
http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780&lt;br /&gt;
&lt;br /&gt;
Use the candidate release, and select gcc, g++ and MinGW make. It should download:&lt;br /&gt;
*mingwrt-3.15&lt;br /&gt;
*w32api-3.12&lt;br /&gt;
*binutils-2.18&lt;br /&gt;
*gcc-core-3.4.5&lt;br /&gt;
*gcc-g++-3.4.5&lt;br /&gt;
*mingw32-make-3.81&lt;br /&gt;
&lt;br /&gt;
=Install MSYS=&lt;br /&gt;
* Install MSys 1.0.10 with the exe: http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe&lt;br /&gt;
* Install MSys Developer Tooltkit: http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe&lt;br /&gt;
* Update to 1.0.11, untar it in your msys install:&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2&lt;br /&gt;
or&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-20080826.tar.gz (recommended on 64bits)&lt;br /&gt;
&lt;br /&gt;
* Update your autoconf, automake and libtool by downloading and installing them.&lt;br /&gt;
http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/libtool1.5-1.5.25a-1-bin.tar.bz2&lt;br /&gt;
&lt;br /&gt;
You can also compile them according to:&lt;br /&gt;
http://wiki.enlightenment.org/index.php/EFL_Windows_XP&lt;br /&gt;
http://www.mingw.org/wiki/msys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install other tools=&lt;br /&gt;
&lt;br /&gt;
Installing mingw-utils is recommended: http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Installation of wget too: http://prdownloads.sourceforge.net/mingw/wget-1.9.1-mingwPORT.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Although this is a mingwPORT package it already has a precompiled wget on board.&lt;br /&gt;
Extract the .tar.bz2 file. It contains wget.exe in the bin subfolder, extract it to mingw/bin.&lt;br /&gt;
&lt;br /&gt;
=Install Git and checkout VLC=&lt;br /&gt;
&lt;br /&gt;
Download Git on http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Launch Git bash:&lt;br /&gt;
 cd /c&lt;br /&gt;
 mkdir VLC&lt;br /&gt;
 cd VLC&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
launch MSys again&lt;br /&gt;
cd /c/VLC/vlc&lt;br /&gt;
&lt;br /&gt;
=GCrypt=&lt;br /&gt;
You need gcrypt to bootstrap VLC. It might be stupid, but deal with it.&lt;br /&gt;
 cd extras/contrib&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 cd src&lt;br /&gt;
 make .gcrypt&lt;br /&gt;
&lt;br /&gt;
=PKG-CONFIG=&lt;br /&gt;
pkg-config is a mess, this is not NEWS... And you cannot compile it from Windows because of a few bugs...&lt;br /&gt;
Get Glib from GNOME: http://ftp.gnome.org/pub/GNOME/binaries/win32/glib/2.18/glib_2.18.2-1_win32.zip &lt;br /&gt;
Unzip it.&lt;br /&gt;
&lt;br /&gt;
Get PKG-CONFIG from GNOME:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip &lt;br /&gt;
Unzip it too.&lt;br /&gt;
&lt;br /&gt;
=Bootstrap VLC=&lt;br /&gt;
This is a HACK. Don&#039;t do this at HOME.&lt;br /&gt;
cp extras/contrib/share/aclocal/* m4/&lt;br /&gt;
cp /usr/share/aclocal/* m4/&lt;br /&gt;
./bootstrap&lt;br /&gt;
It should warn about gettext... Just ignore.&lt;br /&gt;
&lt;br /&gt;
=Contribs=&lt;br /&gt;
Take the precompiled contribs:&lt;br /&gt;
http://people.videolan.org/~jb/Contribs/contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy them in your ~&lt;br /&gt;
 tar xvjf contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
 rm /usr/win32/bin/moc /usr/win32/bin/uic /usr/win32/bin/rcc&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
 vim extras/package/win32/configure-msys.sh&lt;br /&gt;
Change CC to gcc and CXX to g++, I recommend to --disable-nls too&lt;br /&gt;
 sh extras/package/win32/configure-msys.sh&lt;br /&gt;
&lt;br /&gt;
=Compile=&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13586</id>
		<title>Win32CompileMSYSNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileMSYSNew&amp;diff=13586"/>
		<updated>2009-03-02T17:13:08Z</updated>

		<summary type="html">&lt;p&gt;Geal: New MSYS build tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
MSYS is a helper environment for MinGW, the compiler chain for Windows based on GCC. It is the fastest way to build VLC natively on Windows.&lt;br /&gt;
&lt;br /&gt;
=Install MinGW=&lt;br /&gt;
Use the main installer 5.1.4 found at&lt;br /&gt;
http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780&lt;br /&gt;
&lt;br /&gt;
Use the candidate release, and select gcc, g++ and MinGW make. It should download:&lt;br /&gt;
*mingwrt-3.15&lt;br /&gt;
*w32api-3.12&lt;br /&gt;
*binutils-2.18&lt;br /&gt;
*gcc-core-3.4.5&lt;br /&gt;
*gcc-g++-3.4.5&lt;br /&gt;
*mingw32-make-3.81&lt;br /&gt;
&lt;br /&gt;
=Install MSYS=&lt;br /&gt;
* Install MSys 1.0.10 with the exe: http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe&lt;br /&gt;
* Install MSys Developer Tooltkit: http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe&lt;br /&gt;
* Update to 1.0.11, untar it in your msys install:&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2&lt;br /&gt;
or&lt;br /&gt;
http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-20080826.tar.gz (recommended on 64bits)&lt;br /&gt;
&lt;br /&gt;
* Update your autoconf, automake and libtool by downloading and installing them.&lt;br /&gt;
http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2&lt;br /&gt;
http://downloads.sourceforge.net/mingw/libtool1.5-1.5.25a-1-bin.tar.bz2&lt;br /&gt;
&lt;br /&gt;
You can also compile them according to:&lt;br /&gt;
http://wiki.enlightenment.org/index.php/EFL_Windows_XP&lt;br /&gt;
http://www.mingw.org/wiki/msys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install other tools=&lt;br /&gt;
&lt;br /&gt;
Installing mingw-utils is recommended: http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Installation of wget too: http://prdownloads.sourceforge.net/mingw/wget-1.9.1-mingwPORT.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Although this is a mingwPORT package it already has a precompiled wget on board.&lt;br /&gt;
Extract the .tar.bz2 file. It contains wget.exe in the bin subfolder, extract it to mingw/bin.&lt;br /&gt;
&lt;br /&gt;
=Install Git and checkout VLC=&lt;br /&gt;
&lt;br /&gt;
Download Git on http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Launch Git bash:&lt;br /&gt;
 cd /c&lt;br /&gt;
 mkdir VLC&lt;br /&gt;
 cd VLC&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
launch MSys again&lt;br /&gt;
cd /c/VLC/vlc&lt;br /&gt;
&lt;br /&gt;
=GCrypt=&lt;br /&gt;
You need gcrypt to bootstrap VLC. It might be stupid, but deal with it.&lt;br /&gt;
 cd extras/contrib&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
 cd src&lt;br /&gt;
 make .gcrypt&lt;br /&gt;
&lt;br /&gt;
=PKG-CONFIG=&lt;br /&gt;
pkg-config is a mess, this is not NEWS... And you cannot compile it from Windows because of a few bugs...&lt;br /&gt;
Get Glib from GNOME: http://ftp.gnome.org/pub/GNOME/binaries/win32/glib/2.18/glib_2.18.2-1_win32.zip &lt;br /&gt;
Unzip it.&lt;br /&gt;
&lt;br /&gt;
Get PKG-CONFIG from GNOME:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip &lt;br /&gt;
Unzip it too.&lt;br /&gt;
&lt;br /&gt;
=Bootstrap VLC=&lt;br /&gt;
This is a HACK. Don&#039;t do this at HOME.&lt;br /&gt;
cp extras/contrib/share/aclocal/* m4/&lt;br /&gt;
cp /usr/share/aclocal/* m4/&lt;br /&gt;
./bootstrap&lt;br /&gt;
It should warn about gettext... Just ignore.&lt;br /&gt;
&lt;br /&gt;
=Contribs=&lt;br /&gt;
Take the precompiled contribs:&lt;br /&gt;
http://people.videolan.org/~jb/Contribs/contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy them in your ~&lt;br /&gt;
 tar xvjf contrib-20090219-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
 rm /usr/win32/bin/moc /usr/win32/bin/uic /usr/win32/bin/rcc&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
 vim extras/package/win32/configure-mingw.sh&lt;br /&gt;
Change CC to gcc and CXX to g++, I recommend to --disable-nls too&lt;br /&gt;
 sh extras/package/win32/configure-mingw.sh&lt;br /&gt;
&lt;br /&gt;
=Compile=&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13571</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13571"/>
		<updated>2009-02-27T17:41:58Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Qt embedded interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2009.&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 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 ideas will be included in the VLC 1.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;
This page is split 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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
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: ?&#039;&#039;&lt;br /&gt;
&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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 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: ?&#039;&#039;&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;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lua audio filters ===&lt;br /&gt;
&lt;br /&gt;
VLC currently uses Lua as an interface, to handle specific URLs, and to fetch media information. This project aims at creating an audio filter in Lua, and enabling users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX AL bindings for LibVLC ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a portable framework for handling audio, video and pictures. OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#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_2009| Talk page]], &lt;br /&gt;
* use the [http://www.videolan.org/developers/lists.html vlc-devel] mailing list,&lt;br /&gt;
* come on IRC irc://irc.videolan.org #videolan&lt;br /&gt;
* contact one of the mentors or the backup mentors,&lt;br /&gt;
* or contact [[User:J-b| Jean-Baptiste Kempf]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
The proposed mentors are:&lt;br /&gt;
* ?&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>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13570</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13570"/>
		<updated>2009-02-27T17:29:16Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Lua audio filters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2009.&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 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 ideas will be included in the VLC 1.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;
This page is split 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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
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: ?&#039;&#039;&lt;br /&gt;
&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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 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: ?&#039;&#039;&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;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lua audio filters ===&lt;br /&gt;
&lt;br /&gt;
VLC currently uses Lua as an interface, to handle specific URLs, and to fetch media information. This project aims at creating an audio filter in Lua, and enabling users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Qt embedded interface ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#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_2009| Talk page]], &lt;br /&gt;
* use the [http://www.videolan.org/developers/lists.html vlc-devel] mailing list,&lt;br /&gt;
* come on IRC irc://irc.videolan.org #videolan&lt;br /&gt;
* contact one of the mentors or the backup mentors,&lt;br /&gt;
* or contact [[User:J-b| Jean-Baptiste Kempf]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
The proposed mentors are:&lt;br /&gt;
* ?&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>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13564</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13564"/>
		<updated>2009-02-25T10:51:40Z</updated>

		<summary type="html">&lt;p&gt;Geal: removing IPhone port idea (already exists)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2009.&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 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 ideas will be included in the VLC 1.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;
This page is split 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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
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: ?&#039;&#039;&lt;br /&gt;
&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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 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: ?&#039;&#039;&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;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lua audio filters ===&lt;br /&gt;
&lt;br /&gt;
VLC currently uses Lua as an interface, to handle specific URLs, and to fetch media information. This project aism at creating an audio filter in Lua, and enabling users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geal&#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;
* ?&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>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13501</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13501"/>
		<updated>2009-02-21T15:29:12Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2009.&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 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 ideas will be included in the VLC 1.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;
This page is split 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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
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: ?&#039;&#039;&lt;br /&gt;
&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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== iPhone / iPod touch port ===&lt;br /&gt;
Port VLC to the iPhone / iPod touch platform. &lt;br /&gt;
&lt;br /&gt;
The student is not required to own such a device due to the availability of a simulator as part of the official SDK, although it may be helpful.&lt;br /&gt;
&lt;br /&gt;
This project requires good C, preferably Obj-C, knowledge and basic skills in shell programming (autotools, ...). Previous experience with development for embedded devices is a strong plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 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: ?&#039;&#039;&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;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lua audio filters ===&lt;br /&gt;
&lt;br /&gt;
VLC currently uses Lua as an interface, to handle specific URLs, and to fetch media information. This project aism at creating an audio filter in Lua, and enabling users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geal&#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;
* ?&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>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13500</id>
		<title>SoC 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2009&amp;diff=13500"/>
		<updated>2009-02-21T15:16:01Z</updated>

		<summary type="html">&lt;p&gt;Geal: New page: Google Summer of Code 2009.  == Introduction &amp;amp; Information ==  This wiki page covers the attempt by the VideoLAN project to act as a mentoring organization for [http://code.google.com/...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2009.&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 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 ideas will be included in the VLC 1.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;
This page is split 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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== QuickTimeVR Playback ===&lt;br /&gt;
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).&lt;br /&gt;
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: ?&#039;&#039;&lt;br /&gt;
&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: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== QTKit access ===&lt;br /&gt;
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ). &lt;br /&gt;
&lt;br /&gt;
This access module will also need a nice GUI Integration.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Leopard integration ===&lt;br /&gt;
* a QuickLook-plugin for OS X Leopard &lt;br /&gt;
* Video Output animations&lt;br /&gt;
* VLC_app (VLCKit based) improvements.&lt;br /&gt;
* VLCKit oneclick-Streaming Server implementation.&lt;br /&gt;
&lt;br /&gt;
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== iPhone / iPod touch port ===&lt;br /&gt;
Port VLC to the iPhone / iPod touch platform. &lt;br /&gt;
&lt;br /&gt;
The student is not required to own such a device due to the availability of a simulator as part of the official SDK, although it may be helpful.&lt;br /&gt;
&lt;br /&gt;
This project requires good C, preferably Obj-C, knowledge and basic skills in shell programming (autotools, ...). Previous experience with development for embedded devices is a strong plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated threading error detection ===&lt;br /&gt;
VLC is heavily multithreaded.&lt;br /&gt;
&lt;br /&gt;
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.&lt;br /&gt;
&lt;br /&gt;
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.&lt;br /&gt;
&lt;br /&gt;
This project requires working knowledge of the C programming language and POSIX threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 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: ?&#039;&#039;&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;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skins improvements ===&lt;br /&gt;
&lt;br /&gt;
Better video output integration.&lt;br /&gt;
&lt;br /&gt;
Better skin support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SVCD handling ===&lt;br /&gt;
&lt;br /&gt;
Make SVCD&#039;s work. Menu selection, navigation and hot spots. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Mini Projects - More ideas ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Original&#039;&#039;&#039; ideas will be &#039;&#039;&#039;rewarded.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].&lt;br /&gt;
&lt;br /&gt;
* Visualisation improvements (libprojectM implementation ? )&lt;br /&gt;
* 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;
* ?&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>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13387</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13387"/>
		<updated>2009-02-18T10:49:12Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use Mingw32CE, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge].&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --disable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale --disable-telnet&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine with ActiveSync installed and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
This GDB will upload vlc.exe to /gdb/ on the device. Make sure you uploaded all the VLC directory on your device.&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13386</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13386"/>
		<updated>2009-02-18T10:46:34Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Using and Debugging VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use Mingw32CE, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge].&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --disable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale --disable-telnet&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine with ActiveSync installed and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
This GDB will upload vlc.exe to /gdb/ on the device. Make sure you uploaded all the VLC directory on your device.&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13385</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13385"/>
		<updated>2009-02-18T10:44:13Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Running VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use Mingw32CE, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge].&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --disable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale --disable-telnet&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine with ActiveSync installed and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Running VLC ==&lt;br /&gt;
&lt;br /&gt;
Upload the VLC directory on your Windows CE device.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13384</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13384"/>
		<updated>2009-02-18T10:42:57Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Interacting with your device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use Mingw32CE, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge].&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --disable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale --disable-telnet&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine with ActiveSync installed and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Running VLC ==&lt;br /&gt;
&lt;br /&gt;
Upload the VLC directory on your Windows CE device, and add in its root mingwm10.dll. This the mingw runtime for Windows CE, and VLC won&#039;t work without it. You can find it in /opt/mingw32ce/arm-wince-mingw32ce/bin.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13383</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13383"/>
		<updated>2009-02-18T10:42:16Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Get mingw32ce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use Mingw32CE, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge].&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --disable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale --disable-telnet&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Running VLC ==&lt;br /&gt;
&lt;br /&gt;
Upload the VLC directory on your Windows CE device, and add in its root mingwm10.dll. This the mingw runtime for Windows CE, and VLC won&#039;t work without it. You can find it in /opt/mingw32ce/arm-wince-mingw32ce/bin.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13382</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13382"/>
		<updated>2009-02-18T10:40:24Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use CeGCC, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge]. There are two environments: CeGCC and Mingw32ce. We use Mingw32ce.&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --disable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale --disable-telnet&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Running VLC ==&lt;br /&gt;
&lt;br /&gt;
Upload the VLC directory on your Windows CE device, and add in its root mingwm10.dll. This the mingw runtime for Windows CE, and VLC won&#039;t work without it. You can find it in /opt/mingw32ce/arm-wince-mingw32ce/bin.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13381</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=13381"/>
		<updated>2009-02-18T10:37:25Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Get the source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use CeGCC, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge]. There are two environments: CeGCC and Mingw32ce. We use Mingw32ce.&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;/opt/mingw32ce/bin/arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;/opt/mingw32ce/bin/arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --enable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --disable-optimize-memory --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Running VLC ==&lt;br /&gt;
&lt;br /&gt;
Upload the VLC directory on your Windows CE device, and add in its root mingwm10.dll. This the mingw runtime for Windows CE, and VLC won&#039;t work without it. You can find it in /opt/mingw32ce/arm-wince-mingw32ce/bin.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12917</id>
		<title>Hacker Guide/Audio Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12917"/>
		<updated>2008-12-21T15:04:55Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Module descriptor */  fix macros&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
&lt;br /&gt;
=Writing an audio filter=&lt;br /&gt;
&lt;br /&gt;
==Module descriptor==&lt;br /&gt;
 static int  Open     ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t] *p_this );&lt;br /&gt;
 static void Close    ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t] *p_this );&lt;br /&gt;
 static void DoWork   ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__instance__t.html aout_instance_t] *p_aout, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__filter__t.html aout_filter_t] *p_filter, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t] *p_in_buf, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t] *p_out_buf );&lt;br /&gt;
 &lt;br /&gt;
 vlc_module_begin()&lt;br /&gt;
     set_description( N_(&amp;quot;audio filter x&amp;quot;) )&lt;br /&gt;
     set_shortname( N_(&amp;quot;audio filter x&amp;quot;) )&lt;br /&gt;
     set_category( CAT_AUDIO )&lt;br /&gt;
     set_subcategory( SUBCAT_AUDIO_AFILTER )&lt;br /&gt;
     add_shortcut( &amp;quot;afx&amp;quot; )&lt;br /&gt;
     set_capability( &amp;quot;audio filter&amp;quot;, 0 )&lt;br /&gt;
     set_callbacks( Open, Close )&lt;br /&gt;
 vlc_module_end()&lt;br /&gt;
&lt;br /&gt;
==Mandatory structures==&lt;br /&gt;
*aout_filter_sys_t&lt;br /&gt;
&lt;br /&gt;
==I/O Buffers==&lt;br /&gt;
Data comes in and out the plugin in an [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t], one sample at a time, and in each sample, one block by channel.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|data stream&lt;br /&gt;
| ch 1&lt;br /&gt;
| ch 2&lt;br /&gt;
| ch 1&lt;br /&gt;
| ch 2&lt;br /&gt;
| ch 1&lt;br /&gt;
| ch 2&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample 1&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample 2&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample 3&lt;br /&gt;
| ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it returns 0 if it is able to do the whole transformation between p_filter-&amp;gt;input and p_filter-&amp;gt;output. If you can do only part of the transformation, say you can&#039;t do it (if the aout core doesn&#039;t find a fitting filter, it will split the transformation and ask you again).&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
Audio filters can be of three types :&lt;br /&gt;
&lt;br /&gt;
*Converters : change i_format (for instance from float32 to s16).&lt;br /&gt;
*Resamplers : change i_rate (for instance from 48 kHz to 44.1 kHz).&lt;br /&gt;
*Channel mixers : change i_physical_channels/i_original_channels (for instance from 5.1 to stereo). &lt;br /&gt;
&lt;br /&gt;
Audio filters can also combine any of these types. For instance you can have an audio filter which transforms A/52 5.1 to float32 stereo.&lt;br /&gt;
&lt;br /&gt;
The constructor must also set p_filter-&amp;gt;b_in_place. If it&#039;s 0, the aout core will allocate a new buffer for the output. If it&#039;s 1, when you write a byte in the output buffer, it destroys the same byte in the input buffer (they share the same memory area). Some filters can work in place because they just do a linear transformation (like float32-&amp;gt;s16), but most filters will want b_in_place = 0. The filter can allocate private data in p_filter-&amp;gt;p_sys. Do not forget to deallocate it in the destructor.&lt;br /&gt;
&lt;br /&gt;
The p_filter-&amp;gt;pf_do_work gets an input and an output buffer as arguments, and process them. At the end of the processing, do not forget to set p_out_buf-&amp;gt;i_nb_samples and p_out_buf-&amp;gt;i_nb_bytes, since they aren&#039;t inited by the aout core (their values can change between input and output and it&#039;s not quite predictible).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Talk:SoC_2008/WinCE_Port&amp;diff=12463</id>
		<title>Talk:SoC 2008/WinCE Port</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Talk:SoC_2008/WinCE_Port&amp;diff=12463"/>
		<updated>2008-09-22T10:30:49Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ll be watching this as I&#039;ve always used the WinCE port for my Dell Axim x3 Windows Mobile 2003 device. Good luck ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I too will be keeping an eye on this project. I can&#039;t get the old port to run at all on my WM2003SE iPaq - it just does nothing. It&#039;s a shame really. I absolutely &#039;&#039;need&#039;&#039;  a video player that does OGG Theora! [[User:KevinLange|KevinLange]] 17:05, 31 May 2008 (CEST) (update: I got the even more unofficial port to open, but it doesn&#039;t play videos and is just plain &amp;quot;not good&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
Thank you, I&#039;ll work hard to get a working version soon :) --[[User:Geal|Geal]] 13:56, 2 June 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Progress? ==&lt;br /&gt;
&lt;br /&gt;
Midterm evaluations have come and gone. Any progress to report?&lt;br /&gt;
[[User:KevinLange|KevinLange]] 21:59, 16 July 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Now the LibVLC compiles without any problem, and I&#039;m adding plugins. I could play some music on my phone, it&#039;s beginning to work :)&lt;br /&gt;
For now, I work on the interface, but I&#039;m not really changing the look and feel. That will be for the end of the summer. I&#039;ll soon add the video output, and then, I may need some intensive testing :) --[[User:Geal|Geal]] 10:54, 23 July 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Anything new? It&#039;s almost final evaluation time. [[User:KevinLange|KevinLange]] 21:16, 20 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I have timing issues: it doesn&#039;t play more than a few seconds. There are recents commits to the main tree that may fix this bug, but I didn&#039;t update my tree yet. You can see what external libs were ported on [[Contrib_Status]]. Many others will come :)&lt;br /&gt;
VLC on WinCE won&#039;t be released this week, and I don&#039;t think this will be for next release. But I&#039;ll make test binaries when this timing bug will be fixed, and then, patches and bug reports will be welcomed :) I&#039;m sorry I didn&#039;t finish it in time... I&#039;ll go on contributing to VLC, so I won&#039;t drop my project right now! --[[User:Geal|Geal]] 10:29, 26 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Anything new? ==&lt;br /&gt;
&lt;br /&gt;
After using the new 0.9.2 of the regular VLC, I have to ask: For the interface, why not write one with QT? QT is available for the Pocket PC in the form of QT Embedded. The same interface could also be used on the Familiar port of VLC.&lt;br /&gt;
&lt;br /&gt;
And while I&#039;m here, anything new? Anything you&#039;d like help with (this is something I&#039;d really like to see happen, and I have plenty of programming experience and the tools required to help out)? [[User:KevinLange|KevinLange]] 01:46, 21 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
The Qt interface for WinCE could be a good idea, but I don&#039;t know anything about Qt... Feel free to do it ;)&lt;br /&gt;
&lt;br /&gt;
Nothing really new about the WinCE port: I wait for some big changes of LibVLC to be done, to adapt my code. And I&#039;ve been a bit busy with the Windows version.&lt;br /&gt;
&lt;br /&gt;
You can try to build it by reading the [[WinCECompile]] page. It can really help me to improve the port, because I did some ugly things to make it compile, and I don&#039;t remember everything I did :P --[[User:Geal|Geal]] 12:30, 22 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=UnixCompile&amp;diff=12457</id>
		<title>UnixCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=UnixCompile&amp;diff=12457"/>
		<updated>2008-09-20T16:58:05Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Final configuration */ --enable-ffmpeg doesn&amp;#039;t exist anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prepare your environment==&lt;br /&gt;
VLC uses gcc, automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&lt;br /&gt;
&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
== Get the 3rd party libs ==&lt;br /&gt;
Now you can start to configure VLC. Remember to first take a look at &amp;lt;tt&amp;gt;./configure --help&amp;lt;/tt&amp;gt;. Take a good look at that enormous list of options.&lt;br /&gt;
&lt;br /&gt;
=== General info ===&lt;br /&gt;
It is very important that you install and enable all the 3rd party libraries that you will be needing and let me tell you that that are a lot. If you don&#039;t install them you will end up with an application that well..... essentially doesn&#039;t do anything.&lt;br /&gt;
See [[Contrib_Status|here]] for a complete list.&lt;br /&gt;
&lt;br /&gt;
There are some very important dependencies: gettext (nls) for international support (required), libdvbpsi for mpeg files and streams support, libmad for mp3 decoding, libmpeg2 for mpeg 1 and 2 video support, ffmpeg (libavcodec, libavformats, libswscale) for support of mpeg4 and many other types of video, liba52 for dolby (AC3) sound, alsa for proper audio output, xvideo for proper video output, QT4 for proper GUI support and libdvd* for DVD support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be careful!&#039;&#039;&#039; Some of the libraries are better not to be installed (at all, beware of old installations) and should be linked to directly. These are mostly ffmpeg and liveMedia. &lt;br /&gt;
&lt;br /&gt;
There are also some libraries that are no longer being maintained and which we advise not to use. These include the gtk, gnome and kde GUIs, the glide and mga modules.&lt;br /&gt;
&lt;br /&gt;
===Get&#039;em===&lt;br /&gt;
There are a few ways to get those libs. You should use only one method at a time:&lt;br /&gt;
&lt;br /&gt;
* Using your distribution or portage system, in order to get all the needed libs (this is the preferred way):&lt;br /&gt;
For example on Debian or Ubuntu:&lt;br /&gt;
 # sudo apt-get build-dep vlc&lt;br /&gt;
&lt;br /&gt;
* Using the contribs system in VLC&#039;s sources&lt;br /&gt;
  % cd extras/contrib;&lt;br /&gt;
  % ./bootstrap;&lt;br /&gt;
  % make;&lt;br /&gt;
&lt;br /&gt;
This should download and build a lot of those libs for you.&lt;br /&gt;
&lt;br /&gt;
* Read the [[Contrib_Status|list]], download them and build by hand.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
===Special libs ===&lt;br /&gt;
Use &amp;lt;tt&amp;gt;--with-live555-path=path/to/livemedia/source/tree&amp;lt;/tt&amp;gt; in connection with --enable-live555&amp;lt;/tt&amp;gt;.&lt;br /&gt;
For ffmpeg, the only reliable way for VLC&#039;s configure to know how your ffmpeg&#039;s libs were compiled is to use pkg-config. So you need to set PKG_CONFIG_PATH correctly if your ffmpeg is not installed at the default place or you want to use static linking.&lt;br /&gt;
&lt;br /&gt;
=== Final configuration ===&lt;br /&gt;
If you want to install VLC into another directory, run&lt;br /&gt;
 % ./configure --prefix=/path/to/install/folder/&lt;br /&gt;
&lt;br /&gt;
This is an example of a typical VLC configure line:&lt;br /&gt;
 % ./configure --enable-x11 --enable-xvideo --disable-gtk --enable-sdl --enable-avcodec --enable-avformat --enable-swscale --enable-mad --enable-libdvbpsi --enable-a52 --enable-libmpeg2 --enable-dvdnav --enable-faad --enable-vorbis --enable-ogg --enable-theora --enable-faac --enable-mkv --enable-freetype --enable-fribidi --enable-speex --enable-flac --enable-live555 --with-live555-tree=/usr/lib/live --enable-caca --enable-skins --enable-skins2 --enable-alsa --disable-kde --enable-qt4 --enable-ncurses --enable-release&lt;br /&gt;
 &lt;br /&gt;
[[User:J-b#VLC_configure_line|Here]] is another.&lt;br /&gt;
&lt;br /&gt;
== Compilation ==&lt;br /&gt;
Compile VLC:&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
As root (type &amp;quot;su&amp;quot; to change to root account):&lt;br /&gt;
 # make install&lt;br /&gt;
&lt;br /&gt;
To remove files created during the compile (optional) type:&lt;br /&gt;
 % make clean&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== Cygwin ===&lt;br /&gt;
Compiling on [[Win32CompileCygwin|Cygwin]] may be broken from time to time.&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
Debian users who want to compile VLC should install the packages below. &lt;br /&gt;
Note: If you just want to &#039;&#039;use&#039;&#039; VLC media player then simply install the package vlc (&amp;lt;tt&amp;gt;sudo apt-get install vlc&amp;lt;/tt&amp;gt;) - the unstable version is normally very up-to-date (and stable is, er, stable ;-)&lt;br /&gt;
* [http://packages.debian.org/unstable/libdevel/libavcodec-dev libavcodec-dev]&lt;br /&gt;
* [http://packages.debian.org/unstable/libdevel/libpostproc-dev libpostproc-dev]&lt;br /&gt;
* [http://packages.debian.org/unstable/libdevel/libmpeg2-4-dev libmpeg2-4-dev]&lt;br /&gt;
&lt;br /&gt;
== Version ==&lt;br /&gt;
This HOWTO has been originally written by [mailto:hartman_at_videolan_dot_org Derk-Jan Hartman].&lt;br /&gt;
&lt;br /&gt;
It has been modified and updated by [[User:J-b| Jean-Baptiste Kempf]].&lt;br /&gt;
&lt;br /&gt;
It was spelled-checked and sudoed by [[User:materthron|materthron]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileCygwinNew&amp;diff=12456</id>
		<title>Win32CompileCygwinNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileCygwinNew&amp;diff=12456"/>
		<updated>2008-09-20T16:55:36Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Configure script for compiling VLC */ --enable-ffmpeg doesn&amp;#039;t exist anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a new version of the Win32CompileCygwin written by [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
&#039;&#039;&#039;This version ONLY works for 0.9.x.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: building VLC on Cygwin has ever been a failure-prone task. It is also very slow. You should really consider cross-compiling from Linux (on a virtual machine, via dual-boot or from another computer). You were warned.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for Windows users with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
This guide uses [http://www.cygwin.com &#039;&#039;&#039;Cygwin&#039;&#039;&#039;] a Linux-like environment for Windows used for compilation of the VLC source code.&lt;br /&gt;
&lt;br /&gt;
Start off by creating a VLC and a download folder on your hard drive where you can put all the installation files:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\&lt;br /&gt;
 C:\VLC\Downloads&lt;br /&gt;
&lt;br /&gt;
For further reference, the assumption is made that the local user will be &#039;Administrator&#039;.&lt;br /&gt;
&lt;br /&gt;
=Cygwin=&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://www.cygwin.com/cygwin/setup.exe Cygwin setup] and save it in your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\Downloads\&lt;br /&gt;
&lt;br /&gt;
More info about Cygwin can be found at http://www.cygwin.com or http://sourceware.org/cygwin&lt;br /&gt;
&lt;br /&gt;
==Selecting Cygwin packages to install==&lt;br /&gt;
&lt;br /&gt;
Run the setup program with the following options:&lt;br /&gt;
&lt;br /&gt;
Installation type : Install from Internet (default)&lt;br /&gt;
&lt;br /&gt;
Root directory : C:\cygwin (default)&lt;br /&gt;
&lt;br /&gt;
Local Package directory : C:\VLC\Downloads\cygwin (your download location)&lt;br /&gt;
&lt;br /&gt;
Internet Connection : Direct Connection (preferred, if it fails try another)&lt;br /&gt;
&lt;br /&gt;
Download Site : Choose a download site closest to you (FTP preferred)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the &amp;quot;Select Packages&amp;quot; section of the installation process you can select packages by clicking the button with the rotating 2 arrows. (This is under the &amp;quot;New&amp;quot; section). It shows &amp;quot;Skip&amp;quot; next to the button if the package isn&#039;t selected yet.&lt;br /&gt;
&lt;br /&gt;
Clicking the button a few times will rotate through the possible package versions including &amp;quot;Skip&amp;quot; (meaning do not install or remove if installed) and &amp;quot;Keep&amp;quot; (meaning keep using the current installed version). If a package was already installed it will also show the &amp;quot;Current&amp;quot; version just to the left of it.&lt;br /&gt;
&lt;br /&gt;
Select the following packages (some others will automatically be selected as well):&lt;br /&gt;
&lt;br /&gt;
 Archive&lt;br /&gt;
   unzip&lt;br /&gt;
   zip&lt;br /&gt;
&lt;br /&gt;
 Devel&lt;br /&gt;
   autoconf&lt;br /&gt;
   automake&lt;br /&gt;
   binutils&lt;br /&gt;
   cvs&lt;br /&gt;
   expat&lt;br /&gt;
   gcc&lt;br /&gt;
   gcc-core&lt;br /&gt;
   gcc-g++&lt;br /&gt;
   gcc-mingw&lt;br /&gt;
   gcc-mingw-core&lt;br /&gt;
   gcc-mingw-g++&lt;br /&gt;
   gdb&lt;br /&gt;
   gettext&lt;br /&gt;
   gettext-devel&lt;br /&gt;
   git&lt;br /&gt;
   libiconv&lt;br /&gt;
   libgcrypt-devel&lt;br /&gt;
   libtool&lt;br /&gt;
   make&lt;br /&gt;
   mingw-runtime&lt;br /&gt;
   nasm&lt;br /&gt;
   patchutils&lt;br /&gt;
   pkg-config&lt;br /&gt;
   subversion&lt;br /&gt;
&lt;br /&gt;
 Editor&lt;br /&gt;
   vim&lt;br /&gt;
&lt;br /&gt;
 Libs&lt;br /&gt;
   libgcrypt&lt;br /&gt;
&lt;br /&gt;
 Web&lt;br /&gt;
   curl (optional: for building extras/contrib)&lt;br /&gt;
   wget (optional: for building extras/contrib)&lt;br /&gt;
&lt;br /&gt;
==Cygwin environment==&lt;br /&gt;
&lt;br /&gt;
Start Cygwin from the icon on your desktop (With Windows Vista run it with admin rights, so right click and select &amp;quot;Run as administrator&amp;quot;). If it runs for the first time it will automatically create a home\&amp;quot;username&amp;quot; folder in the Cygwin environment; user being the currently logged on Windows user. Assuming this is the &#039;Administrator&#039; user it will create the following folder:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\home\Administrator (example)&lt;br /&gt;
&lt;br /&gt;
NOTE: On your desktop, you can rightclick the Cygwin icon and (in the Options field of the Cygwin Properties) set the Command history Buffer size to as large as possible: 999. This setting will make it possible to scroll back further in the Cygwin environment.&lt;br /&gt;
&lt;br /&gt;
=VLC source code=&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
The very latest VLC source code can be obtained through a tool called Git. The Cygwin package we&#039;re about to install comes with an internal git component.&lt;br /&gt;
&lt;br /&gt;
 cd /cygdrive/c/VLC/&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Applies to:&lt;br /&gt;
&lt;br /&gt;
 Windows XP Service Pack 2 with Security Update &#039;&#039;&#039;KB925902&#039;&#039;&#039; installed&lt;br /&gt;
 Windows XP Service Pack 3&lt;br /&gt;
&lt;br /&gt;
There is a problem on Windows XP (and possibly on other Microsoft Operating Systems) with &#039;git clone&#039; which aborts unexpectedly with a Cygwin error during the &#039;checking out files&#039; (reproducable every time and at the same percentage) at the end of the clone procedure:&lt;br /&gt;
&lt;br /&gt;
 $ 2 [main] git 4012 D:\cygwin\bin\git.exe:&lt;br /&gt;
   *** fatal error - &#039;&#039;&#039;could not load shell32, Win32 error 487&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This has been verified (May 22, 2008) against the currently available Cygwin 1.5.25-12 with git package versions 1.5.5.1-1 and 1.5.4-1 and is a generic problem which also affects cloning from other git repositories (although x264.git seems unaffected).&lt;br /&gt;
&lt;br /&gt;
The issue is referred to in the mail archives of the Cygwin project mailing list here &lt;br /&gt;
[http://sourceware.org/ml/cygwin/2007-07/msg00858.html Git error on Cygwin].&lt;br /&gt;
&lt;br /&gt;
By eliminating the impossible, whatever remained, however improbable, it is the following Windows Security Update (April 3, 2007) which is actually the cause of the Cygwin issue: [http://www.microsoft.com/technet/security/bulletin/ms07-017.mspx Microsoft Security Bulletin MS07-017 - Vulnerabilities in GDI Could Allow Remote Code Execution (925902)]&lt;br /&gt;
&lt;br /&gt;
Even though the same Security Update applies to the following systems, these are reported not to be affected:&lt;br /&gt;
&lt;br /&gt;
 Windows Vista Service Pack 1&lt;br /&gt;
 Windows 2003 Server Standard Service Pack 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;It is possible to get &#039;git clone&#039; working again on the affected systems by removing the Security Update (KB925902) but this is obviously not recommended for security reasons.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
If you get following error messages&lt;br /&gt;
&lt;br /&gt;
 fatal: pack has bad object at offset 98737692: inflate returned -3&lt;br /&gt;
 fatal: index-pack failed&lt;br /&gt;
 fetch-pack from &#039;git://git.videolan.org/vlc.git&#039; failed.&lt;br /&gt;
&lt;br /&gt;
then please try to use git from basic Windows command prompt (Start -&amp;gt; Run -&amp;gt; cmd), not from Cygwin shell. &lt;br /&gt;
&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
&lt;br /&gt;
You can do the same by using the snapshots in the [http://nightlies.videolan.org/ nightly builds] site.&lt;br /&gt;
&lt;br /&gt;
=Bootstrap=&lt;br /&gt;
&lt;br /&gt;
Open the &#039;&#039;&#039;configure.ac&#039;&#039;&#039; file, and modify the requirement for gettext 0.17 to 0.15 (so replace line &#039;&#039;&#039;AM_GNU_GETTEXT_VERSION(0.17)&#039;&#039;&#039; with line &#039;&#039;&#039;AM_GNU_GETTEXT_VERSION(0.15)&#039;&#039;&#039;), and then run bootstrap.&lt;br /&gt;
&lt;br /&gt;
 cd vlc&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
&lt;br /&gt;
= External libraries to the source code=&lt;br /&gt;
&lt;br /&gt;
VLC depends on other libraries (code) to provide some features like AC3 audio or MPEG-4 video encoding/decoding etc.&lt;br /&gt;
&lt;br /&gt;
Depending on your needs you will have to install and compile some or all of these external libraries. &lt;br /&gt;
&lt;br /&gt;
== Get the Win32 &amp;quot;contrib&amp;quot; package ==&lt;br /&gt;
&lt;br /&gt;
A package with most of these libraries already compiled so it&#039;s actually really easy to compile a full-featured version of vlc can be found here:&lt;br /&gt;
&lt;br /&gt;
http://download.videolan.org/pub/testing/win32/&lt;br /&gt;
&lt;br /&gt;
Download the latest version of a &amp;quot;contrib&amp;quot; package for win32:&lt;br /&gt;
&lt;br /&gt;
 contrib-20060730-win32-bin-gcc-3.4.5-only.tar.bz2 (example)&lt;br /&gt;
&lt;br /&gt;
Those days, you should use&lt;br /&gt;
 http://people.videolan.org/~jb/Contribs/contrib-20080702-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s a good idea to check the INSTALL.Win32 file in the VLC source directory for the appropriate contrib download file.&lt;br /&gt;
&lt;br /&gt;
Save it into your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\Downloads\&lt;br /&gt;
&lt;br /&gt;
==Installing the Win32 &amp;quot;contrib&amp;quot; package in Cygwin==&lt;br /&gt;
&lt;br /&gt;
Start Cygwin and enter the following command in your shell:&lt;br /&gt;
&lt;br /&gt;
 cd /cygdrive/c/VLC/Downloads&lt;br /&gt;
 tar xf contrib-20080702-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
&lt;br /&gt;
Replace with your version of the &amp;quot;contrib&amp;quot; file and DON&#039;T FORGET THE / (slash)&lt;br /&gt;
at the end.&lt;br /&gt;
&lt;br /&gt;
This will extract the contents of the file into usr/win32 folder within your Cygwin environment.&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure to DELETE your old version (/usr/win32 folder) instead of extracting a new version on top of it.&lt;br /&gt;
&lt;br /&gt;
==Keeping the Win32 &amp;quot;contrib&amp;quot; package up-to-date==&lt;br /&gt;
&lt;br /&gt;
For maintenance purposes periodically check:&lt;br /&gt;
&lt;br /&gt;
http://download.videolan.org/pub/testing/win32/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
&lt;br /&gt;
In order to make our lives just a bit easier the following section describes what commandline options should be used for compiling and those commands will then be put into a &amp;quot;script&amp;quot; that can be executed (rather than having to copy and paste all the time).&lt;br /&gt;
&lt;br /&gt;
==Configure script for compiling VLC==&lt;br /&gt;
&lt;br /&gt;
Create a new text document with the following lines:&lt;br /&gt;
&lt;br /&gt;
  PATH=/usr/win32/bin:$PATH \&lt;br /&gt;
  PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I/usr/win32/include -I/usr/win32/include/ebml&amp;quot; \&lt;br /&gt;
  LDFLAGS=-L/usr/win32/lib \&lt;br /&gt;
  CC=&amp;quot;gcc -mno-cygwin&amp;quot; CXX=&amp;quot;g++ -mno-cygwin&amp;quot; \&lt;br /&gt;
  ./configure \&lt;br /&gt;
      --host=i686-pc-mingw32 \&lt;br /&gt;
      --disable-gtk \&lt;br /&gt;
      --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \&lt;br /&gt;
      --enable-avcodec --enable-avformat --enable-swscale \&lt;br /&gt;
      --enable-faad --enable-flac --enable-theora \&lt;br /&gt;
      --with-wx-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-freetype-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-fribidi-config-path=/usr/win32/bin \&lt;br /&gt;
      --enable-live555 --with-live555-tree=/usr/win32/live.com \&lt;br /&gt;
      --enable-caca --with-caca-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-xml2-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-dvdnav-config-path=/usr/win32/bin \&lt;br /&gt;
      --disable-cddax --disable-vcdx --enable-goom \&lt;br /&gt;
      --enable-twolame --enable-dvdread \&lt;br /&gt;
      --enable-debug  --enable-dca \&lt;br /&gt;
      --disable-mkv --disable-taglib&lt;br /&gt;
&lt;br /&gt;
NOTE: The following options are added for debug purposes and makes the final package a bit larger but the advantage is it&#039;s easier to debug in case of crash reports:&lt;br /&gt;
&lt;br /&gt;
 --disable-optimizations&lt;br /&gt;
 --enable-debug&lt;br /&gt;
&lt;br /&gt;
If you want to report a crash bug to the VLC team, it is necessary that you provide a stack backtrace. Unfortunately, Windows automatic crash reporter cannot generate such a backtrace as debug symbols used by GCC compiler aren&#039;t understood by Windows, therefore we suggest that you install Dr. MinGW (http://jrfonseca.dyndns.org/projects/gnu-win32/software/drmingw/) which will extend Windows Just-In-Time Debugger and provide the necessary debug information.&lt;br /&gt;
&lt;br /&gt;
NOTE: The following options is needed for Qt4 support:&lt;br /&gt;
&lt;br /&gt;
 --enable-qt4&lt;br /&gt;
&lt;br /&gt;
As of version 0.9.0 VLC will include the Qt interface. More information can be found about QT here: http://www.trolltech.com&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Win32 contrib package&amp;quot; at present includes the linux and Windows equivalents of uic, moc and roc executables which are required for building this interface.&lt;br /&gt;
&lt;br /&gt;
The linuxs executables have to be &#039;&#039;&#039;deleted&#039;&#039;&#039; from the contrib folder:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\usr\win32\bin\moc (example)&lt;br /&gt;
 C:\cygwin\usr\win32\bin\rcc (example)&lt;br /&gt;
 C:\cygwin\usr\win32\bin\uic (example)&lt;br /&gt;
&lt;br /&gt;
Save as filename in your &amp;quot;scripts&amp;quot; folder at your download/install location:&lt;br /&gt;
&lt;br /&gt;
 configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
NOTE: Save using &amp;quot;All files&amp;quot; and not &amp;quot;Text files&amp;quot; otherwise Windows might append the extension .txt&lt;br /&gt;
&lt;br /&gt;
Copy the file into your home directory:&lt;br /&gt;
 &lt;br /&gt;
 C:\cygwin\home\Administrator&lt;br /&gt;
&lt;br /&gt;
Start Cygwin and enter the following command in your shell: &lt;br /&gt;
&lt;br /&gt;
 dos2unix configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
After your configure-vlc.sh is completed, copy it to your vlc directory and run it:&lt;br /&gt;
&lt;br /&gt;
 ./configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
If it complains about permissions, use chmod and try again:&lt;br /&gt;
&lt;br /&gt;
 chmod 777 configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
NOTE. (If you plan to use JVLC) To make vlc-control.dll accessible by Java on &#039;&#039;Windows&#039;&#039; cofigure-vlc.sh should be modified to include &amp;quot;-Wl,--add-stdcal-alias&amp;quot;. Example:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 CC=&amp;quot;gcc -mno-cygwin -Wl,--add-stdcall-alias&amp;quot; CXX=&amp;quot;g++ -mno-cygwin -Wl,--add-stdcall-alias&amp;quot; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===Mozilla plugin===&lt;br /&gt;
&lt;br /&gt;
If you want to build Mozilla plugin, add this to your configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
 --enable-mozilla&lt;br /&gt;
&lt;br /&gt;
===POSIX emulation layer===&lt;br /&gt;
&lt;br /&gt;
VLC can be built with or without the so called POSIX emulation layer. Without is the default and is usually better (and with hasn&#039;t been tested for quite some time). If you do want to use the emulation layer, then just leave out the line with the following options:&lt;br /&gt;
&lt;br /&gt;
 CC=&amp;quot;gcc -mno-cygwin&amp;quot; CXX=&amp;quot;g++ -mno-cygwin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Compiling source code=&lt;br /&gt;
&lt;br /&gt;
It&#039;s time to start Cygwin again...&lt;br /&gt;
&lt;br /&gt;
==Compiling VLC==&lt;br /&gt;
&lt;br /&gt;
Enter the following commands in your Cygwin shell:&lt;br /&gt;
&lt;br /&gt;
 cd vlc&lt;br /&gt;
&lt;br /&gt;
Build it! (remember to run configure-vlc.sh before first build)&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Cross your fingers and wait... because it might take few hours before compilation is done.&lt;br /&gt;
If you have multicore CPU or multi CPU box, you can use -j2 switch (or maybe -j3 or -j4 etc.) to speed up make process&lt;br /&gt;
&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
==Creating self contained packages==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can either run VLC directly from the source tree or you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32&lt;br /&gt;
&lt;br /&gt;
(Same as above but will also create an auto-installer package. You will need to have NSIS installed in its default location for this to work).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If you have permissions problems running vlc.exe after packaging, rename or delete vlc.exe.manifest&lt;br /&gt;
&lt;br /&gt;
=Advanced usage=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Updating Cygwin package versions==&lt;br /&gt;
&lt;br /&gt;
If you need to update or install additional packages you can just run the Cygwin setup.exe from your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\Downloads\cygwin\setup.exe          (example)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GDB (Gnu Debugger)==&lt;br /&gt;
&lt;br /&gt;
This section requires that you installed the gdb (Gnu Debugger) in Cygwin.&lt;br /&gt;
&lt;br /&gt;
This is a typical example of creating a crashlog:&lt;br /&gt;
&lt;br /&gt;
 cd vlc-trunk&lt;br /&gt;
&lt;br /&gt;
 gdb --args vlc.exe --fast-mutex --reset-config --reset-plugins-cache&lt;br /&gt;
&lt;br /&gt;
NOTE: vlc-0.9.0 uses libtool for building sources, if you want to debug from the source tree, you should type the following command instead:&lt;br /&gt;
&lt;br /&gt;
 libtool --mode=execute gdb --args vlc --reset-config --reset-plugins-cache&lt;br /&gt;
&lt;br /&gt;
In the debugger mode run the program and make sure you reset the preferences!&lt;br /&gt;
&lt;br /&gt;
 (gdb) run &lt;br /&gt;
&lt;br /&gt;
NOTE: the (gdb) is just a prompt which means you are in the debugger mode, please note that &#039;&#039;--fast-mutex&#039;&#039; option is no longer supported in vlc-0.9.0&lt;br /&gt;
&lt;br /&gt;
It will now take a lot longer than usual for VLC to start :)&lt;br /&gt;
&lt;br /&gt;
Now operate VLC as you would normally do. As soon as a crash issue occurs&lt;br /&gt;
you&#039;ll notice a line like this:&lt;br /&gt;
&lt;br /&gt;
 Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
 0x0041394c in playlist_ItemGetById (p_playlist=0x19ec4f8, i_id=29)&lt;br /&gt;
     at src/playlist/item-ext.c:459&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
 459             i = i_bottom + ( i_top - i_bottom ) / 2;&lt;br /&gt;
&lt;br /&gt;
Now you can do a &amp;quot;backtrace&amp;quot; by using the bt command:&lt;br /&gt;
&lt;br /&gt;
 (gdb) bt&lt;br /&gt;
&lt;br /&gt;
And output similar to this will be created:&lt;br /&gt;
&lt;br /&gt;
 #0  0x0041394c in playlist_ItemGetById (p_playlist=0x19ec4f8, i_id=29) &lt;br /&gt;
     at src/playlist/item-ext.c:459&lt;br /&gt;
 #1  0x0b26bbf7 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29fef8}) at playlist.cpp:695&lt;br /&gt;
 #2  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29e8b0}) at playlist.cpp:689&lt;br /&gt;
 #3  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29a818}) at playlist.cpp:689&lt;br /&gt;
 #4  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x299718}) at playlist.cpp:689&lt;br /&gt;
 #5  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0xffff0000}) at playlist.cpp:689&lt;br /&gt;
 #6  0x0b26bf49 in wxvlc::Playlist::AppendItem (this=0x1822e288,&lt;br /&gt;
     event=@0x1827afd0) at playlist.cpp:564&lt;br /&gt;
 #7  0x0b2757fc in wxvlc::Playlist::OnPlaylistEvent (this=0x1822e288,&lt;br /&gt;
     event=@0x1827afd0) at playlist.cpp:1438&lt;br /&gt;
 #8  0x0b3771b8 in wxEvtHandler::ProcessEventIfMatches ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #9  0x0b376a1c in wxEventHashTable::HandleEvent ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #10 0x0b37730d in wxEvtHandler::ProcessEvent ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #11 0x0b37711b in wxEvtHandler::ProcessPendingEvents ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
 #12 0x0b376017 in wxAppConsole::ProcessPendingEvents ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #13 0x0b3ec75a in wxIdleWakeUpModule::MsgHookProc ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/bmpbuttn.h:81&lt;br /&gt;
 #14 0x773aca2d in USER32!GetScrollRange ()&lt;br /&gt;
    from /cygdrive/c/WINDOWS/system32/user32.dll&lt;br /&gt;
 #15 0x00000000 in ?? () from&lt;br /&gt;
 (gdb)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To backtrace all the running threads use:&lt;br /&gt;
&lt;br /&gt;
 (gdb) thread apply all bt&lt;br /&gt;
&lt;br /&gt;
These are the log outputs that are more usefull to developers than just mentioning &amp;quot;it crashes&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
NOTE: In GDB mode there are sometimes situations where GDB initially &amp;quot;crashes&amp;quot; on certain network activity (opening network shares, network traffic) which in normal operation does not occur. Just select c for continue until &amp;quot;normal&amp;quot; operation continues.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
===vlc.exe: Permission denied===&lt;br /&gt;
&lt;br /&gt;
A make finished successfully and produced vlc.exe, but running the executable returns the following:&lt;br /&gt;
&lt;br /&gt;
 bash: ./vlc.exe: Permission denied&lt;br /&gt;
&lt;br /&gt;
The permissions on both vlc.exe &amp;amp; vlc.exe.manifest must be set to executable. &lt;br /&gt;
&lt;br /&gt;
FIX: Type the following:&lt;br /&gt;
 &lt;br /&gt;
 chmod 755 vlc.exe vlc.exe.manifest&lt;br /&gt;
&lt;br /&gt;
===error: parse error before &#039;(&#039; token===&lt;br /&gt;
&lt;br /&gt;
A make (compile) of FFmpeg results in the following error:&lt;br /&gt;
&lt;br /&gt;
 /usr/include/sys/unistd.h:203: error: parse error before &#039;(&#039; token&lt;br /&gt;
 make[1]: *** [ffm.o] Error 1&lt;br /&gt;
&lt;br /&gt;
It&#039;s very likely you are usix the POSIX emulater which you shouldn&#039;t...&lt;br /&gt;
&lt;br /&gt;
FIX: compile with the option &lt;br /&gt;
&lt;br /&gt;
 -mno-cygwin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token===&lt;br /&gt;
&lt;br /&gt;
 In file included from /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../include/w32&lt;br /&gt;
 api/windows.h:52,&lt;br /&gt;
                  from ../../../include/vlc_common.h:459,&lt;br /&gt;
                  from ../../../include/vlc/vlc.h:153,&lt;br /&gt;
                  from dshow.cpp:31:&lt;br /&gt;
 /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../include/w32api/wingdi.h:3:1: warn&lt;br /&gt;
 ing: this is the location of the previous definition&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:35,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/ddraw.h:14: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:35,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/ddraw.h:5552: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:45,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/strmif.h:2: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dsound.h:13,&lt;br /&gt;
                  from /usr/win32/include/amaudio.h:18,&lt;br /&gt;
                  from /usr/win32/include/dshow.h:47,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/d3dtypes.h:22: warning: ignoring #pragma warning&lt;br /&gt;
 /usr/win32/include/d3dtypes.h:1813: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:48,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/control.h:2: warning: ignoring #pragma warning&lt;br /&gt;
 dshow.cpp: In function `int CommonOpen(vlc_object_t*, access_sys_t*, vlc_bool_t)&lt;br /&gt;
 &#039;:&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;.&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;=&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;.&#039; token&lt;br /&gt;
 dshow.cpp:485: error: expected `;&#039; before &amp;quot;IAMCrossbar&amp;quot;&lt;br /&gt;
 dshow.cpp:491: error: `pXbar&#039; undeclared (first use this function)&lt;br /&gt;
 dshow.cpp:491: error: (Each undeclared identifier is reported only once for each&lt;br /&gt;
 function it appears in.)&lt;br /&gt;
 make[6]: *** [libdshow_plugin_a-dshow.o] Error 1&lt;br /&gt;
 make[6]: Leaving directory `/home/Administrator/vlc-trunk/modules/access/dshow&#039;&lt;br /&gt;
 make[5]: *** [all-modules] Error 1&lt;br /&gt;
 make[5]: Leaving directory `/home/Administrator/vlc-trunk/modules/access/dshow&#039;&lt;br /&gt;
 make[4]: *** [all-recursive] Error 1&lt;br /&gt;
 make[4]: Leaving directory `/home/Administrator/vlc-trunk/modules/access&#039;&lt;br /&gt;
 make[3]: *** [all] Error 2&lt;br /&gt;
&lt;br /&gt;
Basically in case of conflict svn adds &amp;quot;&amp;lt;&amp;lt;&amp;lt; mine&amp;quot; and &amp;quot;=======&amp;quot; and &amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; r1242&amp;quot; which makes gcc complain.&lt;br /&gt;
&lt;br /&gt;
FIX: revert the offending file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Objective C source seen but `OBJC&#039; is undefined===&lt;br /&gt;
&lt;br /&gt;
The configure process stops halfway.&lt;br /&gt;
&lt;br /&gt;
 + aclocal-1.9 -I m4&lt;br /&gt;
 + autoconf&lt;br /&gt;
 + autoheader&lt;br /&gt;
 + automake-1.9 --add-missing --copy -Wall&lt;br /&gt;
 configure.ac: installing `autotools/install-sh&#039;&lt;br /&gt;
 configure.ac: installing `autotools/missing&#039;&lt;br /&gt;
 activex/Makefile.am:143: shell $(VLC_CONFIG: non-POSIX variable name&lt;br /&gt;
 activex/Makefile.am:143: (probably a GNU make extension)&lt;br /&gt;
 activex/Makefile.am: installing `autotools/compile&#039;&lt;br /&gt;
 activex/Makefile.am: installing `autotools/depcomp&#039;&lt;br /&gt;
 modules/gui/macosx/Makefile.am: Objective C source seen but `OBJC&#039; is undefined&lt;br /&gt;
 modules/misc/testsuite/Makefile.am: Objective C source seen but `OBJC&#039; is undefi&lt;br /&gt;
 ned&lt;br /&gt;
 src/Makefile.am: Objective C source seen but `OBJC&#039; is undefined&lt;br /&gt;
 Makefile.am:282: user target `vlc$(EXEEXT)&#039; defined here...&lt;br /&gt;
 /usr/share/automake-1.9/am/program.am: ... overrides Automake target `vlc$(EXEEX&lt;br /&gt;
 T)&#039; defined here&lt;br /&gt;
 Makefile.am:230:   while processing program `vlc&#039;&lt;br /&gt;
 make: *** No targets specified and no makefile found.  Stop.&lt;br /&gt;
 &lt;br /&gt;
This problem is related to a warning earlier on and only occured in a few revisions where a built-in workaround wasn&#039;t working properly:&lt;br /&gt;
&lt;br /&gt;
 + echo &#039;Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP.&#039;&lt;br /&gt;
 Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP.&lt;br /&gt;
&lt;br /&gt;
FIX: update autoconf to 2.60 or newer. If Cygwin doesn&#039;t provide this version yet then build it yourself from extras/contrib.&lt;br /&gt;
&lt;br /&gt;
Enter the following commands in your Cygwin shell:&lt;br /&gt;
&lt;br /&gt;
 cd vlc-trunk/extras/contrib&lt;br /&gt;
&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
&lt;br /&gt;
 cd src&lt;br /&gt;
&lt;br /&gt;
 make .autoconf&lt;br /&gt;
&lt;br /&gt;
There should now be compiled autoconf version (probably 2.60 or newer) in extras/contrib that the bootstrap process will use.&lt;br /&gt;
&lt;br /&gt;
Now start the whole &amp;quot;Compile VLC&amp;quot; process from the start again.&lt;br /&gt;
&lt;br /&gt;
===Error: cannot create temporary file for diversion: Permission denied===&lt;br /&gt;
&lt;br /&gt;
If the above error appears, it might mean you don&#039;t have the TMPDIR defined in cygwin. You will need to define it and have its value point to your temporary directory. You can use &#039;&#039;&#039;export TMPDIR=&amp;quot;/cygdrive/c/temp&amp;quot;&#039;&#039;&#039; or any directory for it (/cygdrive/c/temp is same as C:\temp). If this doesn&#039;t help, make sure you run cygwin with admin rights (With Windows Vista, right click cygwin shortcut and select &amp;quot;Run as administrator&amp;quot;). Avira AntiVir might also cause issues to m4, so disabling it while ./bootstrap might help.&lt;br /&gt;
&lt;br /&gt;
==Compiling faster==&lt;br /&gt;
Building VLC on Cygwin is really slow, but you can spend less time recompiling by using [http://ccache.samba.org/ ccache]. This software saves  the files compiled with their compilation command, and output them if they were not changed and if the compilation command is the same as last build. It is really useful for frequent make clean &amp;amp;&amp;amp; make. To use it, change the CC line in your configure script to:&lt;br /&gt;
&lt;br /&gt;
  CC=&amp;quot;ccache gcc -mno-cygwin&amp;quot; CXX=&amp;quot;ccache g++ -mno-cygwin&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
The first build after reconfiguring will be as slow as ever, but the following builds will be faster.&lt;br /&gt;
&lt;br /&gt;
=Version=&lt;br /&gt;
&lt;br /&gt;
20050627 Initial version&lt;br /&gt;
&lt;br /&gt;
20050628 Updated some more exceptions&lt;br /&gt;
&lt;br /&gt;
20050628 Some info added about FFmpeg compiling with AMR&lt;br /&gt;
&lt;br /&gt;
20050629 Finalized FFmpeg compiling&lt;br /&gt;
&lt;br /&gt;
20050630 Cross-compiling&lt;br /&gt;
&lt;br /&gt;
20050724 Some extra compile explanations&lt;br /&gt;
&lt;br /&gt;
20050726 Removed cross-compiling (was for linux -&amp;gt; win32) Patching source code with .diff files&lt;br /&gt;
&lt;br /&gt;
20050823 Added zlib error&lt;br /&gt;
&lt;br /&gt;
20050923 --enable-sdl --with-sdl-config-path=/usr/win32/bin added to configure. Added debug section&lt;br /&gt;
&lt;br /&gt;
20051102 Changed FFmpeg lib names&lt;br /&gt;
&lt;br /&gt;
20051128 Detailed Cygwin upgrade/downgrade for gcc 3.3. Renamed some update scripts. Added FFmpeg CVS update. --disable-gnomevfs added to configure (only used on linux)&lt;br /&gt;
&lt;br /&gt;
20060121 PKG_CONFIG_PATH=/usr/win32/lib/pkgconfig added to configure&lt;br /&gt;
&lt;br /&gt;
20060128 Added curl and libtool to Cygwin for those that want to be able to build extras/contrib themselves&lt;br /&gt;
&lt;br /&gt;
20060217 Added make install-libs install-headers to FFmpeg compile&lt;br /&gt;
&lt;br /&gt;
20060222 Remark about missing &amp;quot;gettext&amp;quot; libs for Cygwin during install&lt;br /&gt;
&lt;br /&gt;
20060225 ./bootstrap: you need libtool&lt;br /&gt;
&lt;br /&gt;
20060618 Updated GCC to 3.4 version and added FFmpeg SVN and DTS support&lt;br /&gt;
&lt;br /&gt;
20060805 Added note about using older binutils and gdb for Cygwin!&lt;br /&gt;
&lt;br /&gt;
20060915 Added note about updating autoconf from extras/contrib for an OBJC problem during configure&lt;br /&gt;
&lt;br /&gt;
20061108 Added note this document is no longer usable since Cygwin has been unusable probably related to some bash/dos2unix change&lt;br /&gt;
&lt;br /&gt;
20070612 Added note about --enable-dca&lt;br /&gt;
&lt;br /&gt;
20080228 New version by [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
20080307 Added --host=i686-pc-mingw32 option to the configure script&lt;br /&gt;
&lt;br /&gt;
20080311 Simplification&lt;br /&gt;
&lt;br /&gt;
20080323 Added some tips for Vista &lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
[[Category:Coding]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileCygwinNew&amp;diff=12386</id>
		<title>Win32CompileCygwinNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileCygwinNew&amp;diff=12386"/>
		<updated>2008-09-13T23:04:39Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Configure script for compiling VLC */ pkg_config_LIBDIR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a new version of the Win32CompileCygwin written by [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
&#039;&#039;&#039;This version ONLY works for 0.9.x.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: building VLC on Cygwin has ever been a failure-prone task. It is also very slow. You should really consider cross-compiling from Linux (on a virtual machine, via dual-boot or from another computer). You were warned.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for Windows users with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
This guide uses [http://www.cygwin.com &#039;&#039;&#039;Cygwin&#039;&#039;&#039;] a Linux-like environment for Windows used for compilation of the VLC source code.&lt;br /&gt;
&lt;br /&gt;
Start off by creating a VLC and a download folder on your hard drive where you can put all the installation files:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\&lt;br /&gt;
 C:\VLC\Downloads&lt;br /&gt;
&lt;br /&gt;
For further reference, the assumption is made that the local user will be &#039;Administrator&#039;.&lt;br /&gt;
&lt;br /&gt;
=Cygwin=&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://www.cygwin.com/cygwin/setup.exe Cygwin setup] and save it in your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\Downloads\&lt;br /&gt;
&lt;br /&gt;
More info about Cygwin can be found at http://www.cygwin.com or http://sourceware.org/cygwin&lt;br /&gt;
&lt;br /&gt;
==Selecting Cygwin packages to install==&lt;br /&gt;
&lt;br /&gt;
Run the setup program with the following options:&lt;br /&gt;
&lt;br /&gt;
Installation type : Install from Internet (default)&lt;br /&gt;
&lt;br /&gt;
Root directory : C:\cygwin (default)&lt;br /&gt;
&lt;br /&gt;
Local Package directory : C:\VLC\Downloads\cygwin (your download location)&lt;br /&gt;
&lt;br /&gt;
Internet Connection : Direct Connection (preferred, if it fails try another)&lt;br /&gt;
&lt;br /&gt;
Download Site : Choose a download site closest to you (FTP preferred)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the &amp;quot;Select Packages&amp;quot; section of the installation process you can select packages by clicking the button with the rotating 2 arrows. (This is under the &amp;quot;New&amp;quot; section). It shows &amp;quot;Skip&amp;quot; next to the button if the package isn&#039;t selected yet.&lt;br /&gt;
&lt;br /&gt;
Clicking the button a few times will rotate through the possible package versions including &amp;quot;Skip&amp;quot; (meaning do not install or remove if installed) and &amp;quot;Keep&amp;quot; (meaning keep using the current installed version). If a package was already installed it will also show the &amp;quot;Current&amp;quot; version just to the left of it.&lt;br /&gt;
&lt;br /&gt;
Select the following packages (some others will automatically be selected as well):&lt;br /&gt;
&lt;br /&gt;
 Archive&lt;br /&gt;
   unzip&lt;br /&gt;
   zip&lt;br /&gt;
&lt;br /&gt;
 Devel&lt;br /&gt;
   autoconf&lt;br /&gt;
   automake&lt;br /&gt;
   binutils&lt;br /&gt;
   cvs&lt;br /&gt;
   expat&lt;br /&gt;
   gcc&lt;br /&gt;
   gcc-core&lt;br /&gt;
   gcc-g++&lt;br /&gt;
   gcc-mingw&lt;br /&gt;
   gcc-mingw-core&lt;br /&gt;
   gcc-mingw-g++&lt;br /&gt;
   gdb&lt;br /&gt;
   gettext&lt;br /&gt;
   gettext-devel&lt;br /&gt;
   git&lt;br /&gt;
   libiconv&lt;br /&gt;
   libgcrypt-devel&lt;br /&gt;
   libtool&lt;br /&gt;
   make&lt;br /&gt;
   mingw-runtime&lt;br /&gt;
   nasm&lt;br /&gt;
   patchutils&lt;br /&gt;
   pkg-config&lt;br /&gt;
   subversion&lt;br /&gt;
&lt;br /&gt;
 Editor&lt;br /&gt;
   vim&lt;br /&gt;
&lt;br /&gt;
 Libs&lt;br /&gt;
   libgcrypt&lt;br /&gt;
&lt;br /&gt;
 Web&lt;br /&gt;
   curl (optional: for building extras/contrib)&lt;br /&gt;
   wget (optional: for building extras/contrib)&lt;br /&gt;
&lt;br /&gt;
==Cygwin environment==&lt;br /&gt;
&lt;br /&gt;
Start Cygwin from the icon on your desktop (With Windows Vista run it with admin rights, so right click and select &amp;quot;Run as administrator&amp;quot;). If it runs for the first time it will automatically create a home\&amp;quot;username&amp;quot; folder in the Cygwin environment; user being the currently logged on Windows user. Assuming this is the &#039;Administrator&#039; user it will create the following folder:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\home\Administrator (example)&lt;br /&gt;
&lt;br /&gt;
NOTE: On your desktop, you can rightclick the Cygwin icon and (in the Options field of the Cygwin Properties) set the Command history Buffer size to as large as possible: 999. This setting will make it possible to scroll back further in the Cygwin environment.&lt;br /&gt;
&lt;br /&gt;
=VLC source code=&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
The very latest VLC source code can be obtained through a tool called Git. The Cygwin package we&#039;re about to install comes with an internal git component.&lt;br /&gt;
&lt;br /&gt;
 cd /cygdrive/c/VLC/&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Applies to:&lt;br /&gt;
&lt;br /&gt;
 Windows XP Service Pack 2 with Security Update &#039;&#039;&#039;KB925902&#039;&#039;&#039; installed&lt;br /&gt;
 Windows XP Service Pack 3&lt;br /&gt;
&lt;br /&gt;
There is a problem on Windows XP (and possibly on other Microsoft Operating Systems) with &#039;git clone&#039; which aborts unexpectedly with a Cygwin error during the &#039;checking out files&#039; (reproducable every time and at the same percentage) at the end of the clone procedure:&lt;br /&gt;
&lt;br /&gt;
 $ 2 [main] git 4012 D:\cygwin\bin\git.exe:&lt;br /&gt;
   *** fatal error - &#039;&#039;&#039;could not load shell32, Win32 error 487&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This has been verified (May 22, 2008) against the currently available Cygwin 1.5.25-12 with git package versions 1.5.5.1-1 and 1.5.4-1 and is a generic problem which also affects cloning from other git repositories (although x264.git seems unaffected).&lt;br /&gt;
&lt;br /&gt;
The issue is referred to in the mail archives of the Cygwin project mailing list here &lt;br /&gt;
[http://sourceware.org/ml/cygwin/2007-07/msg00858.html Git error on Cygwin].&lt;br /&gt;
&lt;br /&gt;
By eliminating the impossible, whatever remained, however improbable, it is the following Windows Security Update (April 3, 2007) which is actually the cause of the Cygwin issue: [http://www.microsoft.com/technet/security/bulletin/ms07-017.mspx Microsoft Security Bulletin MS07-017 - Vulnerabilities in GDI Could Allow Remote Code Execution (925902)]&lt;br /&gt;
&lt;br /&gt;
Even though the same Security Update applies to the following systems, these are reported not to be affected:&lt;br /&gt;
&lt;br /&gt;
 Windows Vista Service Pack 1&lt;br /&gt;
 Windows 2003 Server Standard Service Pack 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;It is possible to get &#039;git clone&#039; working again on the affected systems by removing the Security Update (KB925902) but this is obviously not recommended for security reasons.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
If you get following error messages&lt;br /&gt;
&lt;br /&gt;
 fatal: pack has bad object at offset 98737692: inflate returned -3&lt;br /&gt;
 fatal: index-pack failed&lt;br /&gt;
 fetch-pack from &#039;git://git.videolan.org/vlc.git&#039; failed.&lt;br /&gt;
&lt;br /&gt;
then please try to use git from basic Windows command prompt (Start -&amp;gt; Run -&amp;gt; cmd), not from Cygwin shell. &lt;br /&gt;
&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
&lt;br /&gt;
You can do the same by using the snapshots in the [http://nightlies.videolan.org/ nightly builds] site.&lt;br /&gt;
&lt;br /&gt;
=Bootstrap=&lt;br /&gt;
&lt;br /&gt;
Open the &#039;&#039;&#039;configure.ac&#039;&#039;&#039; file, and modify the requirement for gettext 0.17 to 0.15 (so replace line &#039;&#039;&#039;AM_GNU_GETTEXT_VERSION(0.17)&#039;&#039;&#039; with line &#039;&#039;&#039;AM_GNU_GETTEXT_VERSION(0.15)&#039;&#039;&#039;), and then run bootstrap.&lt;br /&gt;
&lt;br /&gt;
 cd vlc&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
&lt;br /&gt;
= External libraries to the source code=&lt;br /&gt;
&lt;br /&gt;
VLC depends on other libraries (code) to provide some features like AC3 audio or MPEG-4 video encoding/decoding etc.&lt;br /&gt;
&lt;br /&gt;
Depending on your needs you will have to install and compile some or all of these external libraries. &lt;br /&gt;
&lt;br /&gt;
== Get the Win32 &amp;quot;contrib&amp;quot; package ==&lt;br /&gt;
&lt;br /&gt;
A package with most of these libraries already compiled so it&#039;s actually really easy to compile a full-featured version of vlc can be found here:&lt;br /&gt;
&lt;br /&gt;
http://download.videolan.org/pub/testing/win32/&lt;br /&gt;
&lt;br /&gt;
Download the latest version of a &amp;quot;contrib&amp;quot; package for win32:&lt;br /&gt;
&lt;br /&gt;
 contrib-20060730-win32-bin-gcc-3.4.5-only.tar.bz2 (example)&lt;br /&gt;
&lt;br /&gt;
Those days, you should use&lt;br /&gt;
 http://people.videolan.org/~jb/Contribs/contrib-20080702-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s a good idea to check the INSTALL.Win32 file in the VLC source directory for the appropriate contrib download file.&lt;br /&gt;
&lt;br /&gt;
Save it into your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\Downloads\&lt;br /&gt;
&lt;br /&gt;
==Installing the Win32 &amp;quot;contrib&amp;quot; package in Cygwin==&lt;br /&gt;
&lt;br /&gt;
Start Cygwin and enter the following command in your shell:&lt;br /&gt;
&lt;br /&gt;
 cd /cygdrive/c/VLC/Downloads&lt;br /&gt;
 tar xf contrib-20080702-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
&lt;br /&gt;
Replace with your version of the &amp;quot;contrib&amp;quot; file and DON&#039;T FORGET THE / (slash)&lt;br /&gt;
at the end.&lt;br /&gt;
&lt;br /&gt;
This will extract the contents of the file into usr/win32 folder within your Cygwin environment.&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure to DELETE your old version (/usr/win32 folder) instead of extracting a new version on top of it.&lt;br /&gt;
&lt;br /&gt;
==Keeping the Win32 &amp;quot;contrib&amp;quot; package up-to-date==&lt;br /&gt;
&lt;br /&gt;
For maintenance purposes periodically check:&lt;br /&gt;
&lt;br /&gt;
http://download.videolan.org/pub/testing/win32/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
&lt;br /&gt;
In order to make our lives just a bit easier the following section describes what commandline options should be used for compiling and those commands will then be put into a &amp;quot;script&amp;quot; that can be executed (rather than having to copy and paste all the time).&lt;br /&gt;
&lt;br /&gt;
==Configure script for compiling VLC==&lt;br /&gt;
&lt;br /&gt;
Create a new text document with the following lines:&lt;br /&gt;
&lt;br /&gt;
  PATH=/usr/win32/bin:$PATH \&lt;br /&gt;
  PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I/usr/win32/include -I/usr/win32/include/ebml&amp;quot; \&lt;br /&gt;
  LDFLAGS=-L/usr/win32/lib \&lt;br /&gt;
  CC=&amp;quot;gcc -mno-cygwin&amp;quot; CXX=&amp;quot;g++ -mno-cygwin&amp;quot; \&lt;br /&gt;
  ./configure \&lt;br /&gt;
      --host=i686-pc-mingw32 \&lt;br /&gt;
      --disable-gtk \&lt;br /&gt;
      --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \&lt;br /&gt;
      --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \&lt;br /&gt;
      --with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora \&lt;br /&gt;
      --with-wx-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-freetype-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-fribidi-config-path=/usr/win32/bin \&lt;br /&gt;
      --enable-live555 --with-live555-tree=/usr/win32/live.com \&lt;br /&gt;
      --enable-caca --with-caca-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-xml2-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-dvdnav-config-path=/usr/win32/bin \&lt;br /&gt;
      --disable-cddax --disable-vcdx --enable-goom \&lt;br /&gt;
      --enable-twolame --enable-dvdread \&lt;br /&gt;
      --enable-debug  --enable-dca \&lt;br /&gt;
      --disable-mkv --disable-taglib&lt;br /&gt;
&lt;br /&gt;
NOTE: The following options are added for debug purposes and makes the final package a bit larger but the advantage is it&#039;s easier to debug in case of crash reports:&lt;br /&gt;
&lt;br /&gt;
 --disable-optimizations&lt;br /&gt;
 --enable-debug&lt;br /&gt;
&lt;br /&gt;
If you want to report a crash bug to the VLC team, it is necessary that you provide a stack backtrace. Unfortunately, Windows automatic crash reporter cannot generate such a backtrace as debug symbols used by GCC compiler aren&#039;t understood by Windows, therefore we suggest that you install Dr. MinGW (http://jrfonseca.dyndns.org/projects/gnu-win32/software/drmingw/) which will extend Windows Just-In-Time Debugger and provide the necessary debug information.&lt;br /&gt;
&lt;br /&gt;
NOTE: The following options is needed for Qt4 support:&lt;br /&gt;
&lt;br /&gt;
 --enable-qt4&lt;br /&gt;
&lt;br /&gt;
As of version 0.9.0 VLC will include the Qt interface. More information can be found about QT here: http://www.trolltech.com&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Win32 contrib package&amp;quot; at present includes the linux and Windows equivalents of uic, moc and roc executables which are required for building this interface.&lt;br /&gt;
&lt;br /&gt;
The linuxs executables have to be &#039;&#039;&#039;deleted&#039;&#039;&#039; from the contrib folder:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\usr\win32\bin\moc (example)&lt;br /&gt;
 C:\cygwin\usr\win32\bin\rcc (example)&lt;br /&gt;
 C:\cygwin\usr\win32\bin\uic (example)&lt;br /&gt;
&lt;br /&gt;
Save as filename in your &amp;quot;scripts&amp;quot; folder at your download/install location:&lt;br /&gt;
&lt;br /&gt;
 configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
NOTE: Save using &amp;quot;All files&amp;quot; and not &amp;quot;Text files&amp;quot; otherwise Windows might append the extension .txt&lt;br /&gt;
&lt;br /&gt;
Copy the file into your home directory:&lt;br /&gt;
 &lt;br /&gt;
 C:\cygwin\home\Administrator&lt;br /&gt;
&lt;br /&gt;
Start Cygwin and enter the following command in your shell: &lt;br /&gt;
&lt;br /&gt;
 dos2unix configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
After your configure-vlc.sh is completed, copy it to your vlc directory and run it:&lt;br /&gt;
&lt;br /&gt;
 ./configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
If it complains about permissions, use chmod and try again:&lt;br /&gt;
&lt;br /&gt;
 chmod 777 configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
NOTE. (If you plan to use JVLC) To make vlc-control.dll accessible by Java on &#039;&#039;Windows&#039;&#039; cofigure-vlc.sh should be modified to include &amp;quot;-Wl,--add-stdcal-alias&amp;quot;. Example:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 CC=&amp;quot;gcc -mno-cygwin -Wl,--add-stdcall-alias&amp;quot; CXX=&amp;quot;g++ -mno-cygwin -Wl,--add-stdcall-alias&amp;quot; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===POSIX emulation layer===&lt;br /&gt;
&lt;br /&gt;
VLC can be built with or without the so called POSIX emulation layer. Without is the default and is usually better (and with hasn&#039;t been tested for quite some time). If you do want to use the emulation layer, then just leave out the line with the following options:&lt;br /&gt;
&lt;br /&gt;
 CC=&amp;quot;gcc -mno-cygwin&amp;quot; CXX=&amp;quot;g++ -mno-cygwin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Compiling source code=&lt;br /&gt;
&lt;br /&gt;
It&#039;s time to start Cygwin again...&lt;br /&gt;
&lt;br /&gt;
==Compiling VLC==&lt;br /&gt;
&lt;br /&gt;
Enter the following commands in your Cygwin shell:&lt;br /&gt;
&lt;br /&gt;
 cd vlc&lt;br /&gt;
&lt;br /&gt;
Build it! (remember to run configure-vlc.sh before first build)&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Cross your fingers and wait... because it might take few hours before compilation is done.&lt;br /&gt;
If you have multicore CPU or multi CPU box, you can use -j2 switch (or maybe -j3 or -j4 etc.) to speed up make process&lt;br /&gt;
&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
==Creating self contained packages==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can either run VLC directly from the source tree or you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32&lt;br /&gt;
&lt;br /&gt;
(Same as above but will also create an auto-installer package. You will need to have NSIS installed in its default location for this to work).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If you have permissions problems running vlc.exe after packaging, rename or delete vlc.exe.manifest&lt;br /&gt;
&lt;br /&gt;
=Advanced usage=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Updating Cygwin package versions==&lt;br /&gt;
&lt;br /&gt;
If you need to update or install additional packages you can just run the Cygwin setup.exe from your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\Downloads\cygwin\setup.exe          (example)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GDB (Gnu Debugger)==&lt;br /&gt;
&lt;br /&gt;
This section requires that you installed the gdb (Gnu Debugger) in Cygwin.&lt;br /&gt;
&lt;br /&gt;
This is a typical example of creating a crashlog:&lt;br /&gt;
&lt;br /&gt;
 cd vlc-trunk&lt;br /&gt;
&lt;br /&gt;
 gdb --args vlc.exe --fast-mutex --reset-config --reset-plugins-cache&lt;br /&gt;
&lt;br /&gt;
NOTE: vlc-0.9.0 uses libtool for building sources, if you want to debug from the source tree, you should type the following command instead:&lt;br /&gt;
&lt;br /&gt;
 libtool --mode=execute gdb --args vlc --reset-config --reset-plugins-cache&lt;br /&gt;
&lt;br /&gt;
In the debugger mode run the program and make sure you reset the preferences!&lt;br /&gt;
&lt;br /&gt;
 (gdb) run &lt;br /&gt;
&lt;br /&gt;
NOTE: the (gdb) is just a prompt which means you are in the debugger mode, please note that &#039;&#039;--fast-mutex&#039;&#039; option is no longer supported in vlc-0.9.0&lt;br /&gt;
&lt;br /&gt;
It will now take a lot longer than usual for VLC to start :)&lt;br /&gt;
&lt;br /&gt;
Now operate VLC as you would normally do. As soon as a crash issue occurs&lt;br /&gt;
you&#039;ll notice a line like this:&lt;br /&gt;
&lt;br /&gt;
 Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
 0x0041394c in playlist_ItemGetById (p_playlist=0x19ec4f8, i_id=29)&lt;br /&gt;
     at src/playlist/item-ext.c:459&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
 459             i = i_bottom + ( i_top - i_bottom ) / 2;&lt;br /&gt;
&lt;br /&gt;
Now you can do a &amp;quot;backtrace&amp;quot; by using the bt command:&lt;br /&gt;
&lt;br /&gt;
 (gdb) bt&lt;br /&gt;
&lt;br /&gt;
And output similar to this will be created:&lt;br /&gt;
&lt;br /&gt;
 #0  0x0041394c in playlist_ItemGetById (p_playlist=0x19ec4f8, i_id=29) &lt;br /&gt;
     at src/playlist/item-ext.c:459&lt;br /&gt;
 #1  0x0b26bbf7 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29fef8}) at playlist.cpp:695&lt;br /&gt;
 #2  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29e8b0}) at playlist.cpp:689&lt;br /&gt;
 #3  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29a818}) at playlist.cpp:689&lt;br /&gt;
 #4  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x299718}) at playlist.cpp:689&lt;br /&gt;
 #5  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0xffff0000}) at playlist.cpp:689&lt;br /&gt;
 #6  0x0b26bf49 in wxvlc::Playlist::AppendItem (this=0x1822e288,&lt;br /&gt;
     event=@0x1827afd0) at playlist.cpp:564&lt;br /&gt;
 #7  0x0b2757fc in wxvlc::Playlist::OnPlaylistEvent (this=0x1822e288,&lt;br /&gt;
     event=@0x1827afd0) at playlist.cpp:1438&lt;br /&gt;
 #8  0x0b3771b8 in wxEvtHandler::ProcessEventIfMatches ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #9  0x0b376a1c in wxEventHashTable::HandleEvent ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #10 0x0b37730d in wxEvtHandler::ProcessEvent ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #11 0x0b37711b in wxEvtHandler::ProcessPendingEvents ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
 #12 0x0b376017 in wxAppConsole::ProcessPendingEvents ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #13 0x0b3ec75a in wxIdleWakeUpModule::MsgHookProc ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/bmpbuttn.h:81&lt;br /&gt;
 #14 0x773aca2d in USER32!GetScrollRange ()&lt;br /&gt;
    from /cygdrive/c/WINDOWS/system32/user32.dll&lt;br /&gt;
 #15 0x00000000 in ?? () from&lt;br /&gt;
 (gdb)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To backtrace all the running threads use:&lt;br /&gt;
&lt;br /&gt;
 (gdb) thread apply all bt&lt;br /&gt;
&lt;br /&gt;
These are the log outputs that are more usefull to developers than just mentioning &amp;quot;it crashes&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
NOTE: In GDB mode there are sometimes situations where GDB initially &amp;quot;crashes&amp;quot; on certain network activity (opening network shares, network traffic) which in normal operation does not occur. Just select c for continue until &amp;quot;normal&amp;quot; operation continues.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
===vlc.exe: Permission denied===&lt;br /&gt;
&lt;br /&gt;
A make finished successfully and produced vlc.exe, but running the executable returns the following:&lt;br /&gt;
&lt;br /&gt;
 bash: ./vlc.exe: Permission denied&lt;br /&gt;
&lt;br /&gt;
The permissions on both vlc.exe &amp;amp; vlc.exe.manifest must be set to executable. &lt;br /&gt;
&lt;br /&gt;
FIX: Type the following:&lt;br /&gt;
 &lt;br /&gt;
 chmod 755 vlc.exe vlc.exe.manifest&lt;br /&gt;
&lt;br /&gt;
===error: parse error before &#039;(&#039; token===&lt;br /&gt;
&lt;br /&gt;
A make (compile) of FFmpeg results in the following error:&lt;br /&gt;
&lt;br /&gt;
 /usr/include/sys/unistd.h:203: error: parse error before &#039;(&#039; token&lt;br /&gt;
 make[1]: *** [ffm.o] Error 1&lt;br /&gt;
&lt;br /&gt;
It&#039;s very likely you are usix the POSIX emulater which you shouldn&#039;t...&lt;br /&gt;
&lt;br /&gt;
FIX: compile with the option &lt;br /&gt;
&lt;br /&gt;
 -mno-cygwin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token===&lt;br /&gt;
&lt;br /&gt;
 In file included from /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../include/w32&lt;br /&gt;
 api/windows.h:52,&lt;br /&gt;
                  from ../../../include/vlc_common.h:459,&lt;br /&gt;
                  from ../../../include/vlc/vlc.h:153,&lt;br /&gt;
                  from dshow.cpp:31:&lt;br /&gt;
 /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../include/w32api/wingdi.h:3:1: warn&lt;br /&gt;
 ing: this is the location of the previous definition&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:35,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/ddraw.h:14: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:35,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/ddraw.h:5552: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:45,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/strmif.h:2: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dsound.h:13,&lt;br /&gt;
                  from /usr/win32/include/amaudio.h:18,&lt;br /&gt;
                  from /usr/win32/include/dshow.h:47,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/d3dtypes.h:22: warning: ignoring #pragma warning&lt;br /&gt;
 /usr/win32/include/d3dtypes.h:1813: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:48,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/control.h:2: warning: ignoring #pragma warning&lt;br /&gt;
 dshow.cpp: In function `int CommonOpen(vlc_object_t*, access_sys_t*, vlc_bool_t)&lt;br /&gt;
 &#039;:&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;.&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;=&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;.&#039; token&lt;br /&gt;
 dshow.cpp:485: error: expected `;&#039; before &amp;quot;IAMCrossbar&amp;quot;&lt;br /&gt;
 dshow.cpp:491: error: `pXbar&#039; undeclared (first use this function)&lt;br /&gt;
 dshow.cpp:491: error: (Each undeclared identifier is reported only once for each&lt;br /&gt;
 function it appears in.)&lt;br /&gt;
 make[6]: *** [libdshow_plugin_a-dshow.o] Error 1&lt;br /&gt;
 make[6]: Leaving directory `/home/Administrator/vlc-trunk/modules/access/dshow&#039;&lt;br /&gt;
 make[5]: *** [all-modules] Error 1&lt;br /&gt;
 make[5]: Leaving directory `/home/Administrator/vlc-trunk/modules/access/dshow&#039;&lt;br /&gt;
 make[4]: *** [all-recursive] Error 1&lt;br /&gt;
 make[4]: Leaving directory `/home/Administrator/vlc-trunk/modules/access&#039;&lt;br /&gt;
 make[3]: *** [all] Error 2&lt;br /&gt;
&lt;br /&gt;
Basically in case of conflict svn adds &amp;quot;&amp;lt;&amp;lt;&amp;lt; mine&amp;quot; and &amp;quot;=======&amp;quot; and &amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; r1242&amp;quot; which makes gcc complain.&lt;br /&gt;
&lt;br /&gt;
FIX: revert the offending file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Objective C source seen but `OBJC&#039; is undefined===&lt;br /&gt;
&lt;br /&gt;
The configure process stops halfway.&lt;br /&gt;
&lt;br /&gt;
 + aclocal-1.9 -I m4&lt;br /&gt;
 + autoconf&lt;br /&gt;
 + autoheader&lt;br /&gt;
 + automake-1.9 --add-missing --copy -Wall&lt;br /&gt;
 configure.ac: installing `autotools/install-sh&#039;&lt;br /&gt;
 configure.ac: installing `autotools/missing&#039;&lt;br /&gt;
 activex/Makefile.am:143: shell $(VLC_CONFIG: non-POSIX variable name&lt;br /&gt;
 activex/Makefile.am:143: (probably a GNU make extension)&lt;br /&gt;
 activex/Makefile.am: installing `autotools/compile&#039;&lt;br /&gt;
 activex/Makefile.am: installing `autotools/depcomp&#039;&lt;br /&gt;
 modules/gui/macosx/Makefile.am: Objective C source seen but `OBJC&#039; is undefined&lt;br /&gt;
 modules/misc/testsuite/Makefile.am: Objective C source seen but `OBJC&#039; is undefi&lt;br /&gt;
 ned&lt;br /&gt;
 src/Makefile.am: Objective C source seen but `OBJC&#039; is undefined&lt;br /&gt;
 Makefile.am:282: user target `vlc$(EXEEXT)&#039; defined here...&lt;br /&gt;
 /usr/share/automake-1.9/am/program.am: ... overrides Automake target `vlc$(EXEEX&lt;br /&gt;
 T)&#039; defined here&lt;br /&gt;
 Makefile.am:230:   while processing program `vlc&#039;&lt;br /&gt;
 make: *** No targets specified and no makefile found.  Stop.&lt;br /&gt;
 &lt;br /&gt;
This problem is related to a warning earlier on and only occured in a few revisions where a built-in workaround wasn&#039;t working properly:&lt;br /&gt;
&lt;br /&gt;
 + echo &#039;Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP.&#039;&lt;br /&gt;
 Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP.&lt;br /&gt;
&lt;br /&gt;
FIX: update autoconf to 2.60 or newer. If Cygwin doesn&#039;t provide this version yet then build it yourself from extras/contrib.&lt;br /&gt;
&lt;br /&gt;
Enter the following commands in your Cygwin shell:&lt;br /&gt;
&lt;br /&gt;
 cd vlc-trunk/extras/contrib&lt;br /&gt;
&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
&lt;br /&gt;
 cd src&lt;br /&gt;
&lt;br /&gt;
 make .autoconf&lt;br /&gt;
&lt;br /&gt;
There should now be compiled autoconf version (probably 2.60 or newer) in extras/contrib that the bootstrap process will use.&lt;br /&gt;
&lt;br /&gt;
Now start the whole &amp;quot;Compile VLC&amp;quot; process from the start again.&lt;br /&gt;
&lt;br /&gt;
===Error: cannot create temporary file for diversion: Permission denied===&lt;br /&gt;
&lt;br /&gt;
If the above error appears, it might mean you don&#039;t have the TMPDIR defined in cygwin. You will need to define it and have its value point to your temporary directory. You can use &#039;&#039;&#039;export TMPDIR=&amp;quot;/cygdrive/c/temp&amp;quot;&#039;&#039;&#039; or any directory for it (/cygdrive/c/temp is same as C:\temp). If this doesn&#039;t help, make sure you run cygwin with admin rights (With Windows Vista, right click cygwin shortcut and select &amp;quot;Run as administrator&amp;quot;). Avira AntiVir might also cause issues to m4, so disabling it while ./bootstrap might help.&lt;br /&gt;
&lt;br /&gt;
==Compiling faster==&lt;br /&gt;
Building VLC on Cygwin is really slow, but you can spend less time recompiling by using [http://ccache.samba.org/ ccache]. This software saves  the files compiled with their compilation command, and output them if they were not changed and if the compilation command is the same as last build. It is really useful for frequent make clean &amp;amp;&amp;amp; make. To use it, change the CC line in your configure script to:&lt;br /&gt;
&lt;br /&gt;
  CC=&amp;quot;ccache gcc -mno-cygwin&amp;quot; CXX=&amp;quot;ccache g++ -mno-cygwin&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
The first build after reconfiguring will be as slow as ever, but the following builds will be faster.&lt;br /&gt;
&lt;br /&gt;
=Version=&lt;br /&gt;
&lt;br /&gt;
20050627 Initial version&lt;br /&gt;
&lt;br /&gt;
20050628 Updated some more exceptions&lt;br /&gt;
&lt;br /&gt;
20050628 Some info added about FFmpeg compiling with AMR&lt;br /&gt;
&lt;br /&gt;
20050629 Finalized FFmpeg compiling&lt;br /&gt;
&lt;br /&gt;
20050630 Cross-compiling&lt;br /&gt;
&lt;br /&gt;
20050724 Some extra compile explanations&lt;br /&gt;
&lt;br /&gt;
20050726 Removed cross-compiling (was for linux -&amp;gt; win32) Patching source code with .diff files&lt;br /&gt;
&lt;br /&gt;
20050823 Added zlib error&lt;br /&gt;
&lt;br /&gt;
20050923 --enable-sdl --with-sdl-config-path=/usr/win32/bin added to configure. Added debug section&lt;br /&gt;
&lt;br /&gt;
20051102 Changed FFmpeg lib names&lt;br /&gt;
&lt;br /&gt;
20051128 Detailed Cygwin upgrade/downgrade for gcc 3.3. Renamed some update scripts. Added FFmpeg CVS update. --disable-gnomevfs added to configure (only used on linux)&lt;br /&gt;
&lt;br /&gt;
20060121 PKG_CONFIG_PATH=/usr/win32/lib/pkgconfig added to configure&lt;br /&gt;
&lt;br /&gt;
20060128 Added curl and libtool to Cygwin for those that want to be able to build extras/contrib themselves&lt;br /&gt;
&lt;br /&gt;
20060217 Added make install-libs install-headers to FFmpeg compile&lt;br /&gt;
&lt;br /&gt;
20060222 Remark about missing &amp;quot;gettext&amp;quot; libs for Cygwin during install&lt;br /&gt;
&lt;br /&gt;
20060225 ./bootstrap: you need libtool&lt;br /&gt;
&lt;br /&gt;
20060618 Updated GCC to 3.4 version and added FFmpeg SVN and DTS support&lt;br /&gt;
&lt;br /&gt;
20060805 Added note about using older binutils and gdb for Cygwin!&lt;br /&gt;
&lt;br /&gt;
20060915 Added note about updating autoconf from extras/contrib for an OBJC problem during configure&lt;br /&gt;
&lt;br /&gt;
20061108 Added note this document is no longer usable since Cygwin has been unusable probably related to some bash/dos2unix change&lt;br /&gt;
&lt;br /&gt;
20070612 Added note about --enable-dca&lt;br /&gt;
&lt;br /&gt;
20080228 New version by [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
20080307 Added --host=i686-pc-mingw32 option to the configure script&lt;br /&gt;
&lt;br /&gt;
20080311 Simplification&lt;br /&gt;
&lt;br /&gt;
20080323 Added some tips for Vista &lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
[[Category:Coding]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12385</id>
		<title>Hacker Guide/Audio Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12385"/>
		<updated>2008-09-13T21:01:38Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
&lt;br /&gt;
=Writing an audio filter=&lt;br /&gt;
&lt;br /&gt;
==Module descriptor==&lt;br /&gt;
 static int  Open     ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t] *p_this );&lt;br /&gt;
 static void Close    ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t] *p_this );&lt;br /&gt;
 static void DoWork   ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__instance__t.html aout_instance_t] *p_aout, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__filter__t.html aout_filter_t] *p_filter, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t] *p_in_buf, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t] *p_out_buf );&lt;br /&gt;
 &lt;br /&gt;
 vlc_module_begin();&lt;br /&gt;
     set_description( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_shortname( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_category( CAT_AUDIO );&lt;br /&gt;
     set_subcategory( SUBCAT_AUDIO_AFILTER );&lt;br /&gt;
     add_shortcut( &amp;quot;afx&amp;quot; );&lt;br /&gt;
     set_capability( &amp;quot;audio filter&amp;quot;, 0 );&lt;br /&gt;
     set_callbacks( Open, Close );&lt;br /&gt;
 vlc_module_end();&lt;br /&gt;
&lt;br /&gt;
==Mandatory structures==&lt;br /&gt;
*aout_filter_sys_t&lt;br /&gt;
&lt;br /&gt;
==I/O Buffers==&lt;br /&gt;
Data comes in and out the plugin in an [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t], one sample at a time, and in each sample, one block by channel.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|data stream&lt;br /&gt;
| ch 1&lt;br /&gt;
| ch 2&lt;br /&gt;
| ch 1&lt;br /&gt;
| ch 2&lt;br /&gt;
| ch 1&lt;br /&gt;
| ch 2&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample 1&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample 2&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample 3&lt;br /&gt;
| ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it returns 0 if it is able to do the whole transformation between p_filter-&amp;gt;input and p_filter-&amp;gt;output. If you can do only part of the transformation, say you can&#039;t do it (if the aout core doesn&#039;t find a fitting filter, it will split the transformation and ask you again).&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
Audio filters can be of three types :&lt;br /&gt;
&lt;br /&gt;
*Converters : change i_format (for instance from float32 to s16).&lt;br /&gt;
*Resamplers : change i_rate (for instance from 48 kHz to 44.1 kHz).&lt;br /&gt;
*Channel mixers : change i_physical_channels/i_original_channels (for instance from 5.1 to stereo). &lt;br /&gt;
&lt;br /&gt;
Audio filters can also combine any of these types. For instance you can have an audio filter which transforms A/52 5.1 to float32 stereo.&lt;br /&gt;
&lt;br /&gt;
The constructor must also set p_filter-&amp;gt;b_in_place. If it&#039;s 0, the aout core will allocate a new buffer for the output. If it&#039;s 1, when you write a byte in the output buffer, it destroys the same byte in the input buffer (they share the same memory area). Some filters can work in place because they just do a linear transformation (like float32-&amp;gt;s16), but most filters will want b_in_place = 0. The filter can allocate private data in p_filter-&amp;gt;p_sys. Do not forget to deallocate it in the destructor.&lt;br /&gt;
&lt;br /&gt;
The p_filter-&amp;gt;pf_do_work gets an input and an output buffer as arguments, and process them. At the end of the processing, do not forget to set p_out_buf-&amp;gt;i_nb_samples and p_out_buf-&amp;gt;i_nb_bytes, since they aren&#039;t inited by the aout core (their values can change between input and output and it&#039;s not quite predictible).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12384</id>
		<title>Hacker Guide/Audio Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12384"/>
		<updated>2008-09-13T19:24:18Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Module descriptor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
&lt;br /&gt;
=Writing an audio filter=&lt;br /&gt;
&lt;br /&gt;
==Module descriptor==&lt;br /&gt;
 static int  Open     ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t] *p_this );&lt;br /&gt;
 static void Close    ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t] *p_this );&lt;br /&gt;
 static void DoWork   ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__instance__t.html aout_instance_t] *p_aout, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__filter__t.html aout_filter_t] *p_filter, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t] *p_in_buf, [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t] *p_out_buf );&lt;br /&gt;
 &lt;br /&gt;
 vlc_module_begin();&lt;br /&gt;
     set_description( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_shortname( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_category( CAT_AUDIO );&lt;br /&gt;
     set_subcategory( SUBCAT_AUDIO_AFILTER );&lt;br /&gt;
     add_shortcut( &amp;quot;afx&amp;quot; );&lt;br /&gt;
     set_capability( &amp;quot;audio filter&amp;quot;, 0 );&lt;br /&gt;
     set_callbacks( Open, Close );&lt;br /&gt;
 vlc_module_end();&lt;br /&gt;
&lt;br /&gt;
==Mandatory structures==&lt;br /&gt;
*aout_filter_sys_t&lt;br /&gt;
&lt;br /&gt;
==Input Data==&lt;br /&gt;
&lt;br /&gt;
==Output Data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it returns 0 if it is able to do the whole transformation between p_filter-&amp;gt;input and p_filter-&amp;gt;output. If you can do only part of the transformation, say you can&#039;t do it (if the aout core doesn&#039;t find a fitting filter, it will split the transformation and ask you again).&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
Audio filters can be of three types :&lt;br /&gt;
&lt;br /&gt;
*Converters : change i_format (for instance from float32 to s16).&lt;br /&gt;
*Resamplers : change i_rate (for instance from 48 kHz to 44.1 kHz).&lt;br /&gt;
*Channel mixers : change i_physical_channels/i_original_channels (for instance from 5.1 to stereo). &lt;br /&gt;
&lt;br /&gt;
Audio filters can also combine any of these types. For instance you can have an audio filter which transforms A/52 5.1 to float32 stereo.&lt;br /&gt;
&lt;br /&gt;
The constructor must also set p_filter-&amp;gt;b_in_place. If it&#039;s 0, the aout core will allocate a new buffer for the output. If it&#039;s 1, when you write a byte in the output buffer, it destroys the same byte in the input buffer (they share the same memory area). Some filters can work in place because they just do a linear transformation (like float32-&amp;gt;s16), but most filters will want b_in_place = 0. The filter can allocate private data in p_filter-&amp;gt;p_sys. Do not forget to deallocate it in the destructor.&lt;br /&gt;
&lt;br /&gt;
The p_filter-&amp;gt;pf_do_work gets an input and an output buffer as arguments, and process them. At the end of the processing, do not forget to set p_out_buf-&amp;gt;i_nb_samples and p_out_buf-&amp;gt;i_nb_bytes, since they aren&#039;t inited by the aout core (their values can change between input and output and it&#039;s not quite predictible).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12383</id>
		<title>Hacker Guide/Audio Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12383"/>
		<updated>2008-09-13T17:58:10Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Audio filters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
&lt;br /&gt;
=Writing an audio filter=&lt;br /&gt;
&lt;br /&gt;
==Module descriptor==&lt;br /&gt;
 static int  Open     ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t *] );&lt;br /&gt;
 static void Close    ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structvlc__object__t.html vlc_object_t *] );&lt;br /&gt;
 static void DoWork   ( [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__instance__t.html aout_instance_t *], [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__filter__t.html aout_filter_t *], [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t *], [http://www.videolan.org/developers/vlc/doc/doxygen/html/structaout__buffer__t.html aout_buffer_t *] );&lt;br /&gt;
 &lt;br /&gt;
 vlc_module_begin();&lt;br /&gt;
     set_description( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_shortname( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_category( CAT_AUDIO );&lt;br /&gt;
     set_subcategory( SUBCAT_AUDIO_AFILTER );&lt;br /&gt;
     add_shortcut( &amp;quot;afx&amp;quot; );&lt;br /&gt;
     set_capability( &amp;quot;audio filter&amp;quot;, 0 );&lt;br /&gt;
     set_callbacks( Open, Close );&lt;br /&gt;
 vlc_module_end();&lt;br /&gt;
&lt;br /&gt;
==Mandatory structures==&lt;br /&gt;
*aout_filter_sys_t&lt;br /&gt;
&lt;br /&gt;
==Input Data==&lt;br /&gt;
&lt;br /&gt;
==Output Data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it returns 0 if it is able to do the whole transformation between p_filter-&amp;gt;input and p_filter-&amp;gt;output. If you can do only part of the transformation, say you can&#039;t do it (if the aout core doesn&#039;t find a fitting filter, it will split the transformation and ask you again).&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
Audio filters can be of three types :&lt;br /&gt;
&lt;br /&gt;
*Converters : change i_format (for instance from float32 to s16).&lt;br /&gt;
*Resamplers : change i_rate (for instance from 48 kHz to 44.1 kHz).&lt;br /&gt;
*Channel mixers : change i_physical_channels/i_original_channels (for instance from 5.1 to stereo). &lt;br /&gt;
&lt;br /&gt;
Audio filters can also combine any of these types. For instance you can have an audio filter which transforms A/52 5.1 to float32 stereo.&lt;br /&gt;
&lt;br /&gt;
The constructor must also set p_filter-&amp;gt;b_in_place. If it&#039;s 0, the aout core will allocate a new buffer for the output. If it&#039;s 1, when you write a byte in the output buffer, it destroys the same byte in the input buffer (they share the same memory area). Some filters can work in place because they just do a linear transformation (like float32-&amp;gt;s16), but most filters will want b_in_place = 0. The filter can allocate private data in p_filter-&amp;gt;p_sys. Do not forget to deallocate it in the destructor.&lt;br /&gt;
&lt;br /&gt;
The p_filter-&amp;gt;pf_do_work gets an input and an output buffer as arguments, and process them. At the end of the processing, do not forget to set p_out_buf-&amp;gt;i_nb_samples and p_out_buf-&amp;gt;i_nb_bytes, since they aren&#039;t inited by the aout core (their values can change between input and output and it&#039;s not quite predictible).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12382</id>
		<title>Hacker Guide/Audio Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12382"/>
		<updated>2008-09-13T17:45:24Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Writing an audio filter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Audio filters=&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
==Writing an audio filter==&lt;br /&gt;
&lt;br /&gt;
===Module descriptor===&lt;br /&gt;
 vlc_module_begin();&lt;br /&gt;
     set_description( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_shortname( N_(&amp;quot;audio filter x&amp;quot;) );&lt;br /&gt;
     set_category( CAT_AUDIO );&lt;br /&gt;
     set_subcategory( SUBCAT_AUDIO_AFILTER );&lt;br /&gt;
     add_shortcut( &amp;quot;afx&amp;quot; );&lt;br /&gt;
     set_capability( &amp;quot;audio filter&amp;quot;, 0 );&lt;br /&gt;
     set_callbacks( Open, Close );&lt;br /&gt;
 vlc_module_end();&lt;br /&gt;
&lt;br /&gt;
===Mandatory functions===&lt;br /&gt;
&lt;br /&gt;
 static int  Open     ( vlc_object_t * );&lt;br /&gt;
 static void Close    ( vlc_object_t * );&lt;br /&gt;
 static void DoWork   ( aout_instance_t *, aout_filter_t *, aout_buffer_t *, aout_buffer_t * );&lt;br /&gt;
&lt;br /&gt;
===Mandatory structures===&lt;br /&gt;
*aout_filter_sys_t&lt;br /&gt;
&lt;br /&gt;
===Input Data===&lt;br /&gt;
&lt;br /&gt;
===Output Data===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it returns 0 if it is able to do the whole transformation between p_filter-&amp;gt;input and p_filter-&amp;gt;output. If you can do only part of the transformation, say you can&#039;t do it (if the aout core doesn&#039;t find a fitting filter, it will split the transformation and ask you again).&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
&lt;br /&gt;
Audio filters can be of three types :&lt;br /&gt;
&lt;br /&gt;
*Converters : change i_format (for instance from float32 to s16).&lt;br /&gt;
*Resamplers : change i_rate (for instance from 48 kHz to 44.1 kHz).&lt;br /&gt;
*Channel mixers : change i_physical_channels/i_original_channels (for instance from 5.1 to stereo). &lt;br /&gt;
&lt;br /&gt;
Audio filters can also combine any of these types. For instance you can have an audio filter which transforms A/52 5.1 to float32 stereo.&lt;br /&gt;
&lt;br /&gt;
The constructor must also set p_filter-&amp;gt;b_in_place. If it&#039;s 0, the aout core will allocate a new buffer for the output. If it&#039;s 1, when you write a byte in the output buffer, it destroys the same byte in the input buffer (they share the same memory area). Some filters can work in place because they just do a linear transformation (like float32-&amp;gt;s16), but most filters will want b_in_place = 0. The filter can allocate private data in p_filter-&amp;gt;p_sys. Do not forget to deallocate it in the destructor.&lt;br /&gt;
&lt;br /&gt;
The p_filter-&amp;gt;pf_do_work gets an input and an output buffer as arguments, and process them. At the end of the processing, do not forget to set p_out_buf-&amp;gt;i_nb_samples and p_out_buf-&amp;gt;i_nb_bytes, since they aren&#039;t inited by the aout core (their values can change between input and output and it&#039;s not quite predictible).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Output&amp;diff=12381</id>
		<title>Hacker Guide/Audio Output</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Output&amp;diff=12381"/>
		<updated>2008-09-13T17:25:46Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* The audio output layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=The audio output layer=&lt;br /&gt;
&lt;br /&gt;
==Audio output overview==&lt;br /&gt;
&lt;br /&gt;
This chapter documents the audio output layer known under the &amp;quot;audio output 3&amp;quot; codename. It has first been released with VLC version 0.5.0. Previous versions use an antic API, which is no longer documented nor supported. You definitely should write new code only for aout3 and later.&lt;br /&gt;
&lt;br /&gt;
The audio output&#039;s main purpose is to take sound samples from one or several decoders (called &amp;quot;input streams&amp;quot; in this chapter), to mix them and write them to an output device (called &amp;quot;output stream&amp;quot;). During this process, transformations may be needed or asked by the user, and they will be performed by audio filters.&lt;br /&gt;
&lt;br /&gt;
(insert here a schematic of the data flow in aout3)&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
&lt;br /&gt;
*Sample : A sample is an elementary piece of audio information, containing the value for all channels. For instance, a stream at 44100 Hz features 44100 samples per second, no matter how many channels are coded, nor the coding type of the coefficients.&lt;br /&gt;
*Frame : A set of samples of arbitrary size. Codecs usually have a fixed frame size (for instance an A/52 frame contains 1536 samples). Frames do not have much importance in the audio output, since it can manage buffers of arbitrary sizes. However, for undecoded formats, the developer must indicate the number of bytes required to carry a frame of n samples, since it depends on the compression ratio of the stream.&lt;br /&gt;
*Coefficient : A sample contains one coefficient per channel. For instance a stereo stream features 2 coefficients per sample. Many audio items (such as the float32 audio mixer) deal directly with the coefficients. Of course, an undecoded sample format doesn&#039;t have the notion of &amp;quot;coefficient&amp;quot;, since a sample cannot be materialized independantly in the stream.&lt;br /&gt;
*Resampling : Changing the number of samples per second of an audio stream.&lt;br /&gt;
*Downmixing/upmixing : Changing the configuration of the channels (see below). &lt;br /&gt;
&lt;br /&gt;
==Audio sample formats==&lt;br /&gt;
&lt;br /&gt;
The whole audio output can viewed as a pipeline transforming one audio format to another in successive steps. Consequently, it is essential to understand what an audio sample format is.&lt;br /&gt;
&lt;br /&gt;
The audio_sample_format_t structure is defined in include/audio_output.h. It contains the following members :&lt;br /&gt;
&lt;br /&gt;
*i_format : Define the format of the coefficients. This is a FOURCC field. For instance &#039;fl32&#039; (float32), &#039;fi32&#039; (fixed32), &#039;s16b&#039; (signed 16-bit big endian), &#039;s16l&#039; (signed 16-bit little endian), AOUT_FMT_S16_NE (shortcut to either &#039;s16b&#039; or &#039;s16l&#039;), &#039;u16b&#039;, &#039;u16l&#039;,&#039;s8 &#039;, &#039;u8 &#039;, &#039;ac3 &#039;, &#039;spdi&#039; (S/PDIF). Undecoded sample formats include &#039;a52 &#039;, &#039;dts &#039;, &#039;spdi&#039;, &#039;mpga&#039; (MPEG audio layer I and II), &#039;mpg3&#039; (MPEG audio layer III). An audio filter allowing to go from one format to another is called, by definition, a &amp;quot;converter&amp;quot;. Some converters play the role of a decoder (for instance a52tofloat32.c), but are in fact &amp;quot;audio filters&amp;quot;.&lt;br /&gt;
*i_rate : Define the number of samples per second the audio output will have to deal with. Common values are 22050, 24000, 44100, 48000. i_rate is in Hz.&lt;br /&gt;
*i_physical_channels : Define the channels which are physically encoded in the buffer. This field is a bitmask of values defined in audio_output.h, for instance AOUT_CHAN_CENTER, AOUT_CHAN_LEFT, etc. Beware : the numeric value doesn&#039;t represent the number of coefficients per sample, see aout_FormatNbChannels() for that. The coefficients for each channel are always stored interleaved, because it is much easier for the mixer to deal with interleaved coefficients. Consequently, decoders which output planar data must implement an interleaving function. Coefficients must be output in the following order (WG-4 specification) : left, right, left surround, right surround, center, LFE.&lt;br /&gt;
*i_original_channels : Define the channels from the original stream which have been used to constitute a buffer. For instance, imagine your output plug-ins only has mono output (AOUT_CHAN_CENTER), and your stream is stereo. You can either use both channels of the stream (i_original_channels == AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT), or select one of them. i_original_channels uses the same bitmask as i_physical_channels, and also features special bits AOUT_CHAN_DOLBYSTEREO, which indicates whether the input stream is downmixed to Dolby surround sound, and AOUT_CHAN_DUALMONO, which indicates that the stereo stream is actually constituted of two mono streams, and only one of them should be selected (for instance, two languages on one VCD).&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
&lt;br /&gt;
For 16-bit integer format types, we make a distinction between big-endian and little-endian storage types. However, floats are also stored in either big endian or little endian formats, and we didn&#039;t make a difference. The reason is, samples are hardly stored in float32 format in a file, and transferred from one machine to another ; so we assume float32 always use the native endianness.&lt;br /&gt;
&lt;br /&gt;
Yet, samples are quite often stored as big-endian signed 16-bit integers, such as in DVD&#039;s LPCM format. So the LPCM decoder allocates an &#039;s16b&#039; input stream, and on little-endian machines, an &#039;s16b&#039;-&amp;gt;&#039;s16l&#039; converter is automatically invoked by the input pipeline.&lt;br /&gt;
&lt;br /&gt;
In most cases though, AOUT_FMT_S16_NE and AOUT_FMT_U16_NE should be used.&lt;br /&gt;
&lt;br /&gt;
The aout core provides macros to compare two audio sample formats. AOUT_FMTS_IDENTICAL() tests if i_format, i_rate, i_physical_channels and i_original_channels are identical. AOUT_FMTS_SIMILAR tests if i_rate and i_channels are identical (useful to write a pure converter filter).&lt;br /&gt;
&lt;br /&gt;
The audio_sample_format_t structure then contains two additional parameters, which you are not supposed to write directly, except if you&#039;re dealing with undecoded formats. For PCM formats they are automatically filled in by aout_FormatPrepare(), which is called by the core functions when necessary.&lt;br /&gt;
&lt;br /&gt;
*i_frame_length : Define the number of samples of the &amp;quot;natural&amp;quot; frame. For instance for A/52 it is 1536, since 1536 samples are compressed in an undecoded buffer. For PCM formats, the frame size is 1, because every sample in the buffer can be independantly accessed.&lt;br /&gt;
*i_bytes_per_frame : Define the size (in bytes) of a frame. For A/52 it depends on the bitrate of the input stream (read in the sync info). For instance for stereo float32 samples, i_bytes_per_frame == 8 (i_frame_length == 1). &lt;br /&gt;
&lt;br /&gt;
These last two fields (which are always meaningful as soon as aout_FormatPrepare() has been called) make it easy to calculate the size of an audio buffer : i_nb_samples * i_bytes_per_frame / i_frame_length.&lt;br /&gt;
&lt;br /&gt;
==Typical runcourse==&lt;br /&gt;
&lt;br /&gt;
The input spawns a new audio decoder, say for instance an A/52 decoder. The A/52 decoder parses the sync info for format information (eg. it finds 48 kHz, 5.1, 196 kbi/s), and creates a new aout &amp;quot;input stream&amp;quot; with aout_InputNew(). The sample format is :&lt;br /&gt;
&lt;br /&gt;
*i_format = &#039;a52 &#039;&lt;br /&gt;
*i_rate = 48000&lt;br /&gt;
*i_physical_channels = i_original_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_LFE&lt;br /&gt;
*i_frame_length = 1536&lt;br /&gt;
*i_bytes_per_frame = 24000 &lt;br /&gt;
&lt;br /&gt;
This input format won&#039;t be modified, and will be stored in the aout_input_t structure corresponding to this input stream : p_aout-&amp;gt;pp_inputs[0]-&amp;gt;input. Since it is our first input stream, the aout core will try to configure the output device with this audio sample format (p_aout-&amp;gt;output.output), to avoid unnecessary transformations.&lt;br /&gt;
&lt;br /&gt;
The core will probe for an output module in the usual fashion, and its behavior will depend. Either the output device has the S/PDIF capability, and then it will set p_aout-&amp;gt;output.output.i_format to &#039;spdi&#039;, or it&#039;s a PCM-only device. It will thus ask for the native sample format, such as &#039;fl32&#039; (for Darwin CoreAudio) or AOUT_FMT_S16_NE (for OSS). The output device may also have constraints on the number of channels or the rate. For instance, the p_aout-&amp;gt;output.output structure may look like :&lt;br /&gt;
&lt;br /&gt;
*i_format = AOUT_FMT_S16_NE&lt;br /&gt;
*i_rate = 44100&lt;br /&gt;
*i_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT&lt;br /&gt;
*i_frame_length = 1&lt;br /&gt;
*i_bytes_per_frame = 4 &lt;br /&gt;
&lt;br /&gt;
Once we have an output format, we deduce the mixer format. It is strictly forbidden to change the audio sample format between the mixer and the output (because all transformations happen in the input pipeline), except for i_format. The reason is that we have only developed three mixers (float32 and S/PDIF, plus fixed32 for embedded devices which do not feature an FPU), so all other types must be cast into one of those. Still with our example, the p_aout-&amp;gt;mixer.mixer structure looks like :&lt;br /&gt;
&lt;br /&gt;
*i_format = &#039;fl32&#039;&lt;br /&gt;
*i_rate = 44100&lt;br /&gt;
*i_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT&lt;br /&gt;
*i_frame_length = 1&lt;br /&gt;
*i_bytes_per_frame = 8 &lt;br /&gt;
&lt;br /&gt;
The aout core will thus allocate an audio filter to convert &#039;fl32&#039; to AOUT_FMT_S16_NE. This is the only audio filter in the output pipeline. It will also allocate a float32 mixer. Since only one input stream is present, the trivial mixer will be used (only copies samples from the first input stream). Otherwise it would have used a more precise float32 mixer.&lt;br /&gt;
&lt;br /&gt;
The last step of the initialization is to build an input pipeline. When several properties have to be changed, the aout core searches first for an audio filter capable of changing :&lt;br /&gt;
&lt;br /&gt;
#All parameters ;&lt;br /&gt;
#i_format and i_physical_channels/i_original_channels ;&lt;br /&gt;
#i_format ; &lt;br /&gt;
&lt;br /&gt;
If the whole transformation cannot be done by only one audio filter, it will allocate a second and maybe a third filter to deal with the rest. To follow up on our example, we will allocate two filters : a52tofloat32 (which will deal with the conversion and the downmixing), and a resampler. Quite often, for undecoded formats, the converter will also deal with the downmixing, for efficiency reasons.&lt;br /&gt;
&lt;br /&gt;
When this initialization is over, the &amp;quot;decoder&amp;quot; plug-in can run its main loop. Typically the decoder requests a buffer of length i_nb_samples, and copies the undecoded samples there (using GetChunk()). The buffer then goes along the input pipeline, which will do the decoding (to &#039;fl32&#039;), and downmixing and resampling. Additional resampling will occur if complex latency issues in the output layer impose us to go temporarily faster or slower to achieve perfect lipsync (this is decided on a per-buffer basis). At the end of the input pipeline, the buffer is placed in a FIFO, and the decoder thread runs the audio mixer.&lt;br /&gt;
&lt;br /&gt;
The audio mixer then calculates whether it has enough samples to build a new output buffer. If it does, it mixes the input streams, and passes the buffer to the output layer. The buffer goes along the output pipeline (which in our case only contains a converter filter), and then it is put in the output FIFO for the device.&lt;br /&gt;
&lt;br /&gt;
Regularly, the output device will fetch the next buffer from the output FIFO, either through a callback of the audio subsystem (Mac OS X&#039; CoreAudio, SDL), or thanks to a dedicated audio output thread (OSS, ALSA...). This mechanism uses aout_OutputNextBuffer(), and gives the estimated playing date of the buffer. If the computed playing date isn&#039;t equal to the estimated playing date (with a small tolerance), the output layer changes the date of all buffers in the audio output module, triggering some resampling at the beginning of the input pipeline when the next buffer will come from the decoder. That way, we shall resynchronize audio and video streams. When the buffer is played, it is finally released.&lt;br /&gt;
&lt;br /&gt;
==Mutual exclusion mechanism==&lt;br /&gt;
&lt;br /&gt;
The access to the internal structures must be carefully protected, because contrary to other objects in the VLC framework (input, video output, decoders...), the audio output doesn&#039;t have an associated thread. It means that parts of the audio output run in different threads (decoders, audio output IO thread, interface), and we do not control when the functions are called. Thus, much care must be taken to avoid concurrent access on the same part of the audio output, without creating a bottleneck which would cause latency problems at the output layer.&lt;br /&gt;
&lt;br /&gt;
Consequently, we have set up a locking mechanism in five parts :&lt;br /&gt;
&lt;br /&gt;
#p_aout-&amp;gt;mixer_lock : This lock is taken when the audio mixer is entered. The decoder thread in which the mixer runs must hold the mutex during the mixing, until the buffer comes out of the output pipeline. Without holding this mutex, the interface thread cannot change the output pipeline, and a decoder cannot add a new input stream.&lt;br /&gt;
#p_input-&amp;gt;lock : This lock is taken when a decoder calls aout_BufferPlay(), as long as the buffer is in the input pipeline. The interface thread cannot change the input pipeline without holding this lock.&lt;br /&gt;
#p_aout-&amp;gt;output_fifo_lock : This lock must be taken to add or remove a packet from the output FIFO, or change its dates.&lt;br /&gt;
#p_aout-&amp;gt;input_fifos_lock : This lock must be taken to add or remove a packet from one of the input FIFOs, or change its dates. &lt;br /&gt;
&lt;br /&gt;
Having so many mutexes makes it easy to fall into deadlocks (ie. when a thread has the mixer lock and wants the input fifos lock, and the other has the input fifos lock and wants the mixer lock). We could have worked with fewer locks (and even one global_lock), but for instance when the mixer is running, we do not want to block the audio output IO thread from picking up the next buffer. So for efficiency reasons we want to keep that many locks.&lt;br /&gt;
&lt;br /&gt;
So we have set up a strong discipline in taking the locks. If you need several of the locks, you must take them in the order indicated above. For instance if you already the hold input fifos lock, it is strictly forbidden to try and take the mixer lock. You must first release the input fifos lock, then take the mixer lock, and finally take again the input fifos lock.&lt;br /&gt;
&lt;br /&gt;
It might seem a big constraint, but the order has been chosen so that in most cases, it is the most natural order to take the locks.&lt;br /&gt;
&lt;br /&gt;
==Internal structures==&lt;br /&gt;
&lt;br /&gt;
===Buffers===&lt;br /&gt;
&lt;br /&gt;
The aout_buffer_t structure is only allocated by the aout core functions, and goes from the decoder to the output device. A new aout buffer is allocated in these circumstances :&lt;br /&gt;
&lt;br /&gt;
*Whenever the decoder calls aout_BufferNew().&lt;br /&gt;
*In the input and output pipeline, when an audio filter requests a new output buffer (ie. when b_in_place == 0, see below).&lt;br /&gt;
*In the audio mixer, when a new output buffer is being prepared. &lt;br /&gt;
&lt;br /&gt;
====Note====&lt;br /&gt;
&lt;br /&gt;
Most audio filters are able to place the output result in the same buffer as the input data, so most buffers can be reused that way, and we avoid massive allocations. However, some filters require the allocation of an output buffer.&lt;br /&gt;
&lt;br /&gt;
The core functions are smart enough to determine if the buffer is ephemer (for instance if it will only be used between two audio filters, and disposed of immediately therafter), or if it will need to be shared among several threads (as soon as it will need to stay in an input or output FIFO).&lt;br /&gt;
&lt;br /&gt;
In the first case, the aout_buffer_t structure and its associated buffer will be allocated in the thread&#039;s stack (via the alloca() system call), whereas in the latter in the process&#039;s heap (via malloc()). You, codec or filter developer, don&#039;t have to deal with the allocation or deallocation of the buffers.&lt;br /&gt;
&lt;br /&gt;
The fields you&#039;ll probably need to use are : p_buffer (pointer to the raw data), i_nb_bytes (size of the significative portion of the data), i_nb_samples, start_date and end_date.&lt;br /&gt;
&lt;br /&gt;
===Date management===&lt;br /&gt;
&lt;br /&gt;
On the first impression, you might be tempted to think that to calculate the starting date of a buffer, it might be enough to regularly fetch the PTS i_pts from the input, and then : i_pts += i_nb_past_samples * 1000000 / i_rate. Well, I&#039;m sorry to deceive you, but you&#039;ll end up with rounding problems, resulting in a crack every few seconds.&lt;br /&gt;
&lt;br /&gt;
Indeed, if you have 1536 samples per buffer (as is often the case for A/52) at 44.1 kHz, it gives : 1536 * 1000000 / 44100 = 34829.9319727891. The decimal part of this figure will drive you mad (note that with 48 kHz samples it is an integral digit, so it will work well in many cases).&lt;br /&gt;
&lt;br /&gt;
One solution could have been to work in nanoseconds instead of milliseconds, but you&#039;d only be making the problem 1000 times less frequent. The only exact solution is to add 34829 for every buffer, and keep the remainder of the division somewhere. For every buffer you add the remainders, and when it&#039;s greater than 44100, you add 34830 instead of 34829. That way you don&#039;t have the rounding error which would occur in the long run (this is called the Bresenham algorithm).&lt;br /&gt;
&lt;br /&gt;
The good news is, the audio output core provides a structure (audio_date_t) and functions to deal with it :&lt;br /&gt;
&lt;br /&gt;
*aout_DateInit( audio_date_t * p_date, u32 i_divider ) : Initialize the Bresenham algorithm with the divider i_divider. Usually, i_divider will be the rate of the stream.&lt;br /&gt;
*aout_DateSet( audio_date_t * p_date, mtime_t new_date ) : Initialize the date, and set the remainder to 0. You will usually need this whenever you get a new PTS from the input.&lt;br /&gt;
*aout_DateMove( audio_date_t * p_date, mtime_t difference ) : Add or subtract microseconds from the stored date (used by the aout core when the output layer reports a lipsync problem).&lt;br /&gt;
*aout_DateGet( audio_date_t * p_date ) : Return the current stored date.&lt;br /&gt;
*aout_DateIncrement( audio_date_t * p_date, u32 i_nb_samples ) : Add i_nb_samples * 1000000 to the stored date, taking into account rounding errors, and return the result. &lt;br /&gt;
&lt;br /&gt;
===FIFOs===&lt;br /&gt;
&lt;br /&gt;
FIFOs are used at two places in the audio output : at the end of the input pipeline, before entering the audio mixer, to store the buffers which haven&#039;t been mixed yet ; and at the end of the output pipeline, to queue the buffers for the output device.&lt;br /&gt;
&lt;br /&gt;
FIFOs store a chained list of buffers. They also keep the ending date of the last buffer, and whenever you pass a new buffer, they will enforce the time continuity of the stream by changing its start_date and end_date to match the FIFO&#039;s end_date (in case of stream discontinuity, the aout core will have to reset the date). The aout core provides functions to access the FIFO. Please understand than none of these functions use mutexes to protect exclusive access, so you must deal with race conditions yourself if you want to use them directly !&lt;br /&gt;
&lt;br /&gt;
*aout_FifoInit( aout_instance_t * p_aout, aout_fifo_t * p_fifo, u32 i_rate ) : Initialize the FIFO pointers, and the aout_date_t with the appropriate rate of the stream (see above for an explanation of aout dates).&lt;br /&gt;
*aout_FifoPush( aout_instance_t * p_aout, aout_fifo_t * p_fifo, aout_buffer_t * p_buffer ) : Add p_buffer at the end of the chained list, update its start_date and end_date according to the FIFO&#039;s end_date, and update the internal end_date.&lt;br /&gt;
*aout_FifoSet( aout_instance_t * p_aout, aout_fifo_t * p_fifo, mtime_t date ) : Trash all buffers, and set a new end_date. Used when a stream discontinuity has been detected.&lt;br /&gt;
*aout_FifoMoveDates( aout_instance_t * p_aout, aout_fifo_t * p_fifo, mtime_t difference ) : Add or subtract microseconds from end_date and from start_date and end_date of all buffers in the FIFO. The aout core will use this function to force resampling, after lipsync issues.&lt;br /&gt;
*aout_FifoNextStart( aout_instance_t * p_aout, aout_fifo_t * p_fifo ) : Return the start_date which will be given to the next buffer passed to aout_FifoPush().&lt;br /&gt;
*aout_FifoPop( aout_instance_t * p_aout, aout_fifo_t * p_fifo ) : Return the first buffer of the FIFO, and remove it from the chained list.&lt;br /&gt;
*aout_FifoDestroy( aout_instance_t * p_aout, aout_fifo_t * p_fifo ) : Free all buffers in the FIFO. &lt;br /&gt;
&lt;br /&gt;
==API for the decoders==&lt;br /&gt;
&lt;br /&gt;
The API between the audio output and the decoders is quite simple. As soon as the decoder has the required information to fill in an audio_sample_format_t, it can call : p_dec-&amp;gt;p_aout_input = aout_InputNew( p_dec-&amp;gt;p_fifo, &amp;amp;p_dec-&amp;gt;p_aout, &amp;amp;p_dec-&amp;gt;output_format ).&lt;br /&gt;
&lt;br /&gt;
In the next operations, the decoder will need both p_aout and p_aout_input. To retrieve a buffer, it calls : p_buffer = aout_BufferNew( p_dec-&amp;gt;p_aout, p_dec-&amp;gt;p_aout_input, i_nb_frames ).&lt;br /&gt;
&lt;br /&gt;
The decoder must at least fill in start_date (using an audio_date_t is recommended), and then it can play the buffer : aout_BufferPlay( p_dec-&amp;gt;p_aout, p_dec-&amp;gt;p_aout_input, p_buffer ). In case of error, the buffer can be deleted (without being played) with aout_BufferDelete( p_dec-&amp;gt;p_aout, p_dec-&amp;gt;p_aout_input, p_buffer ).&lt;br /&gt;
&lt;br /&gt;
When the decoder dies, or the sample format changes, the input stream must be destroyed with : aout_InputDelete( p_dec-&amp;gt;p_aout, p_dec-&amp;gt;p_aout_input ).&lt;br /&gt;
&lt;br /&gt;
==API for the output module==&lt;br /&gt;
&lt;br /&gt;
An output module must implement a constructor, an optional destructor, and a p_aout-&amp;gt;output.pf_play function. The constructor is the function which will be called when the module is loaded, and returns 0 if, and only if the output device could be open. The function may perform specific allocation in p_aout-&amp;gt;output.p_sys, provided the structure is deallocated in the destructor.&lt;br /&gt;
&lt;br /&gt;
In most cases, the p_aout-&amp;gt;output.pf_play function does nothing (the only exception is when the samples can be processed immediately, without caring about dates, as in the file output). The job is then done by the IO callback which you are supposed to provide.&lt;br /&gt;
&lt;br /&gt;
On modern sound architectures (such as Mac OS X CoreAudio or SDL), when the audio buffer starves, the operating system automatically calls a function from your application. On outdated sound architectures (such as OSS), you have to emulate this behavior. Then your constructor must spawn a new audio IO thread, which periodically calls the IO callback to transfer the data.&lt;br /&gt;
&lt;br /&gt;
When it is called, the first job of the IO callback will be determine the date at which the next samples will be played. Again, on modern platforms this information is given by the operating system, whereas on others you have to deduce it from the state of the internal buffer. Then you call aout_OutputNextBuffer( p_aout, next_date, b_can_sleek ), which will return a pointer to the next buffer to write, or NULL if none was available. In the latter case, it is advised to write zeros to the DSP.&lt;br /&gt;
&lt;br /&gt;
The value of the last parameter (b_can_sleek) changes the behavior of the function. When it is set to 0, aout_OutputNextBuffer() will run an internal machinery to compensate for possible drift. For instance if the PTS of the next buffer is 40 ms earlier than the date you ask, it means we are very late. So it will ask the input stage to downsample the incoming buffers, so that we can come back in sync. No specific behavior is thus expected from your module.&lt;br /&gt;
&lt;br /&gt;
On the contrary, when b_can_sleek is set to 1, you tell the output layer not to take any actions to compensate a drift. You will typically use this when you&#039;ve just played silence, and you can deal with buffers which are too early by inserting zeros (zeros in this case will not break the audio continuity, since you were playing nothing before). Another case of use is with S/PDIF output. S/PDIF packets cannot be resampled for obvious reasons, so you must use b_can_sleek = 1.&lt;br /&gt;
&lt;br /&gt;
Once you have a buffer, you just have to transfer it to the DSP, for instance : memcpy( dsp_buffer, p_buffer-&amp;gt;p_buffer, p_buffer-&amp;gt;i_nb_bytes ).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Hacker%27s_Guide/Audio_Mixers&amp;diff=12380</id>
		<title>Documentation:Hacker&#039;s Guide/Audio Mixers</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Hacker%27s_Guide/Audio_Mixers&amp;diff=12380"/>
		<updated>2008-09-13T17:25:34Z</updated>

		<summary type="html">&lt;p&gt;Geal: New page: =Writing an audio mixer=  Writing an audio mixer is very similar to writing an audio filter. The only difference is that you have to deal with the input buffers yourself, and request for n...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Writing an audio mixer=&lt;br /&gt;
&lt;br /&gt;
Writing an audio mixer is very similar to writing an audio filter. The only difference is that you have to deal with the input buffers yourself, and request for new buffers when you need to. Between two calls to pf_do_work, the position in the buffer is remembered in p_input-&amp;gt;p_first_byte_to_mix (it isn&#039;t always the start of the buffer, since input and output buffers can be of different length). It is your job to set this pointer at the end of pf_do_work.&lt;br /&gt;
&lt;br /&gt;
For more details, please have a look at the float32 mixer. It&#039;s much more understandable than lines of documentation.&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12379</id>
		<title>Hacker Guide/Audio Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Audio_Filters&amp;diff=12379"/>
		<updated>2008-09-13T17:24:59Z</updated>

		<summary type="html">&lt;p&gt;Geal: New page: =Writing an audio filter=  An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Writing an audio filter=&lt;br /&gt;
&lt;br /&gt;
An audio filter module is constituted of a constructor, a destructor, and a p_filter-&amp;gt;pf_do_work function. The constructor is passed a p_filter structure, and it returns 0 if it is able to do the whole transformation between p_filter-&amp;gt;input and p_filter-&amp;gt;output. If you can do only part of the transformation, say you can&#039;t do it (if the aout core doesn&#039;t find a fitting filter, it will split the transformation and ask you again).&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
Audio filters can be of three types :&lt;br /&gt;
&lt;br /&gt;
*Converters : change i_format (for instance from float32 to s16).&lt;br /&gt;
*Resamplers : change i_rate (for instance from 48 kHz to 44.1 kHz).&lt;br /&gt;
*Channel mixers : change i_physical_channels/i_original_channels (for instance from 5.1 to stereo). &lt;br /&gt;
&lt;br /&gt;
Audio filters can also combine any of these types. For instance you can have an audio filter which transforms A/52 5.1 to float32 stereo.&lt;br /&gt;
&lt;br /&gt;
The constructor must also set p_filter-&amp;gt;b_in_place. If it&#039;s 0, the aout core will allocate a new buffer for the output. If it&#039;s 1, when you write a byte in the output buffer, it destroys the same byte in the input buffer (they share the same memory area). Some filters can work in place because they just do a linear transformation (like float32-&amp;gt;s16), but most filters will want b_in_place = 0. The filter can allocate private data in p_filter-&amp;gt;p_sys. Do not forget to deallocate it in the destructor.&lt;br /&gt;
&lt;br /&gt;
The p_filter-&amp;gt;pf_do_work gets an input and an output buffer as arguments, and process them. At the end of the processing, do not forget to set p_out_buf-&amp;gt;i_nb_samples and p_out_buf-&amp;gt;i_nb_bytes, since they aren&#039;t inited by the aout core (their values can change between input and output and it&#039;s not quite predictible).&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=12378</id>
		<title>Hacker Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=12378"/>
		<updated>2008-09-13T17:20:41Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* The many layers of VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:red;&amp;quot;&amp;gt;&lt;br /&gt;
This guide is still being constructed. Please see http://www.videolan.org/developers/vlc.html for the current information &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===Authors=== &lt;br /&gt;
* Derk-Jan Hartman&lt;br /&gt;
*Christophe Massiot&lt;br /&gt;
*Samuel Hocevar&lt;br /&gt;
*Geoffroy Couprie&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Introduction| What is this?]]&lt;br /&gt;
* What you need to know about VLC&lt;br /&gt;
&lt;br /&gt;
==The many layers of VLC==&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Core| Core]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/VLM Internals| VLM Internals]]&lt;br /&gt;
===Plugins===&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Interfaces| Interfaces]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Access| Access]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Access Filters| Access Filters]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Input| Input]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Demux| Demux]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Decoder| Decoder]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Audio Filters| Audio Filters]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Video Filters| Video Filters]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Audio Mixers| Audio Mixers]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Audio Output| Audio Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Video Output| Video Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Visualization| Visualization]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Encoder| Encoder]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Mux| Mux]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Packetizers| Packetizers]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Stream Output| Stream Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Access Output| Access Output]]&lt;br /&gt;
&lt;br /&gt;
==VLC source code overview==&lt;br /&gt;
* [[VLC source tree]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Module Writers Guide|VLC modules]] (also see [[Modules source tree]] )&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Object Management|VLC Object Management]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Preferences|VLC Preferences]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Playlist|VLC Playlist and Media Library]]&lt;br /&gt;
* VLC variables&lt;br /&gt;
* [[Doxygen Documentation]]&lt;br /&gt;
&lt;br /&gt;
==Coding for VLC==&lt;br /&gt;
* [[Sending Patches]]&lt;br /&gt;
* [[Code Conventions]]&lt;br /&gt;
* Adding a module&lt;br /&gt;
* Using [[Documentation:Hacker&#039;s Guide/libvlc|libvlc]]&lt;br /&gt;
* Bindings&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=12377</id>
		<title>Hacker Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=12377"/>
		<updated>2008-09-13T17:13:28Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* The many layers of VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:red;&amp;quot;&amp;gt;&lt;br /&gt;
This guide is still being constructed. Please see http://www.videolan.org/developers/vlc.html for the current information &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===Authors=== &lt;br /&gt;
* Derk-Jan Hartman&lt;br /&gt;
*Christophe Massiot&lt;br /&gt;
*Samuel Hocevar&lt;br /&gt;
*Geoffroy Couprie&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Introduction| What is this?]]&lt;br /&gt;
* What you need to know about VLC&lt;br /&gt;
&lt;br /&gt;
==The many layers of VLC==&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Core| Core]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Interfaces| Interfaces]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Input| Input]]&lt;br /&gt;
* Access&lt;br /&gt;
* Demux&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Decoder| Decoder]]&lt;br /&gt;
* Packetizers&lt;br /&gt;
* Codec&lt;br /&gt;
* Stream Output&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Audio Output| Audio Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Video Output| Video Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/VLM Internals| VLM Internals]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Audio Filters| Audio Filters]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Video Filters| Video Filters]]&lt;br /&gt;
&lt;br /&gt;
==VLC source code overview==&lt;br /&gt;
* [[VLC source tree]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Module Writers Guide|VLC modules]] (also see [[Modules source tree]] )&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Object Management|VLC Object Management]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Preferences|VLC Preferences]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Playlist|VLC Playlist and Media Library]]&lt;br /&gt;
* VLC variables&lt;br /&gt;
* [[Doxygen Documentation]]&lt;br /&gt;
&lt;br /&gt;
==Coding for VLC==&lt;br /&gt;
* [[Sending Patches]]&lt;br /&gt;
* [[Code Conventions]]&lt;br /&gt;
* Adding a module&lt;br /&gt;
* Using [[Documentation:Hacker&#039;s Guide/libvlc|libvlc]]&lt;br /&gt;
* Bindings&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Win32CompileCygwinNew&amp;diff=12371</id>
		<title>Win32CompileCygwinNew</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Win32CompileCygwinNew&amp;diff=12371"/>
		<updated>2008-09-10T09:50:50Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Advanced usage */ use ccache&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a new version of the Win32CompileCygwin written by [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
&#039;&#039;&#039;This version ONLY works for 0.9.x.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: building VLC on Cygwin has ever been a failure-prone task. It is also very slow. You should really consider cross-compiling from Linux (on a virtual machine, via dual-boot or from another computer). You were warned.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for Windows users with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
This guide uses [http://www.cygwin.com &#039;&#039;&#039;Cygwin&#039;&#039;&#039;] a Linux-like environment for Windows used for compilation of the VLC source code.&lt;br /&gt;
&lt;br /&gt;
Start off by creating a VLC and a download folder on your hard drive where you can put all the installation files:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\&lt;br /&gt;
 C:\VLC\Downloads&lt;br /&gt;
&lt;br /&gt;
For further reference, the assumption is made that the local user will be &#039;Administrator&#039;.&lt;br /&gt;
&lt;br /&gt;
=Cygwin=&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://www.cygwin.com/cygwin/setup.exe Cygwin setup] and save it in your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\Downloads\&lt;br /&gt;
&lt;br /&gt;
More info about Cygwin can be found at http://www.cygwin.com or http://sourceware.org/cygwin&lt;br /&gt;
&lt;br /&gt;
==Selecting Cygwin packages to install==&lt;br /&gt;
&lt;br /&gt;
Run the setup program with the following options:&lt;br /&gt;
&lt;br /&gt;
Installation type : Install from Internet (default)&lt;br /&gt;
&lt;br /&gt;
Root directory : C:\cygwin (default)&lt;br /&gt;
&lt;br /&gt;
Local Package directory : C:\VLC\Downloads\cygwin (your download location)&lt;br /&gt;
&lt;br /&gt;
Internet Connection : Direct Connection (preferred, if it fails try another)&lt;br /&gt;
&lt;br /&gt;
Download Site : Choose a download site closest to you (FTP preferred)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the &amp;quot;Select Packages&amp;quot; section of the installation process you can select packages by clicking the button with the rotating 2 arrows. (This is under the &amp;quot;New&amp;quot; section). It shows &amp;quot;Skip&amp;quot; next to the button if the package isn&#039;t selected yet.&lt;br /&gt;
&lt;br /&gt;
Clicking the button a few times will rotate through the possible package versions including &amp;quot;Skip&amp;quot; (meaning do not install or remove if installed) and &amp;quot;Keep&amp;quot; (meaning keep using the current installed version). If a package was already installed it will also show the &amp;quot;Current&amp;quot; version just to the left of it.&lt;br /&gt;
&lt;br /&gt;
Select the following packages (some others will automatically be selected as well):&lt;br /&gt;
&lt;br /&gt;
 Archive&lt;br /&gt;
   unzip&lt;br /&gt;
   zip&lt;br /&gt;
&lt;br /&gt;
 Devel&lt;br /&gt;
   autoconf&lt;br /&gt;
   automake&lt;br /&gt;
   binutils&lt;br /&gt;
   cvs&lt;br /&gt;
   expat&lt;br /&gt;
   gcc&lt;br /&gt;
   gcc-core&lt;br /&gt;
   gcc-g++&lt;br /&gt;
   gcc-mingw&lt;br /&gt;
   gcc-mingw-core&lt;br /&gt;
   gcc-mingw-g++&lt;br /&gt;
   gdb&lt;br /&gt;
   gettext&lt;br /&gt;
   gettext-devel&lt;br /&gt;
   git&lt;br /&gt;
   libiconv&lt;br /&gt;
   libgcrypt-devel&lt;br /&gt;
   libtool&lt;br /&gt;
   make&lt;br /&gt;
   mingw-runtime&lt;br /&gt;
   nasm&lt;br /&gt;
   patchutils&lt;br /&gt;
   pkg-config&lt;br /&gt;
   subversion&lt;br /&gt;
&lt;br /&gt;
 Editor&lt;br /&gt;
   vim&lt;br /&gt;
&lt;br /&gt;
 Libs&lt;br /&gt;
   libgcrypt&lt;br /&gt;
&lt;br /&gt;
 Web&lt;br /&gt;
   curl (optional: for building extras/contrib)&lt;br /&gt;
   wget (optional: for building extras/contrib)&lt;br /&gt;
&lt;br /&gt;
==Cygwin environment==&lt;br /&gt;
&lt;br /&gt;
Start Cygwin from the icon on your desktop (With Windows Vista run it with admin rights, so right click and select &amp;quot;Run as administrator&amp;quot;). If it runs for the first time it will automatically create a home\&amp;quot;username&amp;quot; folder in the Cygwin environment; user being the currently logged on Windows user. Assuming this is the &#039;Administrator&#039; user it will create the following folder:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\home\Administrator (example)&lt;br /&gt;
&lt;br /&gt;
NOTE: On your desktop, you can rightclick the Cygwin icon and (in the Options field of the Cygwin Properties) set the Command history Buffer size to as large as possible: 999. This setting will make it possible to scroll back further in the Cygwin environment.&lt;br /&gt;
&lt;br /&gt;
=VLC source code=&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
The very latest VLC source code can be obtained through a tool called Git. The Cygwin package we&#039;re about to install comes with an internal git component.&lt;br /&gt;
&lt;br /&gt;
 cd /cygdrive/c/VLC/&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Applies to:&lt;br /&gt;
&lt;br /&gt;
 Windows XP Service Pack 2 with Security Update &#039;&#039;&#039;KB925902&#039;&#039;&#039; installed&lt;br /&gt;
 Windows XP Service Pack 3&lt;br /&gt;
&lt;br /&gt;
There is a problem on Windows XP (and possibly on other Microsoft Operating Systems) with &#039;git clone&#039; which aborts unexpectedly with a Cygwin error during the &#039;checking out files&#039; (reproducable every time and at the same percentage) at the end of the clone procedure:&lt;br /&gt;
&lt;br /&gt;
 $ 2 [main] git 4012 D:\cygwin\bin\git.exe:&lt;br /&gt;
   *** fatal error - &#039;&#039;&#039;could not load shell32, Win32 error 487&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This has been verified (May 22, 2008) against the currently available Cygwin 1.5.25-12 with git package versions 1.5.5.1-1 and 1.5.4-1 and is a generic problem which also affects cloning from other git repositories (although x264.git seems unaffected).&lt;br /&gt;
&lt;br /&gt;
The issue is referred to in the mail archives of the Cygwin project mailing list here &lt;br /&gt;
[http://sourceware.org/ml/cygwin/2007-07/msg00858.html Git error on Cygwin].&lt;br /&gt;
&lt;br /&gt;
By eliminating the impossible, whatever remained, however improbable, it is the following Windows Security Update (April 3, 2007) which is actually the cause of the Cygwin issue: [http://www.microsoft.com/technet/security/bulletin/ms07-017.mspx Microsoft Security Bulletin MS07-017 - Vulnerabilities in GDI Could Allow Remote Code Execution (925902)]&lt;br /&gt;
&lt;br /&gt;
Even though the same Security Update applies to the following systems, these are reported not to be affected:&lt;br /&gt;
&lt;br /&gt;
 Windows Vista Service Pack 1&lt;br /&gt;
 Windows 2003 Server Standard Service Pack 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;It is possible to get &#039;git clone&#039; working again on the affected systems by removing the Security Update (KB925902) but this is obviously not recommended for security reasons.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
If you get following error messages&lt;br /&gt;
&lt;br /&gt;
 fatal: pack has bad object at offset 98737692: inflate returned -3&lt;br /&gt;
 fatal: index-pack failed&lt;br /&gt;
 fetch-pack from &#039;git://git.videolan.org/vlc.git&#039; failed.&lt;br /&gt;
&lt;br /&gt;
then please try to use git from basic Windows command prompt (Start -&amp;gt; Run -&amp;gt; cmd), not from Cygwin shell. &lt;br /&gt;
&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
&lt;br /&gt;
You can do the same by using the snapshots in the [http://nightlies.videolan.org/ nightly builds] site.&lt;br /&gt;
&lt;br /&gt;
=Bootstrap=&lt;br /&gt;
&lt;br /&gt;
Open the &#039;&#039;&#039;configure.ac&#039;&#039;&#039; file, and modify the requirement for gettext 0.17 to 0.15 (so replace line &#039;&#039;&#039;AM_GNU_GETTEXT_VERSION(0.17)&#039;&#039;&#039; with line &#039;&#039;&#039;AM_GNU_GETTEXT_VERSION(0.15)&#039;&#039;&#039;), and then run bootstrap.&lt;br /&gt;
&lt;br /&gt;
 cd vlc&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
&lt;br /&gt;
= External libraries to the source code=&lt;br /&gt;
&lt;br /&gt;
VLC depends on other libraries (code) to provide some features like AC3 audio or MPEG-4 video encoding/decoding etc.&lt;br /&gt;
&lt;br /&gt;
Depending on your needs you will have to install and compile some or all of these external libraries. &lt;br /&gt;
&lt;br /&gt;
== Get the Win32 &amp;quot;contrib&amp;quot; package ==&lt;br /&gt;
&lt;br /&gt;
A package with most of these libraries already compiled so it&#039;s actually really easy to compile a full-featured version of vlc can be found here:&lt;br /&gt;
&lt;br /&gt;
http://download.videolan.org/pub/testing/win32/&lt;br /&gt;
&lt;br /&gt;
Download the latest version of a &amp;quot;contrib&amp;quot; package for win32:&lt;br /&gt;
&lt;br /&gt;
 contrib-20060730-win32-bin-gcc-3.4.5-only.tar.bz2 (example)&lt;br /&gt;
&lt;br /&gt;
Those days, you should use&lt;br /&gt;
 http://people.videolan.org/~jb/Contribs/contrib-20080702-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s a good idea to check the INSTALL.Win32 file in the VLC source directory for the appropriate contrib download file.&lt;br /&gt;
&lt;br /&gt;
Save it into your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\VLC\Downloads\&lt;br /&gt;
&lt;br /&gt;
==Installing the Win32 &amp;quot;contrib&amp;quot; package in Cygwin==&lt;br /&gt;
&lt;br /&gt;
Start Cygwin and enter the following command in your shell:&lt;br /&gt;
&lt;br /&gt;
 cd /cygdrive/c/VLC/Downloads&lt;br /&gt;
 tar xf contrib-20080702-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /&lt;br /&gt;
&lt;br /&gt;
Replace with your version of the &amp;quot;contrib&amp;quot; file and DON&#039;T FORGET THE / (slash)&lt;br /&gt;
at the end.&lt;br /&gt;
&lt;br /&gt;
This will extract the contents of the file into usr/win32 folder within your Cygwin environment.&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure to DELETE your old version (/usr/win32 folder) instead of extracting a new version on top of it.&lt;br /&gt;
&lt;br /&gt;
==Keeping the Win32 &amp;quot;contrib&amp;quot; package up-to-date==&lt;br /&gt;
&lt;br /&gt;
For maintenance purposes periodically check:&lt;br /&gt;
&lt;br /&gt;
http://download.videolan.org/pub/testing/win32/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
&lt;br /&gt;
In order to make our lives just a bit easier the following section describes what commandline options should be used for compiling and those commands will then be put into a &amp;quot;script&amp;quot; that can be executed (rather than having to copy and paste all the time).&lt;br /&gt;
&lt;br /&gt;
==Configure script for compiling VLC==&lt;br /&gt;
&lt;br /&gt;
Create a new text document with the following lines:&lt;br /&gt;
&lt;br /&gt;
  PATH=/usr/win32/bin:$PATH \&lt;br /&gt;
  PKG_CONFIG_PATH=/usr/win32/lib/pkgconfig \&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I/usr/win32/include -I/usr/win32/include/ebml&amp;quot; \&lt;br /&gt;
  LDFLAGS=-L/usr/win32/lib \&lt;br /&gt;
  CC=&amp;quot;gcc -mno-cygwin&amp;quot; CXX=&amp;quot;g++ -mno-cygwin&amp;quot; \&lt;br /&gt;
  ./configure \&lt;br /&gt;
      --host=i686-pc-mingw32 \&lt;br /&gt;
      --disable-gtk \&lt;br /&gt;
      --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \&lt;br /&gt;
      --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \&lt;br /&gt;
      --with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora \&lt;br /&gt;
      --with-wx-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-freetype-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-fribidi-config-path=/usr/win32/bin \&lt;br /&gt;
      --enable-live555 --with-live555-tree=/usr/win32/live.com \&lt;br /&gt;
      --enable-caca --with-caca-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-xml2-config-path=/usr/win32/bin \&lt;br /&gt;
      --with-dvdnav-config-path=/usr/win32/bin \&lt;br /&gt;
      --disable-cddax --disable-vcdx --enable-goom \&lt;br /&gt;
      --enable-twolame --enable-dvdread \&lt;br /&gt;
      --enable-debug  --enable-dca \&lt;br /&gt;
      --disable-mkv --disable-taglib&lt;br /&gt;
&lt;br /&gt;
NOTE: The following options are added for debug purposes and makes the final package a bit larger but the advantage is it&#039;s easier to debug in case of crash reports:&lt;br /&gt;
&lt;br /&gt;
 --disable-optimizations&lt;br /&gt;
 --enable-debug&lt;br /&gt;
&lt;br /&gt;
If you want to report a crash bug to the VLC team, it is necessary that you provide a stack backtrace. Unfortunately, Windows automatic crash reporter cannot generate such a backtrace as debug symbols used by GCC compiler aren&#039;t understood by Windows, therefore we suggest that you install Dr. MinGW (http://jrfonseca.dyndns.org/projects/gnu-win32/software/drmingw/) which will extend Windows Just-In-Time Debugger and provide the necessary debug information.&lt;br /&gt;
&lt;br /&gt;
NOTE: The following options is needed for Qt4 support:&lt;br /&gt;
&lt;br /&gt;
 --enable-qt4&lt;br /&gt;
&lt;br /&gt;
As of version 0.9.0 VLC will include the Qt interface. More information can be found about QT here: http://www.trolltech.com&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Win32 contrib package&amp;quot; at present includes the linux and Windows equivalents of uic, moc and roc executables which are required for building this interface.&lt;br /&gt;
&lt;br /&gt;
The linuxs executables have to be &#039;&#039;&#039;deleted&#039;&#039;&#039; from the contrib folder:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\usr\win32\bin\moc (example)&lt;br /&gt;
 C:\cygwin\usr\win32\bin\rcc (example)&lt;br /&gt;
 C:\cygwin\usr\win32\bin\uic (example)&lt;br /&gt;
&lt;br /&gt;
Save as filename in your &amp;quot;scripts&amp;quot; folder at your download/install location:&lt;br /&gt;
&lt;br /&gt;
 configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
NOTE: Save using &amp;quot;All files&amp;quot; and not &amp;quot;Text files&amp;quot; otherwise Windows might append the extension .txt&lt;br /&gt;
&lt;br /&gt;
Copy the file into your home directory:&lt;br /&gt;
 &lt;br /&gt;
 C:\cygwin\home\Administrator&lt;br /&gt;
&lt;br /&gt;
Start Cygwin and enter the following command in your shell: &lt;br /&gt;
&lt;br /&gt;
 dos2unix configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
After your configure-vlc.sh is completed, copy it to your vlc directory and run it:&lt;br /&gt;
&lt;br /&gt;
 ./configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
If it complains about permissions, use chmod and try again:&lt;br /&gt;
&lt;br /&gt;
 chmod 777 configure-vlc.sh&lt;br /&gt;
&lt;br /&gt;
NOTE. (If you plan to use JVLC) To make vlc-control.dll accessible by Java on &#039;&#039;Windows&#039;&#039; cofigure-vlc.sh should be modified to include &amp;quot;-Wl,--add-stdcal-alias&amp;quot;. Example:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 CC=&amp;quot;gcc -mno-cygwin -Wl,--add-stdcall-alias&amp;quot; CXX=&amp;quot;g++ -mno-cygwin -Wl,--add-stdcall-alias&amp;quot; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===POSIX emulation layer===&lt;br /&gt;
&lt;br /&gt;
VLC can be built with or without the so called POSIX emulation layer. Without is the default and is usually better (and with hasn&#039;t been tested for quite some time). If you do want to use the emulation layer, then just leave out the line with the following options:&lt;br /&gt;
&lt;br /&gt;
 CC=&amp;quot;gcc -mno-cygwin&amp;quot; CXX=&amp;quot;g++ -mno-cygwin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Compiling source code=&lt;br /&gt;
&lt;br /&gt;
It&#039;s time to start Cygwin again...&lt;br /&gt;
&lt;br /&gt;
==Compiling VLC==&lt;br /&gt;
&lt;br /&gt;
Enter the following commands in your Cygwin shell:&lt;br /&gt;
&lt;br /&gt;
 cd vlc&lt;br /&gt;
&lt;br /&gt;
Build it! (remember to run configure-vlc.sh before first build)&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Cross your fingers and wait... because it might take few hours before compilation is done.&lt;br /&gt;
If you have multicore CPU or multi CPU box, you can use -j2 switch (or maybe -j3 or -j4 etc.) to speed up make process&lt;br /&gt;
&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
==Creating self contained packages==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can either run VLC directly from the source tree or you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32&lt;br /&gt;
&lt;br /&gt;
(Same as above but will also create an auto-installer package. You will need to have NSIS installed in its default location for this to work).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If you have permissions problems running vlc.exe after packaging, rename or delete vlc.exe.manifest&lt;br /&gt;
&lt;br /&gt;
=Advanced usage=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Updating Cygwin package versions==&lt;br /&gt;
&lt;br /&gt;
If you need to update or install additional packages you can just run the Cygwin setup.exe from your download location:&lt;br /&gt;
&lt;br /&gt;
 C:\Downloads\cygwin\setup.exe          (example)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GDB (Gnu Debugger)==&lt;br /&gt;
&lt;br /&gt;
This section requires that you installed the gdb (Gnu Debugger) in Cygwin.&lt;br /&gt;
&lt;br /&gt;
This is a typical example of creating a crashlog:&lt;br /&gt;
&lt;br /&gt;
 cd vlc-trunk&lt;br /&gt;
&lt;br /&gt;
 gdb --args vlc.exe --fast-mutex --reset-config --reset-plugins-cache&lt;br /&gt;
&lt;br /&gt;
NOTE: vlc-0.9.0 uses libtool for building sources, if you want to debug from the source tree, you should type the following command instead:&lt;br /&gt;
&lt;br /&gt;
 libtool --mode=execute gdb --args vlc --reset-config --reset-plugins-cache&lt;br /&gt;
&lt;br /&gt;
In the debugger mode run the program and make sure you reset the preferences!&lt;br /&gt;
&lt;br /&gt;
 (gdb) run &lt;br /&gt;
&lt;br /&gt;
NOTE: the (gdb) is just a prompt which means you are in the debugger mode, please note that &#039;&#039;--fast-mutex&#039;&#039; option is no longer supported in vlc-0.9.0&lt;br /&gt;
&lt;br /&gt;
It will now take a lot longer than usual for VLC to start :)&lt;br /&gt;
&lt;br /&gt;
Now operate VLC as you would normally do. As soon as a crash issue occurs&lt;br /&gt;
you&#039;ll notice a line like this:&lt;br /&gt;
&lt;br /&gt;
 Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
 0x0041394c in playlist_ItemGetById (p_playlist=0x19ec4f8, i_id=29)&lt;br /&gt;
     at src/playlist/item-ext.c:459&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
 459             i = i_bottom + ( i_top - i_bottom ) / 2;&lt;br /&gt;
&lt;br /&gt;
Now you can do a &amp;quot;backtrace&amp;quot; by using the bt command:&lt;br /&gt;
&lt;br /&gt;
 (gdb) bt&lt;br /&gt;
&lt;br /&gt;
And output similar to this will be created:&lt;br /&gt;
&lt;br /&gt;
 #0  0x0041394c in playlist_ItemGetById (p_playlist=0x19ec4f8, i_id=29) &lt;br /&gt;
     at src/playlist/item-ext.c:459&lt;br /&gt;
 #1  0x0b26bbf7 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29fef8}) at playlist.cpp:695&lt;br /&gt;
 #2  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29e8b0}) at playlist.cpp:689&lt;br /&gt;
 #3  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x29a818}) at playlist.cpp:689&lt;br /&gt;
 #4  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0x299718}) at playlist.cpp:689&lt;br /&gt;
 #5  0x0b26bc83 in wxvlc::Playlist::CountItems (this=0x1822e288, root=&lt;br /&gt;
       {m_pItem = 0xffff0000}) at playlist.cpp:689&lt;br /&gt;
 #6  0x0b26bf49 in wxvlc::Playlist::AppendItem (this=0x1822e288,&lt;br /&gt;
     event=@0x1827afd0) at playlist.cpp:564&lt;br /&gt;
 #7  0x0b2757fc in wxvlc::Playlist::OnPlaylistEvent (this=0x1822e288,&lt;br /&gt;
     event=@0x1827afd0) at playlist.cpp:1438&lt;br /&gt;
 #8  0x0b3771b8 in wxEvtHandler::ProcessEventIfMatches ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #9  0x0b376a1c in wxEventHashTable::HandleEvent ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #10 0x0b37730d in wxEvtHandler::ProcessEvent ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #11 0x0b37711b in wxEvtHandler::ProcessPendingEvents ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
 #12 0x0b376017 in wxAppConsole::ProcessPendingEvents ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/event.h:2183&lt;br /&gt;
 #13 0x0b3ec75a in wxIdleWakeUpModule::MsgHookProc ()&lt;br /&gt;
     at /usr/win32/include/wx-2.6/wx/bmpbuttn.h:81&lt;br /&gt;
 #14 0x773aca2d in USER32!GetScrollRange ()&lt;br /&gt;
    from /cygdrive/c/WINDOWS/system32/user32.dll&lt;br /&gt;
 #15 0x00000000 in ?? () from&lt;br /&gt;
 (gdb)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To backtrace all the running threads use:&lt;br /&gt;
&lt;br /&gt;
 (gdb) thread apply all bt&lt;br /&gt;
&lt;br /&gt;
These are the log outputs that are more usefull to developers than just mentioning &amp;quot;it crashes&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
NOTE: In GDB mode there are sometimes situations where GDB initially &amp;quot;crashes&amp;quot; on certain network activity (opening network shares, network traffic) which in normal operation does not occur. Just select c for continue until &amp;quot;normal&amp;quot; operation continues.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
===vlc.exe: Permission denied===&lt;br /&gt;
&lt;br /&gt;
A make finished successfully and produced vlc.exe, but running the executable returns the following:&lt;br /&gt;
&lt;br /&gt;
 bash: ./vlc.exe: Permission denied&lt;br /&gt;
&lt;br /&gt;
The permissions on both vlc.exe &amp;amp; vlc.exe.manifest must be set to executable. &lt;br /&gt;
&lt;br /&gt;
FIX: Type the following:&lt;br /&gt;
 &lt;br /&gt;
 chmod 755 vlc.exe vlc.exe.manifest&lt;br /&gt;
&lt;br /&gt;
===error: parse error before &#039;(&#039; token===&lt;br /&gt;
&lt;br /&gt;
A make (compile) of FFmpeg results in the following error:&lt;br /&gt;
&lt;br /&gt;
 /usr/include/sys/unistd.h:203: error: parse error before &#039;(&#039; token&lt;br /&gt;
 make[1]: *** [ffm.o] Error 1&lt;br /&gt;
&lt;br /&gt;
It&#039;s very likely you are usix the POSIX emulater which you shouldn&#039;t...&lt;br /&gt;
&lt;br /&gt;
FIX: compile with the option &lt;br /&gt;
&lt;br /&gt;
 -mno-cygwin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token===&lt;br /&gt;
&lt;br /&gt;
 In file included from /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../include/w32&lt;br /&gt;
 api/windows.h:52,&lt;br /&gt;
                  from ../../../include/vlc_common.h:459,&lt;br /&gt;
                  from ../../../include/vlc/vlc.h:153,&lt;br /&gt;
                  from dshow.cpp:31:&lt;br /&gt;
 /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../include/w32api/wingdi.h:3:1: warn&lt;br /&gt;
 ing: this is the location of the previous definition&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:35,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/ddraw.h:14: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:35,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/ddraw.h:5552: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:45,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/strmif.h:2: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dsound.h:13,&lt;br /&gt;
                  from /usr/win32/include/amaudio.h:18,&lt;br /&gt;
                  from /usr/win32/include/dshow.h:47,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/d3dtypes.h:22: warning: ignoring #pragma warning&lt;br /&gt;
 /usr/win32/include/d3dtypes.h:1813: warning: ignoring #pragma warning&lt;br /&gt;
 In file included from /usr/win32/include/dshow.h:48,&lt;br /&gt;
                  from common.h:45,&lt;br /&gt;
                  from dshow.cpp:35:&lt;br /&gt;
 /usr/win32/include/control.h:2: warning: ignoring #pragma warning&lt;br /&gt;
 dshow.cpp: In function `int CommonOpen(vlc_object_t*, access_sys_t*, vlc_bool_t)&lt;br /&gt;
 &#039;:&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;&amp;lt;&#039; token&lt;br /&gt;
 dshow.cpp:456: error: expected primary-expression before &#039;.&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;==&#039; token&lt;br /&gt;
 dshow.cpp:470: error: expected primary-expression before &#039;=&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;&amp;gt;&#039; token&lt;br /&gt;
 dshow.cpp:484: error: expected primary-expression before &#039;.&#039; token&lt;br /&gt;
 dshow.cpp:485: error: expected `;&#039; before &amp;quot;IAMCrossbar&amp;quot;&lt;br /&gt;
 dshow.cpp:491: error: `pXbar&#039; undeclared (first use this function)&lt;br /&gt;
 dshow.cpp:491: error: (Each undeclared identifier is reported only once for each&lt;br /&gt;
 function it appears in.)&lt;br /&gt;
 make[6]: *** [libdshow_plugin_a-dshow.o] Error 1&lt;br /&gt;
 make[6]: Leaving directory `/home/Administrator/vlc-trunk/modules/access/dshow&#039;&lt;br /&gt;
 make[5]: *** [all-modules] Error 1&lt;br /&gt;
 make[5]: Leaving directory `/home/Administrator/vlc-trunk/modules/access/dshow&#039;&lt;br /&gt;
 make[4]: *** [all-recursive] Error 1&lt;br /&gt;
 make[4]: Leaving directory `/home/Administrator/vlc-trunk/modules/access&#039;&lt;br /&gt;
 make[3]: *** [all] Error 2&lt;br /&gt;
&lt;br /&gt;
Basically in case of conflict svn adds &amp;quot;&amp;lt;&amp;lt;&amp;lt; mine&amp;quot; and &amp;quot;=======&amp;quot; and &amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; r1242&amp;quot; which makes gcc complain.&lt;br /&gt;
&lt;br /&gt;
FIX: revert the offending file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Objective C source seen but `OBJC&#039; is undefined===&lt;br /&gt;
&lt;br /&gt;
The configure process stops halfway.&lt;br /&gt;
&lt;br /&gt;
 + aclocal-1.9 -I m4&lt;br /&gt;
 + autoconf&lt;br /&gt;
 + autoheader&lt;br /&gt;
 + automake-1.9 --add-missing --copy -Wall&lt;br /&gt;
 configure.ac: installing `autotools/install-sh&#039;&lt;br /&gt;
 configure.ac: installing `autotools/missing&#039;&lt;br /&gt;
 activex/Makefile.am:143: shell $(VLC_CONFIG: non-POSIX variable name&lt;br /&gt;
 activex/Makefile.am:143: (probably a GNU make extension)&lt;br /&gt;
 activex/Makefile.am: installing `autotools/compile&#039;&lt;br /&gt;
 activex/Makefile.am: installing `autotools/depcomp&#039;&lt;br /&gt;
 modules/gui/macosx/Makefile.am: Objective C source seen but `OBJC&#039; is undefined&lt;br /&gt;
 modules/misc/testsuite/Makefile.am: Objective C source seen but `OBJC&#039; is undefi&lt;br /&gt;
 ned&lt;br /&gt;
 src/Makefile.am: Objective C source seen but `OBJC&#039; is undefined&lt;br /&gt;
 Makefile.am:282: user target `vlc$(EXEEXT)&#039; defined here...&lt;br /&gt;
 /usr/share/automake-1.9/am/program.am: ... overrides Automake target `vlc$(EXEEX&lt;br /&gt;
 T)&#039; defined here&lt;br /&gt;
 Makefile.am:230:   while processing program `vlc&#039;&lt;br /&gt;
 make: *** No targets specified and no makefile found.  Stop.&lt;br /&gt;
 &lt;br /&gt;
This problem is related to a warning earlier on and only occured in a few revisions where a built-in workaround wasn&#039;t working properly:&lt;br /&gt;
&lt;br /&gt;
 + echo &#039;Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP.&#039;&lt;br /&gt;
 Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP.&lt;br /&gt;
&lt;br /&gt;
FIX: update autoconf to 2.60 or newer. If Cygwin doesn&#039;t provide this version yet then build it yourself from extras/contrib.&lt;br /&gt;
&lt;br /&gt;
Enter the following commands in your Cygwin shell:&lt;br /&gt;
&lt;br /&gt;
 cd vlc-trunk/extras/contrib&lt;br /&gt;
&lt;br /&gt;
 ./bootstrap&lt;br /&gt;
&lt;br /&gt;
 cd src&lt;br /&gt;
&lt;br /&gt;
 make .autoconf&lt;br /&gt;
&lt;br /&gt;
There should now be compiled autoconf version (probably 2.60 or newer) in extras/contrib that the bootstrap process will use.&lt;br /&gt;
&lt;br /&gt;
Now start the whole &amp;quot;Compile VLC&amp;quot; process from the start again.&lt;br /&gt;
&lt;br /&gt;
===Error: cannot create temporary file for diversion: Permission denied===&lt;br /&gt;
&lt;br /&gt;
If the above error appears, it might mean you don&#039;t have the TMPDIR defined in cygwin. You will need to define it and have its value point to your temporary directory. You can use &#039;&#039;&#039;export TMPDIR=&amp;quot;/cygdrive/c/temp&amp;quot;&#039;&#039;&#039; or any directory for it (/cygdrive/c/temp is same as C:\temp). If this doesn&#039;t help, make sure you run cygwin with admin rights (With Windows Vista, right click cygwin shortcut and select &amp;quot;Run as administrator&amp;quot;). Avira AntiVir might also cause issues to m4, so disabling it while ./bootstrap might help.&lt;br /&gt;
&lt;br /&gt;
==Compiling faster==&lt;br /&gt;
Building VLC on Cygwin is really slow, but you can spend less time recompiling by using [http://ccache.samba.org/ ccache]. This software saves  the files compiled with their compilation command, and output them if they were not changed and if the compilation command is the same as last build. It is really useful for frequent make clean &amp;amp;&amp;amp; make. To use it, change the CC line in your configure script to:&lt;br /&gt;
&lt;br /&gt;
  CC=&amp;quot;ccache gcc -mno-cygwin&amp;quot; CXX=&amp;quot;ccache g++ -mno-cygwin&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
The first build after reconfiguring will be as slow as ever, but the following builds will be faster.&lt;br /&gt;
&lt;br /&gt;
=Version=&lt;br /&gt;
&lt;br /&gt;
20050627 Initial version&lt;br /&gt;
&lt;br /&gt;
20050628 Updated some more exceptions&lt;br /&gt;
&lt;br /&gt;
20050628 Some info added about FFmpeg compiling with AMR&lt;br /&gt;
&lt;br /&gt;
20050629 Finalized FFmpeg compiling&lt;br /&gt;
&lt;br /&gt;
20050630 Cross-compiling&lt;br /&gt;
&lt;br /&gt;
20050724 Some extra compile explanations&lt;br /&gt;
&lt;br /&gt;
20050726 Removed cross-compiling (was for linux -&amp;gt; win32) Patching source code with .diff files&lt;br /&gt;
&lt;br /&gt;
20050823 Added zlib error&lt;br /&gt;
&lt;br /&gt;
20050923 --enable-sdl --with-sdl-config-path=/usr/win32/bin added to configure. Added debug section&lt;br /&gt;
&lt;br /&gt;
20051102 Changed FFmpeg lib names&lt;br /&gt;
&lt;br /&gt;
20051128 Detailed Cygwin upgrade/downgrade for gcc 3.3. Renamed some update scripts. Added FFmpeg CVS update. --disable-gnomevfs added to configure (only used on linux)&lt;br /&gt;
&lt;br /&gt;
20060121 PKG_CONFIG_PATH=/usr/win32/lib/pkgconfig added to configure&lt;br /&gt;
&lt;br /&gt;
20060128 Added curl and libtool to Cygwin for those that want to be able to build extras/contrib themselves&lt;br /&gt;
&lt;br /&gt;
20060217 Added make install-libs install-headers to FFmpeg compile&lt;br /&gt;
&lt;br /&gt;
20060222 Remark about missing &amp;quot;gettext&amp;quot; libs for Cygwin during install&lt;br /&gt;
&lt;br /&gt;
20060225 ./bootstrap: you need libtool&lt;br /&gt;
&lt;br /&gt;
20060618 Updated GCC to 3.4 version and added FFmpeg SVN and DTS support&lt;br /&gt;
&lt;br /&gt;
20060805 Added note about using older binutils and gdb for Cygwin!&lt;br /&gt;
&lt;br /&gt;
20060915 Added note about updating autoconf from extras/contrib for an OBJC problem during configure&lt;br /&gt;
&lt;br /&gt;
20061108 Added note this document is no longer usable since Cygwin has been unusable probably related to some bash/dos2unix change&lt;br /&gt;
&lt;br /&gt;
20070612 Added note about --enable-dca&lt;br /&gt;
&lt;br /&gt;
20080228 New version by [[User:J-b|jb]]&lt;br /&gt;
&lt;br /&gt;
20080307 Added --host=i686-pc-mingw32 option to the configure script&lt;br /&gt;
&lt;br /&gt;
20080311 Simplification&lt;br /&gt;
&lt;br /&gt;
20080323 Added some tips for Vista &lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
[[Category:Coding]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=12339</id>
		<title>WinCECompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=WinCECompile&amp;diff=12339"/>
		<updated>2008-09-02T08:37:14Z</updated>

		<summary type="html">&lt;p&gt;Geal: New page: =Introduction=  This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.  = Building VLC =  ==Pre...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a guide for cross-compiling VLC for Windows CE on Linux with a step-by-step instruction to download, install, configure and build your VLC.&lt;br /&gt;
&lt;br /&gt;
= Building VLC =&lt;br /&gt;
&lt;br /&gt;
==Prepare your environment==&lt;br /&gt;
VLC uses automake, autoconf and friends for compilation. Make sure they are up to date and usable for your system.&lt;br /&gt;
&lt;br /&gt;
===Get mingw32ce===&lt;br /&gt;
To compile VLC, we use CeGCC, a cross-development environment for Windows CE. Get it on [http://downloads.sourceforge.net/cegcc/mandriva-cegcc-mingw32ce-0.51.0.tar.gz?modtime=1196987404&amp;amp;big_mirror=0 Sourceforge]. There are two environments: CeGCC and Mingw32ce. We use Mingw32ce.&lt;br /&gt;
&lt;br /&gt;
Go the the directory where you dowloaded CeGCC, and untar it:&lt;br /&gt;
 % tar xzf mandriva-cegcc-mingw32ce-0.51.0.tar.gz -C /&lt;br /&gt;
&lt;br /&gt;
You should now see the folder /opt/mingw32ce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the source==&lt;br /&gt;
Start by [[GetTheSource|getting the source]], using FTP for releases, or using [[Git]] for development.&#039;&#039;&#039;The patches for the WinCE port have not yet been added to the main tree. Right now, you should get the tree on git.videolan.org/vlc-geal.git and use the wince2 branch.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If your are using the release, download source code and extract the archive and go into your VLC directory.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
&lt;br /&gt;
If you are using the [[Git]] version, start by bootstrapping your VLC.&lt;br /&gt;
 % cd /path/to/your/vlc/folder/&lt;br /&gt;
 % ./bootstrap&lt;br /&gt;
&lt;br /&gt;
==Get the contribs==&lt;br /&gt;
There is a package which contains some external libraries, and some hacks with header files. Get [http://eleves.ec-lille.fr/~couprieg/divers/wince.tar.gz it] and uncompress it in /usr/wince.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
You need to tweak your configure line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; is used to check whether your system is able to compile VLC.&lt;br /&gt;
Also you choose the functionalities of your build.&lt;br /&gt;
 % ./configure --help&lt;br /&gt;
will show you the various options&lt;br /&gt;
&lt;br /&gt;
Create a new file named conf-vlc.sh and add in it:&lt;br /&gt;
&lt;br /&gt;
 PATH=/opt/mingw32ce/bin:/opt/mingw32ce/arm-wince-mingw32ce/bin:$PATH \&lt;br /&gt;
 CC=&amp;quot;/opt/mingw32ce/bin/arm-wince-mingw32ce-gcc&amp;quot; \&lt;br /&gt;
 CXX=&amp;quot;/opt/mingw32ce/bin/arm-wince-mingw32ce-g++&amp;quot; \&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/wince/include -I/opt/mingw32ce/arm-wince-mingw32ce/include  -mwin32 -D __COREDLL__ -D _WIN32_WCE=0x0500&amp;quot; \&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/opt/mingw32ce/arm-wince-mingw32ce/lib -L/usr/wince/lib -lws2&amp;quot; \&lt;br /&gt;
 &lt;br /&gt;
 ./configure --host=arm-wince-mingw32ce \&lt;br /&gt;
             --disable-sdl --disable-gtk \&lt;br /&gt;
             --disable-dvdnav --disable-dvdread --disable-avformat \&lt;br /&gt;
             --disable-postproc --disable-hal --disable-nls    \&lt;br /&gt;
             --enable-sout --enable-vlm --disable-wxwindows \&lt;br /&gt;
             --disable-a52 --enable-libmpeg2 --disable-freetype \&lt;br /&gt;
             --disable-libgcrypt --disable-fribidi --disable-mad \&lt;br /&gt;
             --disable-optimize-memory --disable-audioscrobbler \&lt;br /&gt;
             --disable-tremor --disable-faad --enable-ffmpeg --enable-avcodec \&lt;br /&gt;
             --enable-vlc --disable-activex --disable-testsuite --disable-skins2 \&lt;br /&gt;
             --disable-qt4 --disable-notify --disable-httpd --disable-dbus-control \&lt;br /&gt;
             --disable-growl --disable-telepathy --disable-lua --disable-vlm \&lt;br /&gt;
             --disable-gnutls --disable-bonjour --disable-x11 --disable-glx \&lt;br /&gt;
             --disable-xvideo --disable-remoteosd --disable-schroedinger \&lt;br /&gt;
             --disable-dshow --enable-wingdi --disable-real --disable-realrtsp \&lt;br /&gt;
             --disable-optimizations --disable-optimize-memory --enable-debug \&lt;br /&gt;
             --enable-wince --enable-waveout --disable-directx --disable-x264 \&lt;br /&gt;
             --disable-live555 --disable-pulse --disable-swscale&lt;br /&gt;
&lt;br /&gt;
Save it and make it executable:&lt;br /&gt;
 % chmod u+x conf-vlc.sh&lt;br /&gt;
&lt;br /&gt;
== Compiling source code ==&lt;br /&gt;
Now run your configuration script and build VLC:&lt;br /&gt;
 % ./conf-vlc.sh&lt;br /&gt;
 % make&lt;br /&gt;
&lt;br /&gt;
== Creating self contained packages ==&lt;br /&gt;
&lt;br /&gt;
Once the compilation is done, you can build self-contained VLC packages with the following &amp;quot;make&amp;quot; commands:&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base&lt;br /&gt;
&lt;br /&gt;
(This will create a subdirectory named vlc-x.x.x with all the binaries &amp;quot;stripped&amp;quot; without any debugging symbols).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-zip&lt;br /&gt;
&lt;br /&gt;
(Same as above but will package the directory in a zip file).&lt;br /&gt;
&lt;br /&gt;
 make package-win32-base-debug&lt;br /&gt;
&lt;br /&gt;
(Creates the same subdirectory, but with debug symbols).&lt;br /&gt;
&lt;br /&gt;
There is not (yet) an option to build a .cab file.&lt;br /&gt;
&lt;br /&gt;
= Using and Debugging VLC =&lt;br /&gt;
&lt;br /&gt;
== Interacting with your device ==&lt;br /&gt;
&lt;br /&gt;
Use [http://www.synce.org SynCE] to synchronize your device with Linux. Or find an Windows machine and download your fresh new VLC build.&lt;br /&gt;
&lt;br /&gt;
== Running VLC ==&lt;br /&gt;
&lt;br /&gt;
Upload the VLC directory on your Windows CE device, and add in its root mingwm10.dll. This the mingw runtime for Windows CE, and VLC won&#039;t work without it. You can find it in /opt/mingw32ce/arm-wince-mingw32ce/bin.&lt;br /&gt;
&lt;br /&gt;
== Debugging VLC ==&lt;br /&gt;
&lt;br /&gt;
CeGCC provides a stub for GDB to permit remote debugging on Windows CE. To use it, go in the vlc folder:&lt;br /&gt;
 % cd vlc-1.0.0&lt;br /&gt;
 % arm-wince-mingw32ce-gdb vlc.exe&lt;br /&gt;
&lt;br /&gt;
Then, follow the [http://cegcc.sourceforge.net/docs/debugging.html demo of a debugging session] for Windows CE.&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
&lt;br /&gt;
Well... I don&#039;t remember right now all the weird errors I encountered, but if you find one, I may have seen it before, so contact me, I&#039;ll help you and add it here. --[[User:Geal|Geal]] 10:37, 2 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Talk:SoC_2008/WinCE_Port&amp;diff=12301</id>
		<title>Talk:SoC 2008/WinCE Port</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Talk:SoC_2008/WinCE_Port&amp;diff=12301"/>
		<updated>2008-08-26T08:29:00Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Progress? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ll be watching this as I&#039;ve always used the WinCE port for my Dell Axim x3 Windows Mobile 2003 device. Good luck ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I too will be keeping an eye on this project. I can&#039;t get the old port to run at all on my WM2003SE iPaq - it just does nothing. It&#039;s a shame really. I absolutely &#039;&#039;need&#039;&#039;  a video player that does OGG Theora! [[User:KevinLange|KevinLange]] 17:05, 31 May 2008 (CEST) (update: I got the even more unofficial port to open, but it doesn&#039;t play videos and is just plain &amp;quot;not good&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
Thank you, I&#039;ll work hard to get a working version soon :) --[[User:Geal|Geal]] 13:56, 2 June 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Progress? ==&lt;br /&gt;
&lt;br /&gt;
Midterm evaluations have come and gone. Any progress to report?&lt;br /&gt;
[[User:KevinLange|KevinLange]] 21:59, 16 July 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Now the LibVLC compiles without any problem, and I&#039;m adding plugins. I could play some music on my phone, it&#039;s beginning to work :)&lt;br /&gt;
For now, I work on the interface, but I&#039;m not really changing the look and feel. That will be for the end of the summer. I&#039;ll soon add the video output, and then, I may need some intensive testing :) --[[User:Geal|Geal]] 10:54, 23 July 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Anything new? It&#039;s almost final evaluation time. [[User:KevinLange|KevinLange]] 21:16, 20 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I have timing issues: it doesn&#039;t play more than a few seconds. There are recents commits to the main tree that may fix this bug, but I didn&#039;t update my tree yet. You can see what external libs were ported on [[Contrib_Status]]. Many others will come :)&lt;br /&gt;
VLC on WinCE won&#039;t be released this week, and I don&#039;t think this will be for next release. But I&#039;ll make test binaries when this timing bug will be fixed, and then, patches and bug reports will be welcomed :) I&#039;m sorry I didn&#039;t finish it in time... I&#039;ll go on contributing to VLC, so I won&#039;t drop my project right now! --[[User:Geal|Geal]] 10:29, 26 August 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Contrib_Status&amp;diff=12237</id>
		<title>Contrib Status</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Contrib_Status&amp;diff=12237"/>
		<updated>2008-08-06T12:35:00Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists the libraries needed to have a fully featured {{VLC}}. &amp;lt;br /&amp;gt;&lt;br /&gt;
The additional information in the table refers to the VLC contrib build system (located in extras/contrib). These versions are against the trunk version.&lt;br /&gt;
&lt;br /&gt;
For information on how to compile {{VLC}} on your platform see the [[Developers_Corner|Build VLC media player]] box on the Developer Corner&#039;s page. &lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !!  Where ? !! Comment &lt;br /&gt;
|-&lt;br /&gt;
! libvorbis &lt;br /&gt;
|| 1.2.0 ||  1.2.0 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.xiph.org/downloads/ Xiph.org] || &lt;br /&gt;
|-&lt;br /&gt;
! libogg&lt;br /&gt;
|| 1.1.3 || 1.1.3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || [http://www.xiph.org/downloads/ Xiph.org]|| &lt;br /&gt;
|-&lt;br /&gt;
! libtheora&lt;br /&gt;
|| 1.0beta3 || 1.0beta3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://www.xiph.org/downloads/ Xiph.org] || &lt;br /&gt;
|-&lt;br /&gt;
! speex&lt;br /&gt;
|| 1.2beta3 || 1.2beta3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.speex.org/downloads/ Speex.org]|| &lt;br /&gt;
|-&lt;br /&gt;
! flac&lt;br /&gt;
||  1.2.1 ||  1.2.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://flac.sourceforge.net/ flac.sf] || &lt;br /&gt;
|-&lt;br /&gt;
! x264 &lt;br /&gt;
|| svn || svn || {{up-to-date}} || {{Needed}} ||{{unNeeded}}  || {{Needed}} || {{Needed}} ||{{unNeeded}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! a52&lt;br /&gt;
||  0.7.4 ||  0.7.4 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||{{unNeeded}} || [http://liba52.sf.net liba52.sf] || Not likely to be updated&lt;br /&gt;
|- &lt;br /&gt;
! MPEG2DEC&lt;br /&gt;
|| 0.5.1 || 0.5.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||{{Needed}} || [http://libmpeg2.sf.net libmpeg2.sf]  || Not likely to be updated&lt;br /&gt;
|-&lt;br /&gt;
! faad2&lt;br /&gt;
|| 2.6.1 || 2.6.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.audiocoding.com/faad2.html audiocoding] ||&lt;br /&gt;
|-&lt;br /&gt;
! faac&lt;br /&gt;
|| 1.26 ||  1.26 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.audiocoding.com/faac.html audiocoding] ||&lt;br /&gt;
|-&lt;br /&gt;
! lame&lt;br /&gt;
|| 3.98 ||  3.98 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} ||  [http://sourceforge.net/project/showfiles.php?group_id=290&amp;amp;package_id=309 sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! FFmpeg&lt;br /&gt;
|| SVN ||  SVN ||  {{up-to-date}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{Needed}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! libmad&lt;br /&gt;
||  0.15.1b ||  0.15.1b || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://sourceforge.net/project/showfiles.php?group_id=12349&amp;amp;package_id=86999 SF] ||&lt;br /&gt;
|-&lt;br /&gt;
! dirac&lt;br /&gt;
|| 0.10.0 || 0.10.0 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://dirac.sourceforge.net dirac.sf] ||  &lt;br /&gt;
|-&lt;br /&gt;
! liboil&lt;br /&gt;
|| 0.3.15 || 0.3.15 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://liboil.freedesktop.org/download/ liboil.fdesktop] ||  &lt;br /&gt;
|-&lt;br /&gt;
! dirac&lt;br /&gt;
|| 1.0.5 || 1.0.5 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.diracvideo.org/download/schroedinger/ diracvideo.org] ||  &lt;br /&gt;
|-&lt;br /&gt;
! libdca&lt;br /&gt;
|| SVN ||  SVN || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! twolame&lt;br /&gt;
|| 0.3.12 || 0.3.12 || {{up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} ||  {{unNeeded}} || [http://www.twolame.org/ twolame.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! libmpcdec&lt;br /&gt;
|| 1.2.6 || 1.2.6 || {{Up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} || {{unNeeded}} || [http://www.musepack.net/index.php?pg=src musepack] || &lt;br /&gt;
|-&lt;br /&gt;
! Tremor&lt;br /&gt;
|| SVN || SVN || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || SVN || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Muxers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! libebml&lt;br /&gt;
|| 0.7.8 ||  0.7.8 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.matroska.org/downloads/linux.html matroska.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! libmatroska&lt;br /&gt;
||  0.8.1 || 0.8.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.matroska.org/downloads/linux.html matroska.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! libdvbpsi&lt;br /&gt;
|| 0.1.6 || 0.1.6 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.videolan.org/developers/libdvbpsi.html libdvbpsi] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Access ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where ? !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! shout&lt;br /&gt;
||  2.2.2 ||  2.2.2 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||  {{unNeeded}} || [http://downloads.us.xiph.org/releases/libshout/ xiph.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! libdvdcss&lt;br /&gt;
|| 1.2.9 ||  1.2.9 ||  {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://download.videolan.org/pub/libdvdcss/?C=N;O=D libdvdcss on v.o] ||&lt;br /&gt;
|-&lt;br /&gt;
! libdvdnav&lt;br /&gt;
|| CVS  || CVS || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://dvd.sourceforge.net/ dvd.sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! livedotcom&lt;br /&gt;
|| latest trunk || latest trunk || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.live555.com/mediaServer/#downloading live555]||&lt;br /&gt;
|-&lt;br /&gt;
! libcddb&lt;br /&gt;
|| 1.3.0 || 1.3.0 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||  {{unNeeded}} || [http://libcddb.sourceforge.net/download.html libcddb.sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! libcdio&lt;br /&gt;
|| 0.79 || 0.80 || {{Untested}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/libcdio/?M=D gnu.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! VCDimager&lt;br /&gt;
|| 0.7.23 || 0.7.23 || {{Up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://www.vcdimager.org/pub/vcdimager/vcdimager-0.7/ vcdimager] ||&lt;br /&gt;
|-&lt;br /&gt;
! libgpg-error&lt;br /&gt;
|| 1.6 || 1.6 || {{Up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://ftp.gnupg.org/gcrypt/libgpg-error/ gnupg.org] || &lt;br /&gt;
|- &lt;br /&gt;
! libgcrypt &lt;br /&gt;
|| 1.4.1 || 1.4.1 || {{Up-to-date}} ||  {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [ftp://ftp.gnupg.org/gcrypt/libgcrypt/ gnupg.org] || &lt;br /&gt;
|- &lt;br /&gt;
! gnuTLS&lt;br /&gt;
|| 2.2.5 || 2.4.1 || {{Untested}} ||  {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://www.gnu.org/software/gnutls/news.html gnu.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! Opendaap&lt;br /&gt;
|| 0.4.0 || 0.4.0 || {{Up-to-date}}||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} || {{unNeeded}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! libxml2&lt;br /&gt;
|| 2.6.32 || 2.6.32 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || [ftp://xmlsoft.org/libxml2/ xmlsoft ftp] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! libpng&lt;br /&gt;
|| 1.2.29 || 1.2.29 || {{up-to-date}} ||{{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.libpng.org/pub/png/libpng.html libpng.org]&lt;br /&gt;
|- &lt;br /&gt;
! libjpeg&lt;br /&gt;
|| 6b || 6b || {{up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} ||  {{unNeeded}} || [http://www.ijg.org/files/ ijg.org] || Rare updates&lt;br /&gt;
|-&lt;br /&gt;
! libtiff&lt;br /&gt;
|| 3.8.2 || 3.8.2 || {{up-to-date}} ||{{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [ftp://ftp.remotesensing.org/pub/libtiff/ Main libtiff ftp] || Rare updates&lt;br /&gt;
|-&lt;br /&gt;
! SDL&lt;br /&gt;
|| 1.2.13 || 1.2.13 || {{up-to-date}} || {{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [http://www.libsdl.org/download-1.2.php libdsl.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! SDL_image &lt;br /&gt;
|| 1.2.6 || 1.2.6 || {{up-to-date}} || {{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [http://www.libsdl.org/projects/SDL_image/ libdsl.org] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where ! || Comment&lt;br /&gt;
|-&lt;br /&gt;
! Autoconf &lt;br /&gt;
| 2.61 || 2.61 || {{up-to-date}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/autoconf/?M=D Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! automake&lt;br /&gt;
| 1.9.6 ||  1.10.1 || {{untested}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/automake/?M=D Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! Pkgconfig&lt;br /&gt;
| 0.20.0 ||  0.23 || {{untested}} ||{{unNeeded}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}} || [http://pkgconfig.freedesktop.org/wiki/ fd.org] || Don&#039;t update [http://trac.videolan.org/vlc/changeset/17486 Rev.17486]&lt;br /&gt;
|-&lt;br /&gt;
! Perl&lt;br /&gt;
| 5.8.8 ||  5.10.0 ||  {{untested}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || [http://www.perl.org Perl] ||&lt;br /&gt;
|-&lt;br /&gt;
! libtool &lt;br /&gt;
| 1.5.24 ||  1.5.26 || {{untested}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://www.gnu.org/software/libtool/ GNU-libtool] || Not tested yet and not usefull.&lt;br /&gt;
|- &lt;br /&gt;
! libiconv&lt;br /&gt;
| 1.9.2 ||  1.12 || {{untested}} || {{Needed}}  || {{Needed}} || {{unNeeded}}|| {{Needed}} || {{Needed}} || [http://www.gnu.org/software/libiconv/#downloading Gnu] || Not tested yet and not usefull.&lt;br /&gt;
|-&lt;br /&gt;
! gettext &lt;br /&gt;
|| 0.16.1 ||  0.17 || {{untested}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://ftp.gnu.org/gnu/gettext/ Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! freetype2&lt;br /&gt;
||  2.3.7 ||  2.3.7 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} ||  [http://freetype.org/index2.html freetype.org] || &lt;br /&gt;
|-&lt;br /&gt;
! fribidi &lt;br /&gt;
|| 0.19.1 || 0.19.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://fribidi.org/wiki/ fribidi.org] || &lt;br /&gt;
|-&lt;br /&gt;
! libunicows&lt;br /&gt;
|| 1.1.1 || 1.1.1 || {{up-to-date}} ||{{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || [http://libunicows.sourceforge.net/ libunicows] ||  &lt;br /&gt;
|-&lt;br /&gt;
! zlib&lt;br /&gt;
|| 1.2.3 || 1.2.3 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || [http://www.zlib.net/ zlib] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Comment&lt;br /&gt;
|-&lt;br /&gt;
!libid3tag&lt;br /&gt;
|| 0.15.1b ||  0.15.1b ||  {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
!taglib&lt;br /&gt;
|| 1.5 || 1.5 || {{up-to-date}} || {{Needed}}  || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||http://developer.kde.org/~wheeler/taglib.html&lt;br /&gt;
|-&lt;br /&gt;
! goom2k4&lt;br /&gt;
||  2k4-0 ||   2k4-0 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! libcaca&lt;br /&gt;
|| 0.9 || 0.9 || {{up-to-date}}|| {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} ||  0.99-beta2 is not a release version ?&lt;br /&gt;
|-&lt;br /&gt;
! libmodplug&lt;br /&gt;
|| 0.8.4 ||  0.8.4 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! glib&lt;br /&gt;
|| 1.2.10 || 1.2.10 || {{Up-to-date}}||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} ||  {{unNeeded}} ||v. gtk 1.2+&lt;br /&gt;
|-&lt;br /&gt;
! libidl &lt;br /&gt;
|| 0.6.8 || 0.8.6 ||  {{Up-to-date}} ||{{unNeeded}} ||{{unNeeded}}||{{Needed}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it. Mirror has changed. It is now on gnome site&lt;br /&gt;
|-&lt;br /&gt;
! glib-win32&lt;br /&gt;
|| 19990228 ~ 1.2.0 || 1.2.10 || {{Up-to-date}} || {{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! libidl-win32&lt;br /&gt;
|| 0.6.3 || 0.8.6 || {{Up-to-date}}  ||{{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it. Mirror has changed. It is now on gnome site&lt;br /&gt;
|-&lt;br /&gt;
! gecko&lt;br /&gt;
|| 1.7.5 || 1.8b1 || {{Up-to-date}}  ||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} ||  {{unNeeded}} ||&#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! gecko-win32&lt;br /&gt;
|| 1.8b1 || 1.8b1 || {{Up-to-date}} || {{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} ||&#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! wxWidgets&lt;br /&gt;
|| 2.6.3 || 2.6.3 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! Qt&lt;br /&gt;
|| 4.3 || 4.3 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || &lt;br /&gt;
|-&lt;br /&gt;
! portaudio&lt;br /&gt;
|| 19 || 19 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||  {{unNeeded}} ||Commented for Win32&lt;br /&gt;
|-&lt;br /&gt;
! Clinkcc&lt;br /&gt;
|| 171 || 171  || {{up-to-date}}|| {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || Commented for MacOSX&lt;br /&gt;
|-&lt;br /&gt;
! Upnp&lt;br /&gt;
|| 1.3.1 || 1.3.1 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || Commented&lt;br /&gt;
|-&lt;br /&gt;
! expat&lt;br /&gt;
|| 2.0.0 || 2.0.1  || {{untested}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||  {{unNeeded}} ||Commented for MacOSX&lt;br /&gt;
|-&lt;br /&gt;
! NASM&lt;br /&gt;
|| Cvs 2006-01 || CVS || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || For MacTels. Need to update cvs ???&lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Comment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding]] [[Category:Building]] [[Category:Libraries]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Contrib_Status&amp;diff=12236</id>
		<title>Contrib Status</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Contrib_Status&amp;diff=12236"/>
		<updated>2008-08-06T12:31:04Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Muxers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists the libraries needed to have a fully featured {{VLC}}. &amp;lt;br /&amp;gt;&lt;br /&gt;
The additional information in the table refers to the VLC contrib build system (located in extras/contrib). These versions are against the trunk version.&lt;br /&gt;
&lt;br /&gt;
For information on how to compile {{VLC}} on your platform see the [[Developers_Corner|Build VLC media player]] box on the Developer Corner&#039;s page. &lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !!  Where ? !! Comment &lt;br /&gt;
|-&lt;br /&gt;
! libvorbis &lt;br /&gt;
|| 1.2.0 ||  1.2.0 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.xiph.org/downloads/ Xiph.org] || &lt;br /&gt;
|-&lt;br /&gt;
! libogg&lt;br /&gt;
|| 1.1.3 || 1.1.3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || [http://www.xiph.org/downloads/ Xiph.org]|| &lt;br /&gt;
|-&lt;br /&gt;
! libtheora&lt;br /&gt;
|| 1.0beta3 || 1.0beta3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://www.xiph.org/downloads/ Xiph.org] || &lt;br /&gt;
|-&lt;br /&gt;
! speex&lt;br /&gt;
|| 1.2beta3 || 1.2beta3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.speex.org/downloads/ Speex.org]|| &lt;br /&gt;
|-&lt;br /&gt;
! flac&lt;br /&gt;
||  1.2.1 ||  1.2.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://flac.sourceforge.net/ flac.sf] || &lt;br /&gt;
|-&lt;br /&gt;
! x264 &lt;br /&gt;
|| svn || svn || {{up-to-date}} || {{Needed}} ||{{unNeeded}}  || {{Needed}} || {{Needed}} ||{{unNeeded}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! a52&lt;br /&gt;
||  0.7.4 ||  0.7.4 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||{{unNeeded}} || [http://liba52.sf.net liba52.sf] || Not likely to be updated&lt;br /&gt;
|- &lt;br /&gt;
! MPEG2DEC&lt;br /&gt;
|| 0.5.1 || 0.5.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||{{Needed}} || [http://libmpeg2.sf.net libmpeg2.sf]  || Not likely to be updated&lt;br /&gt;
|-&lt;br /&gt;
! faad2&lt;br /&gt;
|| 2.6.1 || 2.6.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.audiocoding.com/faad2.html audiocoding] ||&lt;br /&gt;
|-&lt;br /&gt;
! faac&lt;br /&gt;
|| 1.26 ||  1.26 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.audiocoding.com/faac.html audiocoding] ||&lt;br /&gt;
|-&lt;br /&gt;
! lame&lt;br /&gt;
|| 3.98 ||  3.98 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} ||  [http://sourceforge.net/project/showfiles.php?group_id=290&amp;amp;package_id=309 sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! FFmpeg&lt;br /&gt;
|| SVN ||  SVN ||  {{up-to-date}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{Needed}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! libmad&lt;br /&gt;
||  0.15.1b ||  0.15.1b || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://sourceforge.net/project/showfiles.php?group_id=12349&amp;amp;package_id=86999 SF] ||&lt;br /&gt;
|-&lt;br /&gt;
! dirac&lt;br /&gt;
|| 0.10.0 || 0.10.0 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://dirac.sourceforge.net dirac.sf] ||  &lt;br /&gt;
|-&lt;br /&gt;
! liboil&lt;br /&gt;
|| 0.3.15 || 0.3.15 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://liboil.freedesktop.org/download/ liboil.fdesktop] ||  &lt;br /&gt;
|-&lt;br /&gt;
! dirac&lt;br /&gt;
|| 1.0.5 || 1.0.5 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.diracvideo.org/download/schroedinger/ diracvideo.org] ||  &lt;br /&gt;
|-&lt;br /&gt;
! libdca&lt;br /&gt;
|| SVN ||  SVN || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! twolame&lt;br /&gt;
|| 0.3.12 || 0.3.12 || {{up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} ||  {{unNeeded}} || [http://www.twolame.org/ twolame.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! libmpcdec&lt;br /&gt;
|| 1.2.6 || 1.2.6 || {{Up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} || {{unNeeded}} || [http://www.musepack.net/index.php?pg=src musepack] || &lt;br /&gt;
|-&lt;br /&gt;
! Tremor&lt;br /&gt;
|| SVN || SVN || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || SVN || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Muxers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! libebml&lt;br /&gt;
|| 0.7.8 ||  0.7.8 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.matroska.org/downloads/linux.html matroska.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! libmatroska&lt;br /&gt;
||  0.8.1 || 0.8.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.matroska.org/downloads/linux.html matroska.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! libdvbpsi&lt;br /&gt;
|| 0.1.6 || 0.1.6 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.videolan.org/developers/libdvbpsi.html libdvbpsi] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Access ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where ? !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! shout&lt;br /&gt;
||  2.2.2 ||  2.2.2 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||  {{unNeeded}} || [http://downloads.us.xiph.org/releases/libshout/ xiph.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! libdvdcss&lt;br /&gt;
|| 1.2.9 ||  1.2.9 ||  {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://download.videolan.org/pub/libdvdcss/?C=N;O=D libdvdcss on v.o] ||&lt;br /&gt;
|-&lt;br /&gt;
! libdvdnav&lt;br /&gt;
|| CVS  || CVS || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://dvd.sourceforge.net/ dvd.sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! livedotcom&lt;br /&gt;
|| latest trunk || latest trunk || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.live555.com/mediaServer/#downloading live555]||&lt;br /&gt;
|-&lt;br /&gt;
! libcddb&lt;br /&gt;
|| 1.3.0 || 1.3.0 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||  {{unNeeded}} || [http://libcddb.sourceforge.net/download.html libcddb.sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! libcdio&lt;br /&gt;
|| 0.79 || 0.80 || {{Untested}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/libcdio/?M=D gnu.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! VCDimager&lt;br /&gt;
|| 0.7.23 || 0.7.23 || {{Up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://www.vcdimager.org/pub/vcdimager/vcdimager-0.7/ vcdimager] ||&lt;br /&gt;
|-&lt;br /&gt;
! libgpg-error&lt;br /&gt;
|| 1.6 || 1.6 || {{Up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://ftp.gnupg.org/gcrypt/libgpg-error/ gnupg.org] || &lt;br /&gt;
|- &lt;br /&gt;
! libgcrypt &lt;br /&gt;
|| 1.4.1 || 1.4.1 || {{Up-to-date}} ||  {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [ftp://ftp.gnupg.org/gcrypt/libgcrypt/ gnupg.org] || &lt;br /&gt;
|- &lt;br /&gt;
! gnuTLS&lt;br /&gt;
|| 2.2.5 || 2.4.1 || {{Untested}} ||  {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://www.gnu.org/software/gnutls/news.html gnu.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! Opendaap&lt;br /&gt;
|| 0.4.0 || 0.4.0 || {{Up-to-date}}||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} || {{unNeeded}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! libxml2&lt;br /&gt;
|| 2.6.32 || 2.6.32 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || [ftp://xmlsoft.org/libxml2/ xmlsoft ftp] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! libpng&lt;br /&gt;
|| 1.2.29 || 1.2.29 || {{up-to-date}} ||{{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.libpng.org/pub/png/libpng.html libpng.org]&lt;br /&gt;
|- &lt;br /&gt;
! libjpeg&lt;br /&gt;
|| 6b || 6b || {{up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} ||  {{unNeeded}} || [http://www.ijg.org/files/ ijg.org] || Rare updates&lt;br /&gt;
|-&lt;br /&gt;
! libtiff&lt;br /&gt;
|| 3.8.2 || 3.8.2 || {{up-to-date}} ||{{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [ftp://ftp.remotesensing.org/pub/libtiff/ Main libtiff ftp] || Rare updates&lt;br /&gt;
|-&lt;br /&gt;
! SDL&lt;br /&gt;
|| 1.2.13 || 1.2.13 || {{up-to-date}} || {{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [http://www.libsdl.org/download-1.2.php libdsl.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! SDL_image &lt;br /&gt;
|| 1.2.6 || 1.2.6 || {{up-to-date}} || {{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [http://www.libsdl.org/projects/SDL_image/ libdsl.org] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where ! || Comment&lt;br /&gt;
|-&lt;br /&gt;
! Autoconf &lt;br /&gt;
| 2.61 || 2.61 || {{up-to-date}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/autoconf/?M=D Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! automake&lt;br /&gt;
| 1.9.6 ||  1.10.1 || {{untested}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/automake/?M=D Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! Pkgconfig&lt;br /&gt;
| 0.20.0 ||  0.23 || {{untested}} ||{{unNeeded}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}} || [http://pkgconfig.freedesktop.org/wiki/ fd.org] || Don&#039;t update [http://trac.videolan.org/vlc/changeset/17486 Rev.17486]&lt;br /&gt;
|-&lt;br /&gt;
! Perl&lt;br /&gt;
| 5.8.8 ||  5.10.0 ||  {{untested}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || [http://www.perl.org Perl] ||&lt;br /&gt;
|-&lt;br /&gt;
! libtool &lt;br /&gt;
| 1.5.24 ||  1.5.26 || {{untested}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://www.gnu.org/software/libtool/ GNU-libtool] || Not tested yet and not usefull.&lt;br /&gt;
|- &lt;br /&gt;
! libiconv&lt;br /&gt;
| 1.9.2 ||  1.12 || {{untested}} || {{Needed}}  || {{Needed}} || {{unNeeded}}|| {{Needed}} || {{Needed}} || [http://www.gnu.org/software/libiconv/#downloading Gnu] || Not tested yet and not usefull.&lt;br /&gt;
|-&lt;br /&gt;
! gettext &lt;br /&gt;
|| 0.16.1 ||  0.17 || {{untested}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://ftp.gnu.org/gnu/gettext/ Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! freetype2&lt;br /&gt;
||  2.3.7 ||  2.3.7 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} ||  [http://freetype.org/index2.html freetype.org] || &lt;br /&gt;
|-&lt;br /&gt;
! fribidi &lt;br /&gt;
|| 0.19.1 || 0.19.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://fribidi.org/wiki/ fribidi.org] || &lt;br /&gt;
|-&lt;br /&gt;
! libunicows&lt;br /&gt;
|| 1.1.1 || 1.1.1 || {{up-to-date}} ||{{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || [http://libunicows.sourceforge.net/ libunicows] ||  &lt;br /&gt;
|-&lt;br /&gt;
! zlib&lt;br /&gt;
|| 1.2.3 || 1.2.3 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{Needed}} || [http://www.zlib.net/ zlib] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Comment&lt;br /&gt;
|-&lt;br /&gt;
!libid3tag&lt;br /&gt;
|| 0.15.1b ||  0.15.1b ||  {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
!taglib&lt;br /&gt;
|| 1.5 || 1.5 || {{up-to-date}} || {{Needed}}  || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||http://developer.kde.org/~wheeler/taglib.html&lt;br /&gt;
|-&lt;br /&gt;
! goom2k4&lt;br /&gt;
||  2k4-0 ||   2k4-0 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! libcaca&lt;br /&gt;
|| 0.9 || 0.9 || {{up-to-date}}|| {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} ||  0.99-beta2 is not a release version ?&lt;br /&gt;
|-&lt;br /&gt;
! libmodplug&lt;br /&gt;
|| 0.8.4 ||  0.8.4 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! glib&lt;br /&gt;
|| 1.2.10 || 1.2.10 || {{Up-to-date}}||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} ||  {{unNeeded}} ||v. gtk 1.2+&lt;br /&gt;
|-&lt;br /&gt;
! libidl &lt;br /&gt;
|| 0.6.8 || 0.8.6 ||  {{Up-to-date}} ||{{unNeeded}} ||{{unNeeded}}||{{Needed}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it. Mirror has changed. It is now on gnome site&lt;br /&gt;
|-&lt;br /&gt;
! glib-win32&lt;br /&gt;
|| 19990228 ~ 1.2.0 || 1.2.10 || {{Up-to-date}} || {{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! libidl-win32&lt;br /&gt;
|| 0.6.3 || 0.8.6 || {{Up-to-date}}  ||{{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it. Mirror has changed. It is now on gnome site&lt;br /&gt;
|-&lt;br /&gt;
! gecko&lt;br /&gt;
|| 1.7.5 || 1.8b1 || {{Up-to-date}}  ||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} ||  {{unNeeded}} ||&#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! gecko-win32&lt;br /&gt;
|| 1.8b1 || 1.8b1 || {{Up-to-date}} || {{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} ||&#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! wxWidgets&lt;br /&gt;
|| 2.6.3 || 2.6.3 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! Qt&lt;br /&gt;
|| 4.3 || 4.3 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || &lt;br /&gt;
|-&lt;br /&gt;
! portaudio&lt;br /&gt;
|| 19 || 19 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||  {{unNeeded}} ||Commented for Win32&lt;br /&gt;
|-&lt;br /&gt;
! Clinkcc&lt;br /&gt;
|| 171 || 171  || {{up-to-date}}|| {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || Commented for MacOSX&lt;br /&gt;
|-&lt;br /&gt;
! Upnp&lt;br /&gt;
|| 1.3.1 || 1.3.1 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || Commented&lt;br /&gt;
|-&lt;br /&gt;
! expat&lt;br /&gt;
|| 2.0.0 || 2.0.1  || {{untested}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||  {{unNeeded}} ||Commented for MacOSX&lt;br /&gt;
|-&lt;br /&gt;
! NASM&lt;br /&gt;
|| Cvs 2006-01 || CVS || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || For MacTels. Need to update cvs ???&lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Comment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding]] [[Category:Building]] [[Category:Libraries]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Contrib_Status&amp;diff=12235</id>
		<title>Contrib Status</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Contrib_Status&amp;diff=12235"/>
		<updated>2008-08-06T12:29:59Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* Codecs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists the libraries needed to have a fully featured {{VLC}}. &amp;lt;br /&amp;gt;&lt;br /&gt;
The additional information in the table refers to the VLC contrib build system (located in extras/contrib). These versions are against the trunk version.&lt;br /&gt;
&lt;br /&gt;
For information on how to compile {{VLC}} on your platform see the [[Developers_Corner|Build VLC media player]] box on the Developer Corner&#039;s page. &lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !!  Where ? !! Comment &lt;br /&gt;
|-&lt;br /&gt;
! libvorbis &lt;br /&gt;
|| 1.2.0 ||  1.2.0 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.xiph.org/downloads/ Xiph.org] || &lt;br /&gt;
|-&lt;br /&gt;
! libogg&lt;br /&gt;
|| 1.1.3 || 1.1.3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || [http://www.xiph.org/downloads/ Xiph.org]|| &lt;br /&gt;
|-&lt;br /&gt;
! libtheora&lt;br /&gt;
|| 1.0beta3 || 1.0beta3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://www.xiph.org/downloads/ Xiph.org] || &lt;br /&gt;
|-&lt;br /&gt;
! speex&lt;br /&gt;
|| 1.2beta3 || 1.2beta3 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.speex.org/downloads/ Speex.org]|| &lt;br /&gt;
|-&lt;br /&gt;
! flac&lt;br /&gt;
||  1.2.1 ||  1.2.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://flac.sourceforge.net/ flac.sf] || &lt;br /&gt;
|-&lt;br /&gt;
! x264 &lt;br /&gt;
|| svn || svn || {{up-to-date}} || {{Needed}} ||{{unNeeded}}  || {{Needed}} || {{Needed}} ||{{unNeeded}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! a52&lt;br /&gt;
||  0.7.4 ||  0.7.4 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||{{unNeeded}} || [http://liba52.sf.net liba52.sf] || Not likely to be updated&lt;br /&gt;
|- &lt;br /&gt;
! MPEG2DEC&lt;br /&gt;
|| 0.5.1 || 0.5.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||{{Needed}} || [http://libmpeg2.sf.net libmpeg2.sf]  || Not likely to be updated&lt;br /&gt;
|-&lt;br /&gt;
! faad2&lt;br /&gt;
|| 2.6.1 || 2.6.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.audiocoding.com/faad2.html audiocoding] ||&lt;br /&gt;
|-&lt;br /&gt;
! faac&lt;br /&gt;
|| 1.26 ||  1.26 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.audiocoding.com/faac.html audiocoding] ||&lt;br /&gt;
|-&lt;br /&gt;
! lame&lt;br /&gt;
|| 3.98 ||  3.98 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} ||  [http://sourceforge.net/project/showfiles.php?group_id=290&amp;amp;package_id=309 sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! FFmpeg&lt;br /&gt;
|| SVN ||  SVN ||  {{up-to-date}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{Needed}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! libmad&lt;br /&gt;
||  0.15.1b ||  0.15.1b || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://sourceforge.net/project/showfiles.php?group_id=12349&amp;amp;package_id=86999 SF] ||&lt;br /&gt;
|-&lt;br /&gt;
! dirac&lt;br /&gt;
|| 0.10.0 || 0.10.0 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://dirac.sourceforge.net dirac.sf] ||  &lt;br /&gt;
|-&lt;br /&gt;
! liboil&lt;br /&gt;
|| 0.3.15 || 0.3.15 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://liboil.freedesktop.org/download/ liboil.fdesktop] ||  &lt;br /&gt;
|-&lt;br /&gt;
! dirac&lt;br /&gt;
|| 1.0.5 || 1.0.5 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.diracvideo.org/download/schroedinger/ diracvideo.org] ||  &lt;br /&gt;
|-&lt;br /&gt;
! libdca&lt;br /&gt;
|| SVN ||  SVN || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || SVN ||&lt;br /&gt;
|-&lt;br /&gt;
! twolame&lt;br /&gt;
|| 0.3.12 || 0.3.12 || {{up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} ||  {{unNeeded}} || [http://www.twolame.org/ twolame.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! libmpcdec&lt;br /&gt;
|| 1.2.6 || 1.2.6 || {{Up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} || {{unNeeded}} || [http://www.musepack.net/index.php?pg=src musepack] || &lt;br /&gt;
|-&lt;br /&gt;
! Tremor&lt;br /&gt;
|| SVN || SVN || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || SVN || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Muxers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! libebml&lt;br /&gt;
|| 0.7.8 ||  0.7.8 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.matroska.org/downloads/linux.html matroska.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! libmatroska&lt;br /&gt;
||  0.8.1 || 0.8.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.matroska.org/downloads/linux.html matroska.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! libdvbpsi&lt;br /&gt;
|| 0.1.6 || 0.1.6 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{Needed}} || [http://www.videolan.org/developers/libdvbpsi.html libdvbpsi] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Access ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where ? !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! shout&lt;br /&gt;
||  2.2.2 ||  2.2.2 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||  {{unNeeded}} || [http://downloads.us.xiph.org/releases/libshout/ xiph.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! libdvdcss&lt;br /&gt;
|| 1.2.9 ||  1.2.9 ||  {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://download.videolan.org/pub/libdvdcss/?C=N;O=D libdvdcss on v.o] ||&lt;br /&gt;
|-&lt;br /&gt;
! libdvdnav&lt;br /&gt;
|| CVS  || CVS || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://dvd.sourceforge.net/ dvd.sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! livedotcom&lt;br /&gt;
|| latest trunk || latest trunk || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}} || {{unNeeded}} || [http://www.live555.com/mediaServer/#downloading live555]||&lt;br /&gt;
|-&lt;br /&gt;
! libcddb&lt;br /&gt;
|| 1.3.0 || 1.3.0 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||  {{unNeeded}} || [http://libcddb.sourceforge.net/download.html libcddb.sf.net] ||&lt;br /&gt;
|-&lt;br /&gt;
! libcdio&lt;br /&gt;
|| 0.79 || 0.80 || {{Untested}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/libcdio/?M=D gnu.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! VCDimager&lt;br /&gt;
|| 0.7.23 || 0.7.23 || {{Up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://www.vcdimager.org/pub/vcdimager/vcdimager-0.7/ vcdimager] ||&lt;br /&gt;
|-&lt;br /&gt;
! libgpg-error&lt;br /&gt;
|| 1.6 || 1.6 || {{Up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://ftp.gnupg.org/gcrypt/libgpg-error/ gnupg.org] || &lt;br /&gt;
|- &lt;br /&gt;
! libgcrypt &lt;br /&gt;
|| 1.4.1 || 1.4.1 || {{Up-to-date}} ||  {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [ftp://ftp.gnupg.org/gcrypt/libgcrypt/ gnupg.org] || &lt;br /&gt;
|- &lt;br /&gt;
! gnuTLS&lt;br /&gt;
|| 2.2.5 || 2.4.1 || {{Untested}} ||  {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://www.gnu.org/software/gnutls/news.html gnu.org] ||&lt;br /&gt;
|- &lt;br /&gt;
! Opendaap&lt;br /&gt;
|| 0.4.0 || 0.4.0 || {{Up-to-date}}||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} || {{unNeeded}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! libxml2&lt;br /&gt;
|| 2.6.32 || 2.6.32 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || [ftp://xmlsoft.org/libxml2/ xmlsoft ftp] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where !! Comment&lt;br /&gt;
|-&lt;br /&gt;
! libpng&lt;br /&gt;
|| 1.2.29 || 1.2.29 || {{up-to-date}} ||{{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://www.libpng.org/pub/png/libpng.html libpng.org]&lt;br /&gt;
|- &lt;br /&gt;
! libjpeg&lt;br /&gt;
|| 6b || 6b || {{up-to-date}} || {{Needed}} || {{Needed}} || {{Needed}} || {{Needed}} ||  {{unNeeded}} || [http://www.ijg.org/files/ ijg.org] || Rare updates&lt;br /&gt;
|-&lt;br /&gt;
! libtiff&lt;br /&gt;
|| 3.8.2 || 3.8.2 || {{up-to-date}} ||{{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [ftp://ftp.remotesensing.org/pub/libtiff/ Main libtiff ftp] || Rare updates&lt;br /&gt;
|-&lt;br /&gt;
! SDL&lt;br /&gt;
|| 1.2.13 || 1.2.13 || {{up-to-date}} || {{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [http://www.libsdl.org/download-1.2.php libdsl.org] ||&lt;br /&gt;
|-&lt;br /&gt;
! SDL_image &lt;br /&gt;
|| 1.2.6 || 1.2.6 || {{up-to-date}} || {{Needed}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}}|| [http://www.libsdl.org/projects/SDL_image/ libdsl.org] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Where ! || Comment&lt;br /&gt;
|-&lt;br /&gt;
! Autoconf &lt;br /&gt;
| 2.61 || 2.61 || {{up-to-date}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/autoconf/?M=D Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! automake&lt;br /&gt;
| 1.9.6 ||  1.10.1 || {{untested}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://ftp.gnu.org/gnu/automake/?M=D Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! Pkgconfig&lt;br /&gt;
| 0.20.0 ||  0.23 || {{untested}} ||{{unNeeded}} || {{unNeeded}}|| {{Needed}}|| {{unNeeded}}|| {{unNeeded}} || [http://pkgconfig.freedesktop.org/wiki/ fd.org] || Don&#039;t update [http://trac.videolan.org/vlc/changeset/17486 Rev.17486]&lt;br /&gt;
|-&lt;br /&gt;
! Perl&lt;br /&gt;
| 5.8.8 ||  5.10.0 ||  {{untested}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || [http://www.perl.org Perl] ||&lt;br /&gt;
|-&lt;br /&gt;
! libtool &lt;br /&gt;
| 1.5.24 ||  1.5.26 || {{untested}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || [http://www.gnu.org/software/libtool/ GNU-libtool] || Not tested yet and not usefull.&lt;br /&gt;
|- &lt;br /&gt;
! libiconv&lt;br /&gt;
| 1.9.2 ||  1.12 || {{untested}} || {{Needed}}  || {{Needed}} || {{unNeeded}}|| {{Needed}} || {{Needed}} || [http://www.gnu.org/software/libiconv/#downloading Gnu] || Not tested yet and not usefull.&lt;br /&gt;
|-&lt;br /&gt;
! gettext &lt;br /&gt;
|| 0.16.1 ||  0.17 || {{untested}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} || [http://ftp.gnu.org/gnu/gettext/ Gnu(slow)] ||&lt;br /&gt;
|-&lt;br /&gt;
! freetype2&lt;br /&gt;
||  2.3.7 ||  2.3.7 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} ||  [http://freetype.org/index2.html freetype.org] || &lt;br /&gt;
|-&lt;br /&gt;
! fribidi &lt;br /&gt;
|| 0.19.1 || 0.19.1 || {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  ||  {{unNeeded}} || [http://fribidi.org/wiki/ fribidi.org] || &lt;br /&gt;
|-&lt;br /&gt;
! libunicows&lt;br /&gt;
|| 1.1.1 || 1.1.1 || {{up-to-date}} ||{{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || [http://libunicows.sourceforge.net/ libunicows] ||  &lt;br /&gt;
|-&lt;br /&gt;
! zlib&lt;br /&gt;
|| 1.2.3 || 1.2.3 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{Needed}} || [http://www.zlib.net/ zlib] ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: 100%; margin: 1em auto 1em auto; border : 1px&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Contrib Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Comment&lt;br /&gt;
|-&lt;br /&gt;
!libid3tag&lt;br /&gt;
|| 0.15.1b ||  0.15.1b ||  {{up-to-date}} || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{Needed}}  || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
!taglib&lt;br /&gt;
|| 1.5 || 1.5 || {{up-to-date}} || {{Needed}}  || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||http://developer.kde.org/~wheeler/taglib.html&lt;br /&gt;
|-&lt;br /&gt;
! goom2k4&lt;br /&gt;
||  2k4-0 ||   2k4-0 || {{up-to-date}} || {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  ||  {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! libcaca&lt;br /&gt;
|| 0.9 || 0.9 || {{up-to-date}}|| {{Needed}}  ||{{unNeeded}} ||  {{Needed}}  || {{Needed}}  || {{unNeeded}} ||  0.99-beta2 is not a release version ?&lt;br /&gt;
|-&lt;br /&gt;
! libmodplug&lt;br /&gt;
|| 0.8.4 ||  0.8.4 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{Needed}} || {{Needed}} || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! glib&lt;br /&gt;
|| 1.2.10 || 1.2.10 || {{Up-to-date}}||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} ||  {{unNeeded}} ||v. gtk 1.2+&lt;br /&gt;
|-&lt;br /&gt;
! libidl &lt;br /&gt;
|| 0.6.8 || 0.8.6 ||  {{Up-to-date}} ||{{unNeeded}} ||{{unNeeded}}||{{Needed}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it. Mirror has changed. It is now on gnome site&lt;br /&gt;
|-&lt;br /&gt;
! glib-win32&lt;br /&gt;
|| 19990228 ~ 1.2.0 || 1.2.10 || {{Up-to-date}} || {{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! libidl-win32&lt;br /&gt;
|| 0.6.3 || 0.8.6 || {{Up-to-date}}  ||{{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} || &#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it. Mirror has changed. It is now on gnome site&lt;br /&gt;
|-&lt;br /&gt;
! gecko&lt;br /&gt;
|| 1.7.5 || 1.8b1 || {{Up-to-date}}  ||{{unNeeded}} ||{{unNeeded}} ||{{Needed}} ||{{unNeeded}} ||  {{unNeeded}} ||&#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! gecko-win32&lt;br /&gt;
|| 1.8b1 || 1.8b1 || {{Up-to-date}} || {{Needed}} ||{{unNeeded}} ||{{unNeeded}} ||{{unNeeded}} || {{unNeeded}} ||&#039;&#039;Not up-to-date, but We don&#039;t need about new versions&#039;&#039;, since we don&#039;t really build it.&lt;br /&gt;
|-&lt;br /&gt;
! wxWidgets&lt;br /&gt;
|| 2.6.3 || 2.6.3 || {{Up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} ||&lt;br /&gt;
|-&lt;br /&gt;
! Qt&lt;br /&gt;
|| 4.3 || 4.3 || {{up-to-date}} || {{Needed}} || {{unNeeded}} || {{unNeeded}} || {{Needed}} || {{unNeeded}} || &lt;br /&gt;
|-&lt;br /&gt;
! portaudio&lt;br /&gt;
|| 19 || 19 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||  {{unNeeded}} ||Commented for Win32&lt;br /&gt;
|-&lt;br /&gt;
! Clinkcc&lt;br /&gt;
|| 171 || 171  || {{up-to-date}}|| {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || Commented for MacOSX&lt;br /&gt;
|-&lt;br /&gt;
! Upnp&lt;br /&gt;
|| 1.3.1 || 1.3.1 || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || Commented&lt;br /&gt;
|-&lt;br /&gt;
! expat&lt;br /&gt;
|| 2.0.0 || 2.0.1  || {{untested}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} ||  {{unNeeded}} ||Commented for MacOSX&lt;br /&gt;
|-&lt;br /&gt;
! NASM&lt;br /&gt;
|| Cvs 2006-01 || CVS || {{up-to-date}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || {{unNeeded}} || For MacTels. Need to update cvs ???&lt;br /&gt;
|-&lt;br /&gt;
! Contrib lib !! VLC version !! Most recent version !! Compile !! Win32 !! BeOS !! MacOSX !! *Nix !! WinCE !! Comment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding]] [[Category:Building]] [[Category:Libraries]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/Input&amp;diff=12233</id>
		<title>Hacker Guide/Input</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/Input&amp;diff=12233"/>
		<updated>2008-08-01T08:55:34Z</updated>

		<summary type="html">&lt;p&gt;Geal: /* What happens to a file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=The complex multi-layer input=&lt;br /&gt;
&lt;br /&gt;
The idea behind the input module is to treat packets, without knowing at all what is in it. It only takes a packet, reads its ID, and delivers it to the decoder at the right time indicated in the packet header (SCR and PCR fields in MPEG). All the basic browsing operations are implemented without peeking at the content of the elementary stream.&lt;br /&gt;
&lt;br /&gt;
Thus it remains very generic. This also means you can&#039;t do stuff like &amp;quot;play 3 frames now&amp;quot; or &amp;quot;move forward 10 frames&amp;quot; or &amp;quot;play as fast as you can but play all frames&amp;quot;. It doesn&#039;t even know what a &amp;quot;frame&amp;quot; is. There is no privileged elementary stream, like the video one could be (for the simple reason that, according to MPEG, a stream may contain several video ES).&lt;br /&gt;
&lt;br /&gt;
==What happens to a file==&lt;br /&gt;
&lt;br /&gt;
An input thread is spawned for every file read. Indeed, input structures and decoders need to be reinitialized because the specificities of the stream may be different. input_CreateThread is called by the interface thread (playlist module).&lt;br /&gt;
&lt;br /&gt;
At first, vlc looks for an access or access_demux module to open the stream, by calling the function module-&amp;gt;pf_activate. If it succeeds, the module thread is started, and vlc can start looking for a demux module to demultiplex the output of the access module.&lt;br /&gt;
&lt;br /&gt;
==Stream Management==&lt;br /&gt;
&lt;br /&gt;
The function which has opened the input socket must specify two properties about it :&lt;br /&gt;
&lt;br /&gt;
p_input-&amp;gt;stream.b_pace_control : Whether or not the stream can be read at our own pace (determined by the stream&#039;s frequency and the host computer&#039;s system clock). For instance a file or a pipe (including TCP/IP connections) can be read at our pace, if we don&#039;t read fast enough, the other end of the pipe will just block on a write() operation. On the contrary, UDP streaming (such as the one used by VideoLAN Server) is done at the server&#039;s pace, and if we don&#039;t read fast enough, packets will simply be lost when the kernel&#039;s buffer is full. So the drift introduced by the server&#039;s clock must be regularly compensated. This property controls the clock management, and whether or not fast forward and slow motion can be done.&lt;br /&gt;
&lt;br /&gt;
Subtilities in the clock management : With a UDP socket and a distant server, the drift is not negligible because on a whole movie it can account for seconds if one of the clocks is slightly fucked up. That means that presentation dates given by the input thread may be out of sync, to some extent, with the frequencies given in every Elementary Stream. Output threads (and, anecdotically, decoder threads) must deal with it.&lt;br /&gt;
&lt;br /&gt;
The same kind of problems may happen when reading from a device (like video4linux&#039;s /dev/video ) connected for instance to a video encoding board. There is no way we could differentiate it from a simple cat foo.mpg | vlc - , which doesn&#039;t imply any clock problem. So the Right Thing (c) would be to ask the user about the value of b_pace_control , but nobody would understand what it means (you are not the dumbest person on Earth, and obviously you have read this paragraph several times to understand it :-). Anyway, the drift should be negligible since the board would share the same clock as the CPU, so we chose to neglect it.&lt;br /&gt;
&lt;br /&gt;
p_input-&amp;gt;stream.b_seekable : Whether we can do lseek() calls on the file descriptor or not. Basically whether we can jump anywhere in the stream (and thus display a scrollbar) or if we can only read one byte after the other. This has less impact on the stream management than the previous item, but it is not redundant, because for instance cat foo.mpg | vlc - is b_pace_control = 1 but b_seekable = 0. On the contrary, you cannot have b_pace_control = 0 along with b_seekable = 1. If a stream is seekable, p_input-&amp;gt;stream.p_selected_area-&amp;gt;i_size must be set (in an arbitrary unit, for instance bytes, but it must be the same as p_input-&amp;gt;i_tell which indicates the byte we are currently reading from the stream).&lt;br /&gt;
&lt;br /&gt;
===Offset to time conversions===&lt;br /&gt;
Functions managing clocks are located in src/input/input_clock.c. All we know about a file is its start offset and its end offset (p_input-&amp;gt;stream.p_selected_area-&amp;gt;i_size), currently in bytes, but it could be plugin-dependant. So how the hell can we display in the interface a time in seconds ? Well, we cheat. PS streams have a mux_rate property which indicates how many bytes we should read in a second. This is subject to change at any time, but practically it is a constant for all streams we know. So we use it to determine time offsets.&lt;br /&gt;
&lt;br /&gt;
==Structures exported to the interface==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s focus on the communication API between the input module and the interface. The most important file is include/input_ext-intf.h, which you should know almost by heart. This file defines the input_thread_t structure, the stream_descriptor_t and all programs and ES descriptors included (you can view it as a tree).&lt;br /&gt;
&lt;br /&gt;
Update: input_thread_t is now defined in include/vlc_input.h&lt;br /&gt;
&lt;br /&gt;
First, note that the input_thread_t structure features two void * pointers, p_method_data and p_plugin_data, which you can respectivly use for buffer management data and plugin data.&lt;br /&gt;
&lt;br /&gt;
Second, a stream description is stored in a tree featuring program descriptors, which themselves contain several elementary stream descriptors. For those of you who don&#039;t know all MPEG concepts, an elementary stream, aka ES, is a continuous stream of video or (exclusive) audio data, directly readable by a decoder, without decapsulation.&lt;br /&gt;
&lt;br /&gt;
This tree structure is illustrated by the following figure, where one stream holds two programs. In most cases there will only be one program (to my knowledge only TS streams can carry several programs, for instance a movie and a football game at the same time - this is adequate for satellite and cable broadcasting).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Warning===&lt;br /&gt;
&lt;br /&gt;
For all modifications and accesses to the p_input-&amp;gt;stream structure, you must hold the p_input-&amp;gt;stream.stream_lock.&lt;br /&gt;
&lt;br /&gt;
ES are described by an ID (the ID the appropriate demultiplexer will look for), a stream_id (the real MPEG stream ID), a type (defined in ISO/IEC 13818-1 table 2-29) and a litteral description. It also contains context information for the demultiplexer, and decoder information p_decoder_fifo we will talk about in the next chapter. If the stream you want to read is not an MPEG system layer (for instance AVI or RTP), a specific demultiplexer will have to be written. In that case, if you need to carry additional information, you can use void * p_demux_data at your convenience. It will be automatically freed on shutdown.&lt;br /&gt;
&lt;br /&gt;
===Why ID and not use the plain MPEG stream_id ?===&lt;br /&gt;
&lt;br /&gt;
When a packet (be it a TS packet, PS packet, or whatever) is read, the appropriate demultiplexer will look for an ID in the packet, find the relevant elementary stream, and demultiplex it if the user selected it. In case of TS packets, the only information we have is the ES PID, so the reference ID we keep is the PID. PID don&#039;t exist in PS streams, so we have to invent one. It is of course based on the stream_id found in all PS packets, but it is not enough, since private streams (ie. AC3, SPU and LPCM) all share the same stream_id (0xBD). In that case the first byte of the PES payload is a stream private ID, so we combine this with the stream_id to get our ID (if you did not understand everything, it isn&#039;t very important - just remember we used our brains before writing the code :-).&lt;br /&gt;
&lt;br /&gt;
The stream, program and ES structures are filled in by the plugin&#039;s pf_init() using functions in src/input/input_programs.c, but are subject to change at any time. The DVD plugin parses .ifo files to know which ES are in the stream; the TS plugin reads the PAT and PMT structures in the stream; the PS plugin can either parse the PSM structure (but it is rarely present), or build the tree &amp;quot;on the fly&amp;quot; by pre-parsing the first megabyte of data.&lt;br /&gt;
&lt;br /&gt;
===Warning===&lt;br /&gt;
&lt;br /&gt;
In most cases we need to pre-parse (that is, read the first MB of data, and go back to the beginning) a PS stream, because the PSM (Program Stream Map) structure is almost never present. This is not appropriate, though, but we don&#039;t have the choice. A few problems will arise. First, non-seekable streams cannot be pre-parsed, so the ES tree will be built on the fly. Second, if a new elementary stream starts after the first MB of data (for instance a subtitle track won&#039;t show up during the credits), it won&#039;t appear in the menu before we encounter the first packet. We cannot pre-parse the entire stream because it would take hours (even without decoding it).&lt;br /&gt;
&lt;br /&gt;
It is currently the responsibility of the input plugin to spawn the necessary decoder threads. It must call input_SelectES ( input_thread_t * p_input, es_descriptor_t * p_es ) on the selected ES.&lt;br /&gt;
&lt;br /&gt;
The stream descriptor also contains a list of areas. Areas are logical discontinuities in the stream, for instance chapters and titles in a DVD. There is only one area in TS and PS streams, though we could use them when the PSM (or PAT/PMT) version changes. The goal is that when you seek to another area, the input plugin loads the new stream descriptor tree (otherwise the selected ID may be wrong).&lt;br /&gt;
&lt;br /&gt;
==Methods used by the interface==&lt;br /&gt;
&lt;br /&gt;
Besides, input_ext-intf.c provides a few functions to control the reading of the stream :&lt;br /&gt;
&lt;br /&gt;
*input_SetStatus ( input_thread_t * p_input, int i_mode ) : Changes the pace of reading. i_mode can be one of INPUT_STATUS_END, INPUT_STATUS_PLAY, INPUT_STATUS_PAUSE, INPUT_STATUS_FASTER, INPUT_STATUS_SLOWER.&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
Internally, the pace of reading is determined by the variable p_input-&amp;gt;stream.control.i_rate. The default value is DEFAULT_RATE. The lower the value, the faster the pace is. Rate changes are taken into account in input_ClockManageRef. Pause is accomplished by simply stopping the input thread (it is then awaken by a pthread signal). In that case, decoders will be stopped too. Please remember this if you do statistics on decoding times (like src/video_parser/vpar_synchro.c does). Don&#039;t call this function if p_input-&amp;gt;b_pace_control == 0.&lt;br /&gt;
&lt;br /&gt;
*input_Seek ( input_thread_t * p_input, off_t i_position ) : Changes the offset of reading. Used to jump to another place in a file. You mustn&#039;t call this function if p_input-&amp;gt;stream.b_seekable == 0. The position is a number (usually long long, depends on your libc) between p_input-&amp;gt;p_selected_area-&amp;gt;i_start and p_input-&amp;gt;p_selected_area-&amp;gt;i_size (current value is in p_input-&amp;gt;p_selected_area-&amp;gt;i_tell).&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
Multimedia files can be very large, especially when we read a device like /dev/dvd, so offsets must be 64 bits large. Under a lot of systems, like FreeBSD, off_t are 64 bits by default, but it is not the case under GNU libc 2.x. That is why we need to compile VLC with -D_FILE_OFFSET_BITS=64 -D__USE_UNIX98.&lt;br /&gt;
&lt;br /&gt;
===Escaping stream discontinuities===&lt;br /&gt;
&lt;br /&gt;
Changing the reading position at random can result in a messed up stream, and the decoder which reads it may segfault. To avoid this, we send several NULL packets (ie. packets containing nothing but zeros) before changing the reading position. Indeed, under most video and audio formats, a long enough stream of zeros is an escape sequence and the decoder can exit cleanly.&lt;br /&gt;
&lt;br /&gt;
*input_OffsetToTime ( input_thread_t * p_input, char * psz_buffer, off_t i_offset ) : Converts an offset value to a time coordinate (used for interface display). [currently it is broken with MPEG-2 files]&lt;br /&gt;
*input_ChangeES ( input_thread_t * p_input, es_descriptor_t * p_es, u8 i_cat ) : Unselects all elementary streams of type i_cat and selects p_es. Used for instance to change language or subtitle track.&lt;br /&gt;
*input_ToggleES ( input_thread_t * p_input, es_descriptor_t * p_es, boolean_t b_select ) : This is the clean way to select or unselect a particular elementary stream from the interface.&lt;br /&gt;
&lt;br /&gt;
==Buffers management==&lt;br /&gt;
&lt;br /&gt;
Input plugins must implement a way to allocate and deallocate packets (whose structures will be described in the next chapter). We basically need four functions :&lt;br /&gt;
&lt;br /&gt;
*pf_new_packet ( void * p_private_data, size_t i_buffer_size ) : Allocates a new data_packet_t and an associated buffer of i_buffer_size bytes.&lt;br /&gt;
*pf_new_pes ( void * p_private_data ) : Allocates a new pes_packet_t.&lt;br /&gt;
*pf_delete_packet ( void * p_private_data, data_packet_t * p_data )  : Deallocates p_data.&lt;br /&gt;
*pf_delete_pes ( void * p_private_data, pes_packet_t * p_pes ) : Deallocates p_pes. &lt;br /&gt;
&lt;br /&gt;
All functions are given p_input-&amp;gt;p_method_data as first parameter, so that you can keep records of allocated and freed packets.&lt;br /&gt;
&lt;br /&gt;
===Buffers management strategies===&lt;br /&gt;
&lt;br /&gt;
Buffers management can be done in three ways :&lt;br /&gt;
&lt;br /&gt;
#Traditional libc allocation : For a long time we have used in the PS plugin malloc() and free() every time we needed to allocate or deallocate a packet. Contrary to a popular belief, it is not that slow.&lt;br /&gt;
#Netlist : In this method we allocate a very big buffer at the beginning of the problem, and then manage a list of pointers to free packets (the &amp;quot;netlist&amp;quot;). This only works well if all packets have the same size. It is used for long for the TS input. The DVD plugin also uses it, but adds a refcount flag because buffers (2048 bytes) can be shared among several packets. It is now deprecated and won&#039;t be documented.&lt;br /&gt;
#Buffer cache : We are currently developing a new method. It is already in use in the PS plugin. The idea is to call malloc() and free() to absorb stream irregularities, but re-use all allocated buffers via a cache system. We are extending it so that it can be used in any plugin without performance hit, but it is currently left undocumented.&lt;br /&gt;
&lt;br /&gt;
==Demultiplexing the stream==&lt;br /&gt;
&lt;br /&gt;
After being read by pf_read , your plugin must give a function pointer to the demultiplexer function. The demultiplexer is responsible for parsing the packet, gathering PES, and feeding decoders.&lt;br /&gt;
&lt;br /&gt;
Demultiplexers for standard MPEG structures (PS and TS) have already been written. You just need to indicate input_DemuxPS and input_DemuxTS for pf_demux. You can also write your own demultiplexer.&lt;br /&gt;
&lt;br /&gt;
It is not the purpose of this document to describe the different levels of encapsulation in an MPEG stream. Please refer to your MPEG specification for that.&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=12232</id>
		<title>Hacker Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=12232"/>
		<updated>2008-08-01T08:42:42Z</updated>

		<summary type="html">&lt;p&gt;Geal: add pages for prefs and playlist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:red;&amp;quot;&amp;gt;&lt;br /&gt;
This guide is still being constructed. Please see http://www.videolan.org/developers/vlc.html for the current information &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===Authors=== &lt;br /&gt;
* Derk-Jan Hartman&lt;br /&gt;
*Christophe Massiot&lt;br /&gt;
*Samuel Hocevar&lt;br /&gt;
*Geoffroy Couprie&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Introduction| What is this?]]&lt;br /&gt;
* What you need to know about VLC&lt;br /&gt;
&lt;br /&gt;
==The many layers of VLC==&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Core| Core]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Interfaces| Interfaces]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Input| Input]]&lt;br /&gt;
* Access&lt;br /&gt;
* Demux&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Decoder| Decoder]]&lt;br /&gt;
* Packetizers&lt;br /&gt;
* Codec&lt;br /&gt;
* Stream Output&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Audio Output| Audio Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Video Output| Video Output]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/VLM Internals| VLM Internals]]&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
==VLC source code overview==&lt;br /&gt;
* [[VLC source tree]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Module Writers Guide|VLC modules]] (also see [[Modules source tree]] )&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Object Management|VLC Object Management]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Preferences|VLC Preferences]]&lt;br /&gt;
* [[Documentation:Hacker&#039;s Guide/Playlist|VLC Playlist and Media Library]]&lt;br /&gt;
* VLC variables&lt;br /&gt;
* [[Doxygen Documentation]]&lt;br /&gt;
&lt;br /&gt;
==Coding for VLC==&lt;br /&gt;
* [[Sending Patches]]&lt;br /&gt;
* [[Code Conventions]]&lt;br /&gt;
* Adding a module&lt;br /&gt;
* Using [[Documentation:Hacker&#039;s Guide/libvlc|libvlc]]&lt;br /&gt;
* Bindings&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=FFmpeg&amp;diff=12230</id>
		<title>FFmpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=FFmpeg&amp;diff=12230"/>
		<updated>2008-07-31T09:18:11Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{website|FFmpeg|http://ffmpeg.sourceforge.net/}}&lt;br /&gt;
{{open}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FFmpeg&#039;&#039;&#039; is an [[open source]] library for [[encoding]] and [[decoding]] different types of media files, generally [[MPEG]] and MPEG-based files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FFmpeg supports lots of [[codec]]s: the main ones are included on the codecs page. If you want the full list, (including different spellings for the same codec), the [[source code]] lists them all (theres way to many to list them all here ;-). In [http://trac.videolan.org/vlc/browser/modules/codec/avcodec/fourcc.h modules/codec/avcodec/fourcc.h] look under &#039;&#039;Codec fourcc -&amp;gt; ffmpeg_id mapping&#039;&#039; (that bit changes the codecs you type in to vlc to ffmpeg&#039;s internal codec names).&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
{{file|modules/codec/avcodec/fourcc.h|codec}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Libraries]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=FFmpeg&amp;diff=12229</id>
		<title>FFmpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=FFmpeg&amp;diff=12229"/>
		<updated>2008-07-31T09:17:10Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{website|FFmpeg|http://ffmpeg.sourceforge.net/}}&lt;br /&gt;
{{open}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FFmpeg&#039;&#039;&#039; is an [[open source]] library for [[encoding]] and [[decoding]] different types of media files, generally [[MPEG]] and MPEG-based files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FFmpeg supports lots of [[codec]]s: the main ones are included on the codecs page. If you want the full list, (including different spellings for the same codec), the [[source code]] lists them all (theres way to many to list them all here ;-). In [http://trac.videolan.org/vlc/file/trunk/modules/codec/avcodec/fourcc.h modules/codec/avcodec/fourcc.h] look under &#039;&#039;Codec fourcc -&amp;gt; ffmpeg_id mapping&#039;&#039; (that bit changes the codecs you type in to vlc to ffmpeg&#039;s internal codec names).&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
{{file|modules/codec/avcodec/fourcc.h|codec}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Libraries]]&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Talk:SoC_2008/WinCE_Port&amp;diff=12175</id>
		<title>Talk:SoC 2008/WinCE Port</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Talk:SoC_2008/WinCE_Port&amp;diff=12175"/>
		<updated>2008-07-23T08:54:07Z</updated>

		<summary type="html">&lt;p&gt;Geal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ll be watching this as I&#039;ve always used the WinCE port for my Dell Axim x3 Windows Mobile 2003 device. Good luck ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I too will be keeping an eye on this project. I can&#039;t get the old port to run at all on my WM2003SE iPaq - it just does nothing. It&#039;s a shame really. I absolutely &#039;&#039;need&#039;&#039;  a video player that does OGG Theora! [[User:KevinLange|KevinLange]] 17:05, 31 May 2008 (CEST) (update: I got the even more unofficial port to open, but it doesn&#039;t play videos and is just plain &amp;quot;not good&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
Thank you, I&#039;ll work hard to get a working version soon :) --[[User:Geal|Geal]] 13:56, 2 June 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Progress? ==&lt;br /&gt;
&lt;br /&gt;
Midterm evaluations have come and gone. Any progress to report?&lt;br /&gt;
[[User:KevinLange|KevinLange]] 21:59, 16 July 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Now the LibVLC compiles without any problem, and I&#039;m adding plugins. I could play some music on my phone, it&#039;s beginning to work :)&lt;br /&gt;
For now, I work on the interface, but I&#039;m not really changing the look and feel. That will be for the end of the summer. I&#039;ll soon add the video output, and then, I may need some intensive testing :) --[[User:Geal|Geal]] 10:54, 23 July 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>Geal</name></author>
	</entry>
</feed>