Files
veejay/vevo-1.0
Niels Elburg 608524258e frozen vevo to 1.0
git-svn-id: svn://code.dyne.org/veejay/trunk@462 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
2005-11-02 15:05:28 +00:00
..
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00
2005-11-02 15:05:28 +00:00

----------------------------------- 
Vevo  - VeEjay Video Objects 
-----------------------------------

Introduction
------------

During the last couple of years we have been observing a blooming
development in the field of realtime video software for the Linux/GNU
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 library 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.


What about Livido ?!
---------------------

VeVo is not Livido but was proposed as an alternative solution (libvido) 
Here is a short summary on the differences between the two systems.


					VEVO		Livido
Generic datastructures			 + 		  -	
Strict datastructures			 - 		  +
Datafields can be added without		 + 	          - 
breaking binary compatibility			
Scaling/Conversion of parameters	 +		  -
Input/Output data arranged by 'Ports'    +                -
Header only (interface definition)	 -		  +
Requires library			 +                -


Vevo allows parameter values to be of any type ( double, int, char*, boolean )
and it can convert between numeric values. 
This allows for host defined (graphical) presentation of plugin controls,
the parameter hint sytem can be used to 'identify' a parameter
(for example, PARAM_HINT_RGBA ) and scale its values to,
for example webbased notation or simply in the range of 0-255.
  
Another option vevo allows is to use different type specifiers for
image data (signed vs. unsigned, different bytedepths).
However, there are no conversion functions for those yet.

Also, vevo simplifies both host and plugin implementation.

When using vevo, the init() method of the plugin should always
initialize the DEFAULT values for each parameter.
This allows the Host to setup its own default values , or
it can simply use a library function to intialize a current value
for the plugin to use.
Future versions of Vevo may include an expression evaluation function to
calculate new parameter values (decrement/increment STEP or 
PAGE size). If host does handle parameters, it should keep them
in boundaries (MIN/MAX). 
 

 
Vevo package structure
----------------------

	src/		: vevo library source       
	include/	: vevo interface definition
	test		: vevo test cases
	examples	: vevo host example
	plugins		: vevo plugin collection


Main features:

	o	Simple to write plugins
	o	Cross platform (POSIX.1b) (C99 compatible)
	 	tested on x86 and MIPS
 	o	Support for multi input/output channels
	o	Support for multi input/output parameters
	o	Support for both RT and NLE applications
	o	Support for Parameter scaling/interpretation
	o	Uses hint system to describe plugin behaviour/requirements.
	o	Plugins are binary compatible
	o	New properties can be added without breaking binary compatibility.
	o	Library is REENTRANT

Know more:
	o	Browse the source
		(see include/libvevo.h , plugins/*)
	o	Create Doxygen code documentation with  
		$ doxygen doc/config
	o	ChangeLog

To get the latest vevo version from the repository , use the command:

$ svn checkout svn://dyne.org/veejay/trunk/vevo-current

The user/development mailinglist is

	veejay-libvevo@lists.sourceforge.net     





License:
----------------------

Vevo is free software, released under the (revised) BSD license