During the last couple of years we have been observing a blooming development in the field of realtime video software for the GNU/Linux platform. An increasing number of artists and other users are exploring the possibilities of several unique software packages for video editing, mixing and effect processing. The question arises here how we (the developers) balance the growing number of features against complexity, (re)usability and manageability of larger scale software design.
As users, we choose our applications because their features fit our purposes , as developers we serve the needs of the users who want an increasing number of features added to our applications while we should focus on flexible core engines and program frameworks.
An elegant solution to this problem is to provide the Free Software community with a flexible architecture that allows a shared pool of video plugins. This brings a number of benefits:
- we can give designers of plugins the opportunity to develop their (video) processing algorithms without the distraction of resolving interface problems;
- we can share a set of unique plugins among a great number of programs;
- we can give the user the opportunity to control at least some aspects of the features they want.
The LiViDO architects will provide a lightweight, flexible API based upon these established technologies. Currently, they are in the process of creating a plug-in architecture useful for video editing -mixing, and modular effect processing.
The API will deliberately be kept short and simple; to achieve compatibility with a wide range of promising GNU/Linux video software packages it is required to find the greatest common divisor in their logical behaviour.
The API attempts to give programmers the ability to write simple plugin video processors in C/C++ and link them dynamically with a range of software packages (called hosts). It should be possible for any host and any plugin to communicate through this interface.
Plugins will reside in shared object files (*.so in GNU/Linux), suitable for dynamic linking by dlopen() and family. The file will provide a number of plugin types that can be used to instantiate actual plugins so they can be connected to perform these tasks.
Livido has been in development since 2003 , the first API that reached a consensus was published in October 2005, during Piksel 2005 Arround the same time in October, a more ambitious effort of Livido was forked as WEED by Gabriel "Salsaman" Finch, which currently serves as a plugin system for LiVES. Meanwhile, Niels Elburg has implemented Livido's main specification in Veejay-NG and has already released a small number of Livido plugins. This year at Piksel, an attempt will be made to reunify Livido and Weed by means of a wrapper, also some minor inconviences and shortcomings of the current Livido API will be discussed to consolidate the Livido API into version 1.1
Livido's API specification can be found at: http://livido.dyne.org/trac.cgi/wiki/TechnicalSpecCurrent http://livido.dyne.org
the WEED specification can be found at: http://lives.cvs.sourceforge.net/lives/lives/weed-docs/
Livido developers are: Gabriel "Salsaman" Finch, Niels Elburg, Dennis "Jaromil" Rojo, Daniel Fischer, Martin Bayer, Kentaro Fukuchi and Andraz Tori.