<?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=Manas.marthi</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=Manas.marthi"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Manas.marthi/"/>
	<updated>2026-11-04T15:51:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=31235</id>
		<title>Hacker Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide&amp;diff=31235"/>
		<updated>2016-09-25T06:57:48Z</updated>

		<summary type="html">&lt;p&gt;Manas.marthi: removed deadlink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction  =&lt;br /&gt;
&lt;br /&gt;
{{VLC}} is a very popular, but quite large and complex piece of software.&amp;lt;br /&amp;gt;&lt;br /&gt;
It uses a large number of [[Contrib Status|3rd party libraries]]. &lt;br /&gt;
&lt;br /&gt;
VLC development is open source, and then a large community of developers worldwide contribute to it.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, entering a project such as {{VLC}} can be long and complex for new developers. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;guide&#039;&#039;&#039; seeks to help understanding the VLC code base and VLC internals to quickly get up to speed.&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;NB: this guide is &#039;&#039;&#039;not&#039;&#039;&#039; about [[Compile|compiling]] VLC.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= The layers of VLC and libVLC  =&lt;br /&gt;
&lt;br /&gt;
== VLC&#039;s Core / libVLCcore  ==&lt;br /&gt;
&lt;br /&gt;
The most important (and probably most complex) part of VLC is the core, located in src/ in the repository. &lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Core|Introduction to the core]]&lt;br /&gt;
** This is a &#039;&#039;&#039;MUST-READ&#039;&#039;&#039; for developers. &lt;br /&gt;
*[[Documentation:VLC Modules Loading|VLC modules loading]]&lt;br /&gt;
** How the numerous VLC modules work and are loaded.&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Input|Input]]&lt;br /&gt;
** How the main input chain works (slightly outdated)&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Object Management|VLC Object Management]]&lt;br /&gt;
*[[Hacker Guide/Variables|VLC variables]]&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/VLM Internals|VLM Internals]]&lt;br /&gt;
&lt;br /&gt;
== Plugins / Modules  ==&lt;br /&gt;
&lt;br /&gt;
[[Documentation:Hacker&#039;s Guide/Module Writers Guide|How to write a VLC module]].&lt;br /&gt;
&lt;br /&gt;
=== Input === &lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Access|Access]] &lt;br /&gt;
** An access module provides a byte stream from a location string [[MRL]], like support for files, HTTP streams, webcams...&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Demux|Demuxer]]&lt;br /&gt;
** A demux module parses a byte stream and splits it into [http://en.wikipedia.org/wiki/Elementary_stream elementary streams] (tracks).&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Access Demux|Access-Demuxer]]&lt;br /&gt;
** An access_demux module combines the functionality of access and demux (and bypass any stream filters), splitting elementary streams directly from a location string. It&#039;s used where the bytestream abstraction is inadequate.&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Stream Filters|Stream Filters]]&lt;br /&gt;
** A stream filter module converts a byte stream into another byte stream. It could be used for file or byte stream decryption, as it is already used for decompression (gzip, Bzip2, XZ) and multi-part files.&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Decoder|Decoder]]&lt;br /&gt;
** A decoder takes an elementary stream and convert into raw video, audio or text data, reading for output.&lt;br /&gt;
&lt;br /&gt;
=== Audio === &lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Audio Filters|Audio 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;
&lt;br /&gt;
=== Video ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Video Filters|Video Filters]] &lt;br /&gt;
**[[Documentation:Hacker&#039;s Guide/Video Filters/Deinterlace|Deinterlace]]&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Video Output|Video Output]]&lt;br /&gt;
&lt;br /&gt;
=== Interfaces ===&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Interfaces|Interfaces]]&lt;br /&gt;
&lt;br /&gt;
=== Modules types not documented (yet) ===&lt;br /&gt;
==== Misc ====&lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Visualization|Visualization]] &lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Packetizers|Packetizers]]&lt;br /&gt;
&lt;br /&gt;
==== Streaming output ====&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/Stream Output|Stream Output]] &lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Access Output|Access Output]]&lt;br /&gt;
&lt;br /&gt;
== libVLC and bindings ==&lt;br /&gt;
&lt;br /&gt;
*Using [[Documentation:Hacker&#039;s Guide/libvlc|libvlc]] &lt;br /&gt;
*bindings&lt;br /&gt;
&lt;br /&gt;
= VLC source code overview  =&lt;br /&gt;
&lt;br /&gt;
*[[VLC source tree]] &lt;br /&gt;
*[[Modules source tree]] &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;
&lt;br /&gt;
= Coding for VLC  =&lt;br /&gt;
&lt;br /&gt;
*[[Patches|Patching]] &lt;br /&gt;
*[[Sending Patches]] &lt;br /&gt;
*[[Code Conventions]] &lt;br /&gt;
*[[Documentation:Hacker&#039;s Guide/Module Writers Guide|Adding a module]] &lt;br /&gt;
*[[Documentation:Unicode]] &lt;br /&gt;
*[http://www.videolan.org/developers/vlc/doc/doxygen/html/ Doxygen Documentation] &lt;br /&gt;
*[[C Types]] &lt;br /&gt;
*[[Strings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Testing  =&lt;br /&gt;
&lt;br /&gt;
*[[Test Suite]]&lt;br /&gt;
&lt;br /&gt;
= Mozilla plugins =&lt;br /&gt;
&lt;br /&gt;
* [[Plugins/Mozilla|Plugins in Mozilla]]&lt;br /&gt;
&lt;br /&gt;
{{Hacker_Guide}}&lt;/div&gt;</summary>
		<author><name>Manas.marthi</name></author>
	</entry>
</feed>