source: README @ b09a0e

Revision b09a0e, 8.7 KB checked in by Jaromil <jaromil@…>, 15 months ago (diff)

documentation for a new release

  • Property mode set to 100644
Line 
1
2   ___________              ._________
3   \_   _____/______   ____ |__\   _  \_______
4    |    __) \_  __ \_/ __ \|  /  /_\  \_  __ \
5    |     \   |  | \/\  ___/|  \  \_/   \  | \/
6    \___  /   |__|    \___  >__|\_____  /__|
7        \/                \/          \/
8
9  Minimalistic plugin API for video effects  v.1.3
10
11http://frei0r.dyne.org              by the Piksel Developers Union
12
13
14Table of Contents
15=================
16Introduction
17    What Frei0r is
18    What Frei0r is not
19    Current status
20    Code gallery
21    History
22Download
23    Source code
24        Build dependencies
25    Debian / Ubuntu
26    Apple / OSX
27Documentation
28    API explanation
29    C++ Filter example
30Communication
31Acknowledgments
32
33
34Introduction
35~~~~~~~~~~~~~
36
37
38What Frei0r is
39===============
40
41Frei0r is a minimalistic plugin API for video effects.
42
43The main emphasis  is on simplicity for an API that  will round up the
44most common video effects into simple filters, sources and mixers that
45can be controlled by parameters.
46
47It's our hope that this way these simple effects can be shared between
48many  applications,  avoiding   their  reimplementation  by  different
49projects.
50
51What Frei0r is not
52===================
53
54Frei0r is not meant as a competing standard to more ambitious efforts
55that try to satisfy the needs of many different applications and more
56complex effects.
57
58It is not meant as a generic API for all kinds of video applications,
59as it doesn't provides things like an extensive parameter mechanism or
60event handling.
61
62Eventually the frei0r API can be wrapped by higher level APIs
63expanding its functionalities (for instance as GStreamer, MLT, FFmpeg
64and others do).
65
66Current status
67===============
68
69
70If you like to  peek in what's boiling in the pot,  have a look at our
71TODO
72
73Developers  are sporadically  contributing and  we are  happy  if more
74people like to get involved, so let us know about your creations! Code
75and  patches  are  well  accepted,   get  in  touch  with  us  on  the
76mailinglist.
77
78
79Code gallery
80=============
81 
82You might want to look at the code in frei0r more in detail, then
83browse the existing effects by visiting the Frei0r plugin gallery
84online.
85
86
87History
88========
89
90Frei0r has been around since 2004, born from yearly brainstormings
91held at the Piksel conference with the participation of various free
92and open source video software developers.
93
94It is mostly adopted on GNU/Linux and OSX platforms, counts more than
9580 effects implemented and is used by free video applications as
96PureData, Open Movie Editor, DVEdit, Gephex, LiVES, FreeJ, MÞB,
97VeeJay, MLT and KDEnLive among the others.
98
99Wikipedia page about Frei0r: http://en.wikipedia.org/wiki/Frei0r
100
101
102[Piksel]: http://www.piksel.no
103[PureData]: http://www.artefacte.org/pd/
104[Open  Movie  Editor]: http://openmovieeditor.sourceforge.net/
105[DVEdit]: http://www.freenet.org.nz/dvedit
106[Gephex]: http://www.gephex.org/
107[LiVES]: http://lives.sf.net
108[FreeJ]: http://freej.dyne.org
109[MÞB]: http://mob.bek.no/
110[VeeJay]: http://veejayhq.net
111[MLT]: http://www.mltframework.org/
112[KDEnLive]: http://www.kdenlive.org/
113
114
115Download
116~~~~~~~~~
117
118Source code
119============
120
121Stable frei0r releases are packaged periodically and distributed on
122
123 ftp://ftp.dyne.org/frei0r
124
125We encourage the unauthorized mirroring of this source repository by
126all those interested, using the command
127
128 rsync -Pr rsync.dyne.org::frei0r .
129
130Frei0r sourcecode is released under the terms of the GNU General
131Public License and, eventually other compatible Free Software
132licenses.
133
134The latest source for frei0r plugins can be attained using our
135revisioning system *GIT*
136
137 git clone git://code.dyne.org/frei0r.git
138
139Some clones made by developers are also found on github, but basically
140we coalesce around this repository online to pack releases. Make sure
141to get in touch with our mailinglist if you like to see your code in
142there.
143
144Build dependencies
145-------------------
146
147 + GNU autotools ( ./configure && make )
148   or
149 + CMake ( cmake . && make )
150
151Frei0r can be built on GNU/Linux, M$/Windows and Apple/OSX platforms,
152possibly in even more environments like embedded devices/
153
154* Optional Dependencies
155 
156  + [Gavl] ( required for scale0tilt and vectorscope filters )
157    [Gavl]: http://gmerlin.sourceforge.net
158
159  + [OpenCV] (required for facebl0r filter )
160    [OpenCV]: http://opencvlibrary.sourceforge.net
161
162Debian / Ubuntu
163================
164
165Binary packages  are mantained  for Debian ([QA])  and Ubuntu  ([pkg]), to
166install the stable version distributed use *apt-get* or *synaptic*:
167
168 sudo apt-get install frei0r-plugins
169
170
171 [QA]: http://packages.qa.debian.org/f/frei0r.html
172 [pkg]: http://packages.ubuntu.com/search?searchon=names&keywords=frei0r
173
174Apple / OSX
175============
176
177[MacPorts] provide ready  to install packages for OSX:  in case you have
178this packaging system installed, you  just need to open a terminal and
179give the following command:
180
181sudo port install frei0r-plugins
182
183[MacPorts]: http://www.macports.org
184
185
186Documentation
187~~~~~~~~~~~~~~
188If you  are new to frei0r (but  not to programming) the  best thing is
189probably to  have a look at  the [frei0r header], which  is quite simple
190and well documented, or the doxygen code documentation in doc/
191
192
193API explanation
194================
195
196While  the main  source of  documentation for  the Frei0r  API  is the
197header, the  sourcecode is  well commented so  you can study  its full
198[doxyfied documentation] online.
199
200[doxyfied documentation]: http://frei0r.dyne.org/codedoc/html
201
202
203C++ Filter example
204===================
205
206A simple skeleton for a frei0r video filter looks like this:
207
208
209  #include <frei0r.hpp>
210 
211  typedef struct {
212    int16_t w, h;
213    uint8_t bpp;
214    uint32_t size;
215  } ScreenGeometry;
216 
217  class MyExample: public frei0r::filter {
218  public:
219    MyExample(int wdt, int hgt);
220    ~MyExample();
221    virtual void update();
222  private:
223    ScreenGeometry geo;
224    void _init(int wdt, int hgt);
225  }
226 
227  MyExample::MyExample() { /* constructor */ }
228  MyExample::~MyExample() { /* destructor */ }
229 
230  void MyExample::_init(int wdt, int hgt) {
231    geo.w = wdt;
232    geo.h = hgt;
233    geo.bpp = 32; // this filter works only in RGBA 32bit
234    geo.size = geo.w*geo.h*(geo.bpp/8); // calculate the size in bytes
235  }
236 
237  void MyExample::update() {
238    // we get video input via buffer pointer (void*)in
239    uint32_t *src = (uint32_t*)in;
240    // and we give video output via buffer pointer (void*)out
241    uint32_t *dst = (uint32_t*)out;
242    // this example here does just a copy of input to output
243    memcpy(dst, src, geo.size);
244  }
245   
246  frei0r::construct<MyExample>
247          plugin("MyExample", "short and simple description for my example",
248                 "Who did it", 1, 0);
249
250
251
252Communication
253~~~~~~~~~~~~~~
254
255You  can get  in touch  with our  developer community,  send  your new
256effects and share your intentions with us.
257
258We have a  free mailinglist open to subscription  on [frei0r-devel] with
259[public archives] that are also [searchable and indexed] online.
260
261For   effective   and   indexed   bug   reporting   regarding   plugin
262implementations  and platform  builds,  here is  a publicly  available
263[issue tracker].
264
265
266[frei0r-devel]: https://piksel.no/mailman/listinfo/frei0r-devel
267[public archives]: http://piksel.no/pipermail/frei0r-devel/
268[searchable and indexed]: http://blog.gmane.org/gmane.comp.video.frei0r.devel
269[issue tracker]: http://www.piksel.no/projects/frei0r/report
270
271Acknowledgments
272~~~~~~~~~~~~~~~~
273
274
275Frei0r is the result of a collective effort in coordination with
276several software developers meeting at [Piksel] between 2003 and 2005
277to find a common standard for video effect plugins to be used among
278their applications: Andraz Tori (Cinelerra/CVS), Daniel Fischer
279(Pakt/GStreamet), Denis Jaromil Rojo (FreeJ/Dyne), Gabriel "Salsaman"
280Finch (LiVES), Kentaro Fukuchi (EffecTV), Niels Elburg (VeeJay),
281Øyvind Kolås (Gegl/Babl/Gimp), Tom Schouten (PDP/PureData), Georg
282Seidel, Martin Bayer and Phillip Promesberger (Gephex).
283
284
285We first aimed at the realisation of a comprehensive specification for
286dynamically loaded plugins named LiViDO, which then spawned two
287implementations: one being Frei0r, a minimalistic implementation
288contributed by the Gephex team and the other one being the WEED
289implementation by LiVES developer Salsaman, sporting more features for
290GUI integration and scriptability.
291
292
293Within the span of a few years, the minimalistic approach of *frei0r*
294has been widely adopted among more applications and became a *de-facto
295standard*.  Maintenance and further refinements were contributed by
296Carlo Prelz (MÞB/BEK), Richard Spindler (Open Movie Editor) and Dan
297Dennedy (MLT/KDEnLive), while Debian/Ubuntu packaging and build system
298standardization were taken care of by dyne.org developers Filippo
299Giunchedi and Luca Bigliardi.
300
301---------------------------------------------------------------------
302
303
Note: See TracBrowser for help on using the repository browser.