diff options
| -rw-r--r-- | AUTHORS | 37 | ||||
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | README | 319 | ||||
| -rw-r--r-- | web/TODO.org | 12 | ||||
| -rw-r--r-- | web/index.org | 55 |
5 files changed, 383 insertions, 46 deletions
@@ -1,15 +1,24 @@ -BEK - Bergen Senter for Elektronisk Kunst <[email protected]> -Jean-Sebastien Senecal ([email protected]) + +Project initiated at the Piksel Festival in 2005 +hosted by BEK - Bergen Senter for Elektronisk Kunst + +Developers who contributed, in alphabetic order: + +Albert Frisch +Dan Dennedy +Denis Jaromil Roio +Filippo Giunchedi +Gabriel Finch +Georg Seidel +Hedde Bosman +Jean-Sebastien Senecal +Joshua M. Doe +Luca Bigliardi +Maksim Golovkin (Максим Головкин) +Marko Cebokli +Martin Bayer Mathieu Guindon -Georg Seidel <[email protected]> -Martin Bayer <[email protected]> -Richard Spindler <[email protected]> -Albert Frisch <[email protected]> -Dan Dennedy <[email protected]> -Gabriel Finch <[email protected]> -Jaromil <[email protected]> -Marko Cebokli <[email protected]> -Hedde Bosman <[email protected]> -Maksim Golovkin <[email protected]> -Luca Bigliardi <[email protected]> -Joshua M. Doe <[email protected]> +Phillip Promesberger +Richard Spindler +Simon Eugster + @@ -1 +1,5 @@ -See the Changes @section in include/frei0r.h or git log. + +*** See the Changes @section in include/frei0r.h or git log + +*** Follows git --log output: + @@ -1,24 +1,313 @@ -frei0r - a minimalistic plugin API for video effects -It is a minimalistic plugin API for video sources and filters. The behaviour of -the effects can be controlled from the host by simple parameters. The intent is -to solve the recurring reimplementation or adaptation issue of standard effects. + ___________ ._________ + \_ _____/______ ____ |__\ _ \_______ + | __) \_ __ \_/ __ \| / /_\ \_ __ \ + | \ | | \/\ ___/| \ \_/ \ | \/ + \___ / |__| \___ >__|\_____ /__| + \/ \/ \/ -It is not meant as a generic API for all kinds of video applications. + Minimalistic plugin API for video effects v.1.2 -There is no support for the requirements of special application areas like non -linear editors, hardware accelerated shader effects, and high precision video -processing. These advanced issues are not even solved satisfactory for non cross -application plugin apis and are still an evolving field. + by the Piksel Developers Union -The frei0r API is not meant to be a competing standard to more ambitious -efforts. -http://www.piksel.org/frei0r/ +Table of Contents +================= +Introduction + What Frei0r is + What Frei0r is not + Current status + Code gallery + History +Download + Source code + Build dependencies + Debian / Ubuntu + Apple / OSX +Documentation + API explanation + C++ Filter example +Communication +Acknowledgments +Introduction +~~~~~~~~~~~~~ -Optional Dependencies: -gavl, required for scale0tilt and vectorscope plugin, available at http://gmerlin.sourceforge.net/ -OpenCV, required for facedetect plugin, available at http://opencvlibrary.sourceforge.net/ +What Frei0r is +=============== + +Frei0r is a minimalistic plugin API for video effects. + +The main emphasis is on simplicity for an API that will round up the +most common video effects into simple filters, sources and mixers that +can be controlled by parameters. + +It's our hope that this way these simple effects can be shared between +many applications, avoiding their reimplementation by different +projects. + +What Frei0r is not +=================== + +Frei0r is not meant as a competing standard to more ambitious efforts +that try to satisfy the needs of many different applications and more +complex effects. + +It is not meant as a generic API for all kinds of video applications, +as it doesn't provides things like an extensive parameter mechanism or +event handling. + +Eventually the frei0r API can be wrapped by higher level APIs +expanding its functionalities (for instance as GStreamer, MLT, FFmpeg +and others do). + +Current status +=============== + + +If you like to peek in what's boiling in the pot, have a look at our +[TODO] + +Developers are sporadically contributing and we are happy if more +people like to get involved, so let us know about your creations! Code +and patches are well accepted, get in touch with us on the +mailinglist. + + +[TODO]: file:TODO + +Code gallery +============= + +You might want to look at the code in frei0r more in detail, then +browse the existing effects by visiting the [Frei0r plugin gallery]. + + +[Frei0r plugin gallery]: /gallery + +History +======== + +Frei0r has been around since 2006, born from yearly brainstormings +held at the [Piksel] conference with the participation of various free +and open source video software developers. + +It is mostly adopted on GNU/Linux and OSX platforms, counts more than +80 effects implemented and is used by free video applications as +[PureData], [Open Movie Editor], [DVEdit], [Gephex], [LiVES], [FreeJ], [MøB], +[VeeJay], [MLT] and [KDEnLive] among the others. + +Find our more on the [Wikipedia page about Frei0r]. + + + +[Piksel]: http://www.piksel.no +[PureData]: http://www.artefacte.org/pd/ +[Open Movie Editor]: http://openmovieeditor.sourceforge.net/ +[DVEdit]: http://www.freenet.org.nz/dvedit +[Gephex]: http://www.gephex.org/ +[LiVES]: http://lives.sf.net +[FreeJ]: http://freej.dyne.org +[MøB]: http://mob.bek.no/ +[VeeJay]: http://veejayhq.net +[MLT]: http://www.mltframework.org/ +[KDEnLive]: http://www.kdenlive.org/ +[Wikipedia page about Frei0r]: http://en.wikipedia.org/wiki/Frei0r + +Download +~~~~~~~~~ + +Source code +============ + +Stable frei0r releases are packaged periodically and distributed on + + [ftp://ftp.dyne.org/frei0r] + +We encourage the unauthorized mirroring of this source repository by +all those interested, using the command + + rsync -Pr rsync.dyne.org::frei0r . + +Frei0r sourcecode is released under the terms of the GNU General +Public License and, eventually other compatible Free Software +licenses. + +The latest source for frei0r plugins can be attained using our +revisioning system *GIT* + + git clone git://code.dyne.org/frei0r.git + +Daily snapshots are on the FTP and on [www.piksel.no/frei0r/snapshot] + + +[www.piksel.no/frei0r/snapshot]: http://www.piksel.no/frei0r/snapshot/ + +Build dependencies +------------------- + + + GNU autotools ( ./configure && make ) + or + + CMake ( cmake . && make ) + +Frei0r can be built on GNU/Linux, M$/Windows and Apple/OSX platforms, +possibly in even more environments. + +* Optional Dependencies + + + [Gavl] ( required for scale0tilt and vectorscope filters ) + + [OpenCV] (required for facebl0r filter ) + + + + [Gavl]: http://gmerlin.sourceforge.net/ + [OpenCV]: http://opencvlibrary.sourceforge.net/ + +Debian / Ubuntu +================ + +Binary packages are mantained for Debian ([QA]) and Ubuntu ([pkg]), to +install the stable version distributed use *apt-get* or *synaptic*: + + sudo apt-get install frei0r-plugins + + + [QA]: http://packages.qa.debian.org/f/frei0r.html + [pkg]: http://packages.ubuntu.com/search?searchon=names&keywords=frei0r + +Apple / OSX +============ + +[MacPorts] provide ready to install packages for OSX: in case you have +this packaging system installed, you just need to open a terminal and +give the following command: + +sudo port install frei0r-plugins + + +[MacPorts]: http://www.macports.org + +Documentation +~~~~~~~~~~~~~~ + +If you are new to frei0r (but not to programming) the best thing is +probably to have a look at the [frei0r header], which is quite simple +and well documented + + +[frei0r header]: /codedoc/html/frei0r_8h-source.html + +API explanation +================ + +While the main source of documentation for the Frei0r API is the +header, the sourcecode is well commented so you can study its full +[doxyfied documentation] online. + + +[doxyfied documentation]: http://frei0r.dyne.org/codedoc/html + +C++ Filter example +=================== + +A simple skeleton for a frei0r video filter looks like this: + + + #include <frei0r.hpp> + + typedef struct { + int16_t w, h; + uint8_t bpp; + uint32_t size; + } ScreenGeometry; + + class MyExample: public frei0r::filter { + public: + MyExample(int wdt, int hgt); + ~MyExample(); + virtual void update(); + private: + ScreenGeometry geo; + void _init(int wdt, int hgt); + } + + MyExample::MyExample() { /* constructor */ } + MyExample::~MyExample() { /* destructor */ } + + void MyExample::_init(int wdt, int hgt) { + geo.w = wdt; + geo.h = hgt; + geo.bpp = 32; // this filter works only in RGBA 32bit + geo.size = geo.w*geo.h*(geo.bpp/8); // calculate the size in bytes + } + + void MyExample::update() { + // we get video input via buffer pointer (void*)in + uint32_t *src = (uint32_t*)in; + // and we give video output via buffer pointer (void*)out + uint32_t *dst = (uint32_t*)out; + // this example here does just a copy of input to output + memcpy(dst, src, geo.size); + } + + frei0r::construct<MyExample> + plugin("MyExample", "short and simple description for my example", + "Who did it", 1, 0); + +Communication +~~~~~~~~~~~~~~ + +You can get in touch with our developer community, send your new +effects and share your intentions with us. + +We have a free mailinglist open to subscription on [frei0r-devel] with +[public archives] that are also [searchable and indexed] online. + +For effective and indexed bug reporting regarding plugin +implementations and platform builds, here is a publicly available +[issue tracker]. + + +[frei0r-devel]: https://piksel.no/mailman/listinfo/frei0r-devel +[public archives]: http://piksel.no/pipermail/frei0r-devel/ +[searchable and indexed]: http://blog.gmane.org/gmane.comp.video.frei0r.devel +[issue tracker]: http://www.piksel.no/projects/frei0r/report + +Acknowledgments +~~~~~~~~~~~~~~~~ + + +Frei0r is the result of a collective effort in coordination with +several software developers meeting at [Piksel] between 2003 and 2005 to +find a common standard for video effect plugins to be used among their +applications: Andraz Tori (Cinelerra/CVS), Daniel Fischer +(Pakt/GStreamet), Denis Jaromil Rojo (FreeJ/Dyne), Gabriel "Salsaman" +Finch (LiVES), Kentaro Fukuchi (EffecTV), Niels Elburg (VeeJay), +Øyvind Kolås (Gegl/Babl/Gimp), Tom Schouten (PDP/PureData), Georg +Seidel, Martin Bayer and Phillip Promesberger (Gephex). + + +We first aimed at the realisation of a comprehensive specification for +dynamically loaded plugins named [LiViDO], which then spawned two +implementations: one being Frei0r, a minimalistic implementation +contributed by the Gephex team and the other one being the [WEED] +implementation by LiVES developer Salsaman, sporting more features for +GUI integration and scriptability. + + +Within the span of a few years, the minimalistic approach of *frei0r* +has been widely adopted among more applications and became a *de-facto +standard*. Maintenance and further refinements were contributed by +Carlo Prelz (MøB/BEK), Richard Spindler (Open Movie Editor) and Dan +Dennedy (MLT/KDEnLive), while Debian/Ubuntu packaging and build system +standardization were taken care of by dyne.org developers Filippo +Giunchedi and Luca Bigliardi. + +--------------------------------------------------------------------- + +[Piksel]: http://www.piksel.no +[LiViDO]: http://livido.dyne.org/codedoc/ +[WEED]: http://lives.cvs.sourceforge.net/lives/lives/weed-docs/ + diff --git a/web/TODO.org b/web/TODO.org index 5abf762..177d0a8 100644 --- a/web/TODO.org +++ b/web/TODO.org @@ -22,6 +22,10 @@ * Welcome hackers! +The Frei0r mailinglist is the first step to get in touch with us: the +one we use is [[https://piksel.no/mailman/listinfo/frei0r-devel][frei0r-devel]] and it has [[http://piksel.no/pipermail/frei0r-devel/][public archives]] that are also +[[http://blog.gmane.org/gmane.comp.video.frei0r.devel][searchable and indexed]] online. + The bugtracker we are currently using is [[http://www.piksel.no/projects/frei0r/report][the Piksel trac]], have a look there and, if you know how to report a bug, please open a new issue and give it as many details as you can. @@ -30,7 +34,7 @@ Here below are outlined some open issues in the development flow, they range from /bugfixing/ tasks to /specification updates/ and /documentation/. -* GNU code +* Port existing code Porting new Effects from existing collections should be easy, for instance there is a lot of code to be ported from [[http://effectv.sf.net/][EffecTV]], the [[http://demo-effects.sourceforge.net/][Demo @@ -67,8 +71,6 @@ with new issues coming up. It might be also useful to confront it with the specification drafted in [[http://livido.dyne.org/codedoc/][LiViDO]], which provides a broader case-study, and other standards adopted in [[http://gstreamer.freedesktop.org/documentation/][GStreamer]]. - - * Documentation ** Screenshots @@ -80,6 +82,6 @@ are screenshots or maybe short video renderings of plugins in action. ** TODO Trac spam -We should fix the trac on piksel.org or install a new bugtracker like -[[http://flyspray.org][flyspray]]. +We should fix the trac on piksel.org, install a new bugtracker like +[[http://flyspray.org][flyspray]] or use the mantis already up at [[http://bugs.dyne.org][bugs.dyne.org]]. diff --git a/web/index.org b/web/index.org index b73cc00..51e5465 100644 --- a/web/index.org +++ b/web/index.org @@ -9,10 +9,12 @@ #+INFOJS_OPT: toc:nil localtoc:nil view:content sdepth:2 mouse:underline buttons:nil #+INFOJS_OPT: home:http://frei0r.dyne.org -#+LATEX_HEADER: \documentclass[final,a4paper,10pt,onecolumn,twoside]{memoir} +#+LATEX_CLASS: book-1column + #+LATEX_HEADER: \usepackage[english]{babel} #+LATEX_HEADER: \usepackage{amsfonts, amsmath, amssymb} #+LATEX_HEADER: \usepackage{ucs} +#+LATEX_HEADER: \usepackage{listings} #+LATEX_HEADER: \usepackage[utf8x]{inputenc} #+LATEX_HEADER: \usepackage[T1]{fontenc} #+LATEX_HEADER: \usepackage{hyperref} @@ -21,14 +23,13 @@ #+LATEX_HEADER: \usepackage{lmodern} - * Introduction #+HTML: <div id="logo"><img src="http://www.piksel.no/piksel08/piksel/images/piksel_penquin_transparant.png"></div> ** What Frei0r is -This is frei0r - a minimalistic plugin API for video effects. +Frei0r is a minimalistic plugin API for video effects. The main emphasis is on simplicity for an API that will round up the most common video effects into simple filters, sources and mixers that @@ -40,12 +41,17 @@ projects. ** What Frei0r is not -This is not meant as a competing standard to more ambitious efforts -that try to satisfy the needs of many different applications and more +Frei0r is not meant as a competing standard to more ambitious efforts +that try to satisfy the needs of many different applications and more complex effects. -Eventually the frei0r API can be wrapped by higher level APIs -expanding its functionalities (for instance, gstreamer does). +It is not meant as a generic API for all kinds of video applications, +as it doesn't provides things like an extensive parameter mechanism or +event handling. + +Eventually the frei0r API can be wrapped by higher level APIs +expanding its functionalities (for instance as GStreamer, MLT, FFmpeg +and others do). ** Current status @@ -58,7 +64,7 @@ expanding its functionalities (for instance, gstreamer does). #+END_HTML: If you like to peek in what's boiling in the pot, have a look at our -[[file:TODO.php][TODO page]]. +[[file:TODO][TODO]] Developers are sporadically contributing and we are happy if more people like to get involved, so let us know about your creations! Code @@ -88,13 +94,40 @@ Find our more on the [[http://en.wikipedia.org/wiki/Frei0r][Wikipedia page about ** Source code -The latest source for frei0r plugins can be attained using our +Stable frei0r releases are packaged periodically and distributed on + + ftp://ftp.dyne.org/frei0r + +We encourage the unauthorized mirroring of this source repository by +all those interested, using the command + + rsync -Pr rsync.dyne.org::frei0r . + +Frei0r sourcecode is released under the terms of the GNU General +Public License and, eventually other compatible Free Software +licenses. + +The latest source for frei0r plugins can be attained using our revisioning system *GIT* : git clone git://code.dyne.org/frei0r.git -Daily snapshots are also packed ready to "./configure; make" on -[[http://www.piksel.no/frei0r/snapshot/][www.piksel.no/frei0r/snapshot]] +Daily snapshots are on the FTP and on [[http://www.piksel.no/frei0r/snapshot/][www.piksel.no/frei0r/snapshot]] + +*** Build dependencies + + + GNU autotools ( ./configure && make ) + or + + CMake ( cmake . && make ) + +Frei0r can be built on GNU/Linux, M$/Windows and Apple/OSX platforms, +possibly in even more environments. + +**** Optional Dependencies + + + [[http://gmerlin.sourceforge.net/][Gavl]] ( required for scale0tilt and vectorscope filters ) + + [[http://opencvlibrary.sourceforge.net/][OpenCV]] (required for facebl0r filter ) + ** Debian / Ubuntu |

