Difference between revisions of "Hacker Guide"
Jump to navigation
Jump to search
m (Using a parser function called rel2abs to rewrite links as /subpage) |
m (Demote headings) |
||
Line 1: | Line 1: | ||
− | = Introduction | + | == Introduction == |
{{VLC}} is a very popular, but quite large and complex piece of software.<br /> | {{VLC}} is a very popular, but quite large and complex piece of software.<br /> | ||
Line 13: | Line 13: | ||
A very good introduction to VLC can also be found on (an archived copy of the site) [//web.archive.org/web/20141204234622/http://www.enjoythearchitecture.com/vlc-architecture.html enjoythearchitecture]. | A very good introduction to VLC can also be found on (an archived copy of the site) [//web.archive.org/web/20141204234622/http://www.enjoythearchitecture.com/vlc-architecture.html enjoythearchitecture]. | ||
− | = The layers of VLC and libVLC | + | == The layers of VLC and libVLC == |
− | == VLC's Core / libVLCcore | + | === VLC's Core / libVLCcore === |
The most important (and probably most complex) part of VLC is the core, located in src/ in the repository. | The most important (and probably most complex) part of VLC is the core, located in src/ in the repository. | ||
Line 29: | Line 29: | ||
*[[{{#rel2abs:/VLM Internals}}|VLM Internals]] | *[[{{#rel2abs:/VLM Internals}}|VLM Internals]] | ||
− | == Plugins / Modules | + | === Plugins / Modules === |
[[{{#rel2abs:/How To Write a Module}}|How to write a VLC module]]. | [[{{#rel2abs:/How To Write a Module}}|How to write a VLC module]]. | ||
− | === Input === | + | ==== Input ==== |
*[[{{#rel2abs:/Access}}|Access]] | *[[{{#rel2abs:/Access}}|Access]] | ||
** An access module provides a byte stream from a location string [[MRL]], like support for files, HTTP streams, webcams... | ** An access module provides a byte stream from a location string [[MRL]], like support for files, HTTP streams, webcams... | ||
Line 45: | Line 45: | ||
** A decoder takes an elementary stream and convert into raw video, audio or text data, reading for output. | ** A decoder takes an elementary stream and convert into raw video, audio or text data, reading for output. | ||
− | === Audio === | + | ==== Audio ==== |
*[[{{#rel2abs:/Audio Filters}}|Audio Filters]] | *[[{{#rel2abs:/Audio Filters}}|Audio Filters]] | ||
*[[{{#rel2abs:/Audio Output}}|Audio Output]] | *[[{{#rel2abs:/Audio Output}}|Audio Output]] | ||
− | === Video === | + | ==== Video ==== |
*[[{{#rel2abs:/Video Filters}}|Video Filters]] | *[[{{#rel2abs:/Video Filters}}|Video Filters]] | ||
Line 56: | Line 56: | ||
*[[{{#rel2abs:/Video Output}}|Video Output]] | *[[{{#rel2abs:/Video Output}}|Video Output]] | ||
− | === Interfaces === | + | ==== Interfaces ==== |
*[[{{#rel2abs:/Interfaces}}|Interfaces]] | *[[{{#rel2abs:/Interfaces}}|Interfaces]] | ||
− | === Modules types not documented (yet) === | + | ==== Modules types not documented (yet) ==== |
− | ==== Misc ==== | + | ===== Misc ===== |
*[[{{#rel2abs:/Visualization}}|Visualization]] | *[[{{#rel2abs:/Visualization}}|Visualization]] | ||
*[[{{#rel2abs:/Packetizers}}|Packetizers]] | *[[{{#rel2abs:/Packetizers}}|Packetizers]] | ||
− | ==== Streaming output ==== | + | ===== Streaming output ===== |
*[[{{#rel2abs:/Encoder}}|Encoder]] | *[[{{#rel2abs:/Encoder}}|Encoder]] | ||
*[[{{#rel2abs:/Mux}}|Mux]] | *[[{{#rel2abs:/Mux}}|Mux]] | ||
Line 70: | Line 70: | ||
*[[{{#rel2abs:/Access Output}}|Access Output]] | *[[{{#rel2abs:/Access Output}}|Access Output]] | ||
− | == libVLC and bindings == | + | === libVLC and bindings === |
*Using [[{{#rel2abs:/libvlc}}|libvlc]] | *Using [[{{#rel2abs:/libvlc}}|libvlc]] | ||
*bindings | *bindings | ||
− | = VLC source code overview | + | == VLC source code overview == |
*[[{{#rel2abs:/VLC source tree}}]] | *[[{{#rel2abs:/VLC source tree}}]] | ||
Line 82: | Line 82: | ||
*[[{{#rel2abs:/Playlist}}|VLC Playlist and Media Library]] | *[[{{#rel2abs:/Playlist}}|VLC Playlist and Media Library]] | ||
− | = Coding for VLC | + | == Coding for VLC == |
*[[Patch]]ing | *[[Patch]]ing | ||
Line 93: | Line 93: | ||
*[[Strings]] | *[[Strings]] | ||
− | = User Experience | + | == User Experience == |
*[[Playback States]] | *[[Playback States]] | ||
− | = Testing | + | == Testing == |
*[[Test Suite]] | *[[Test Suite]] | ||
− | = Mozilla plugins = | + | == Mozilla plugins == |
* [[Plugins/Mozilla|Plugins in Mozilla]] | * [[Plugins/Mozilla|Plugins in Mozilla]] | ||
{{Hacker_Guide}} | {{Hacker_Guide}} |
Revision as of 05:35, 29 March 2019
Contents
Introduction
VLC media player is a very popular, but quite large and complex piece of software.
It uses a large number of 3rd party libraries.
VLC development is open source, and then a large community of developers worldwide contribute to it.
However, entering a project such as VLC media player can be long and complex for new developers.
This guide seeks to help understanding the VLC code base and VLC internals to quickly get up to speed.
NB: this guide is not about compiling VLC.
A very good introduction to VLC can also be found on (an archived copy of the site) enjoythearchitecture.
The layers of VLC and libVLC
VLC's Core / libVLCcore
The most important (and probably most complex) part of VLC is the core, located in src/ in the repository.
- Introduction to the core
- This is a MUST-READ for developers.
- VLC modules loading
- How the numerous VLC modules work and are loaded.
- Input
- How the main input chain works (slightly outdated)
- VLC Object Management
- VLC variables
- VLM Internals
Plugins / Modules
Input
- Access
- An access module provides a byte stream from a location string MRL, like support for files, HTTP streams, webcams...
- Demuxer
- A demux module parses a byte stream and splits it into elementary streams (tracks).
- Access-Demuxer
- 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's used where the bytestream abstraction is inadequate.
- Stream Filters
- 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.
- Decoder
- A decoder takes an elementary stream and convert into raw video, audio or text data, reading for output.
Audio
Video
Interfaces
Modules types not documented (yet)
Misc
Streaming output
libVLC and bindings
- Using libvlc
- bindings
VLC source code overview
- Hacker Guide/VLC source tree
- Hacker Guide/Modules source tree
- VLC Preferences
- VLC Playlist and Media Library
Coding for VLC
- Patching
- Sending Patches
- Code Conventions
- Adding a module
- Documentation:Unicode
- Doxygen Documentation
- C Types
- Strings
User Experience
Testing
Mozilla plugins
This page is part of official VLC media player Documentation (User Guide • Streaming HowTo • Hacker Guide • Modules)
Please read the Documentation Editing Guidelines before you edit the documentation
Please read the Documentation Editing Guidelines before you edit the documentation
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.