frei0r: Update frei0r interface specification to 1.2

This commit is contained in:
Sebastian Dröge 2010-09-24 22:47:01 +02:00
parent addf308add
commit bf74bcc1af

View file

@ -40,6 +40,11 @@
* *
* @section sec_changes Changes * @section sec_changes Changes
* *
* @subsection sec_changes_1_1_1_2 From frei0r 1.1 to frei0r 1.2
* - make <vendor> in plugin path optional
* - added section on FREI0R_PATH environment variable
* - added requirement to initialize all parameters in f0r_construct()
*
* @subsection sec_changes_1_0_1_1 From frei0r 1.0 to frei0r 1.1 * @subsection sec_changes_1_0_1_1 From frei0r 1.0 to frei0r 1.1
* *
* - added specifications for plugin locations * - added specifications for plugin locations
@ -79,7 +84,7 @@
* - /home/martin/.frei0r-1/lib/martin/test.so * - /home/martin/.frei0r-1/lib/martin/test.so
* *
* Like in these examples plugins should be placed in "vendor" subdirs * Like in these examples plugins should be placed in "vendor" subdirs
* to reduce name clashes. * to reduce name clashes. However, <vendor> is optional and may be left blank.
* *
* @subsection sec_order Plugin Loading Order * @subsection sec_order Plugin Loading Order
* *
@ -95,6 +100,16 @@
* *
* The order of loading plugins inside each of the directories * The order of loading plugins inside each of the directories
* 1, 2, and 3 is not defined. * 1, 2, and 3 is not defined.
*
* @subsection sec_path FREI0R_PATH Environment Variable
*
* If the environment variable FREI0R_PATH is defined, then it shall be
* considered a colon separated list of directories which replaces the
* default list.
*
* For example:
*
* FREI0R_PATH=/home/foo/frei0r-plugins:/usr/lib/frei0r-1:/etc/frei0r
*/ */
/** /**
@ -173,7 +188,7 @@
/** \file /** \file
* \brief This file defines the frei0r api, version 1.1. * \brief This file defines the frei0r api, version 1.2.
* *
* A conforming plugin must implement and export all functions declared in * A conforming plugin must implement and export all functions declared in
* this header. * this header.
@ -195,7 +210,7 @@
/** /**
* The frei0r API minor version * The frei0r API minor version
*/ */
#define FREI0R_MINOR_VERSION 1 #define FREI0R_MINOR_VERSION 2
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -240,7 +255,7 @@ void f0r_deinit();
* by their significance in an uint32_t value. * by their significance in an uint32_t value.
* *
* For effects that work on the color components, * For effects that work on the color components,
* RGBA8888 is the recommended color model for frei0r-1.1 effects. * RGBA8888 is the recommended color model for frei0r-1.2 effects.
* For effects that only work on pixels, PACKED32 is the recommended * For effects that only work on pixels, PACKED32 is the recommended
* color model since it helps the application to avoid unnecessary * color model since it helps the application to avoid unnecessary
* color conversions. * color conversions.
@ -449,8 +464,9 @@ typedef void* f0r_instance_t;
* Constructor for effect instances. The plugin returns a pointer to * Constructor for effect instances. The plugin returns a pointer to
* its internal instance structure. * its internal instance structure.
* *
* The resolution has to be an integer multiple of 8, * The resolution must be an integer multiple of 8,
* must be greater than 0 and be at most 2048 in both dimensions. * must be greater than 0 and be at most 2048 in both dimensions.
* The plugin must set default values for all parameters in this function.
* *
* \param width The x-resolution of the processed video frames * \param width The x-resolution of the processed video frames
* \param height The y-resolution of the processed video frames * \param height The y-resolution of the processed video frames
@ -481,6 +497,13 @@ typedef void* f0r_param_t;
* effect instance. Validity of the parameter pointer is handled by the * effect instance. Validity of the parameter pointer is handled by the
* application thus the data must be copied by the effect. * application thus the data must be copied by the effect.
* *
* Furthermore, if d an update event/signal is needed in a host
* application to notice when parameters have changed, this should be
* implemented inside its own update() call. The host application
* would presumably need to store the current value as well to see if
* it changes; to make this thread safe, it should store a copy of the
* current value in a struct which uses instance as a key.
*
* \param instance the effect instance * \param instance the effect instance
* \param param pointer to the parameter value * \param param pointer to the parameter value
* \param param_index index of the parameter * \param param_index index of the parameter
@ -551,7 +574,7 @@ void f0r_update(f0r_instance_t instance,
* \param inframe2 the second incoming video frame * \param inframe2 the second incoming video frame
(can be zero for sources and filters) (can be zero for sources and filters)
* \param inframe3 the third incoming video frame * \param inframe3 the third incoming video frame
(can be zero for sources, filters and mixer3) (can be zero for sources, filters and mixer2)
* \param outframe the resulting video frame * \param outframe the resulting video frame
* *
* \see f0r_update * \see f0r_update