[vlc-devel] Re: Writing VLC interface plug-in

Olivier Teulière ipkiss at via.ecp.fr
Sat Feb 7 10:14:47 CET 2004

On Sat, Feb 07, 2004, Sooyoung wrote:
> I'm trying to write a simple GUI interface plug-in (for practice. I'll
> try write a more complicated one later), but the "VideoLAN Client API
> Documentation" on the web does not provide much information.
> Specifically, 'section 2.7 How to write an interface plugin' is only a
> half-page long and I cannot find 'plugins' directory at all. Could
> anyone provide some general instructions? I've just downloaded and
> compiled "VLC source code tarball (0.7.0)" on Cygwin under Windows
> environment.

You are right, the developer documentation is quite outdated on many
aspects. Until now, noody as volunteered to write a new one :)

First of all, the existing GUI modules can be found in ./modules/gui/*.
The ones that work on windows are 'wxwindows', 'skins' and 'skins2'
(perhaps also 'gtk', but it's not maintained anymore)

An interface module (graphical or not) is made of 3 entry functions and
a module description:
 * The module description, made of macros, declares the capabilities
   of the module (interface, in this case) with their priority, the
   module description as it will appear in the preferences of GUI
   modules that implement them, some configuration variables specific
   to the module, shortcuts, sub-modules, etc.
 * The 'Open' function is called by VLC to initialize the module The
 * 'Run' function really does the job of the interface module
   (waiting for user input and displaying info)
 * The 'Close' function is called by VLC to uninitialize the module
   (basically, this consists in destroying whatever have been
   allocated by 'Open')

These 3 functions take a vlc_object_t* as argument (which may need to be
cast into a intf_thread_t* depending on your needs). This structure is
often needed as a parameter for exported VLC functions, such as msg_Err,
msg_Warn, ...

See examples of use in existing modules. The GUI ones are not very easy
to understand, since they are quite big. I suggest to start digging into
a non-graphical interface module first (they can be found in
./modules/control/*), mainly the 'hotkeys' one.

Do not hesitate to ask further questions on this mailing-list, or on


This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html
If you are in trouble, please contact <postmaster at videolan.org>

More information about the vlc-devel mailing list