Warning, /multimedia/kdenlive/data/effects/README.md is written in an unsupported language. File is not indexed.

0001 # Effects (and Transitions)
0002 
0003 Kdenlive uses MLT for all video/audio effects/filters.
0004 For filters that provide metadata the GUI can be generated automatically.
0005 If the generated GUI is not sufficient a custom one can be build using a XML
0006 file describing the effect and its parameters.
0007 
0008 ## Important notes
0009 * Effects can be blacklisted in `kdenlive/data/blacklisted_effects.txt`. All effects with a custom XML GUI need to be blacklisted
0010 
0011 * Effects can be added to "Main effects" list in `kdenlive/data/preferred_effects.txt`
0012 
0013 * Effects can be assigned to an effect category in `kdenlive/data/kdenliveeffectscategory.rc`.
0014 
0015 * Kdenlive parses the effect folder at each startup, so that if you have an XML file describing a new effect,
0016 just copy it to your `~/.kde/share/apps/kdenlive/effects/` folder and restart Kdenlive to enable the new effect.
0017 
0018 ## The basic structure of a XML filter description:
0019 ```xml
0020 01 <!DOCTYPE kpartgui>
0021 02 <effect tag="mlt_filter" id="mlt_filter_custom1">
0022 03      <name>Filter name</name>
0023 04      <description>Filter the image</description>
0024 05      <author>Anon</author>
0025 06      <parameter type="constant" name="amount" default="10" min="0" max="1000" factor="1000">
0026 07              <name>Amount of filtering</name>
0027 08      </parameter>
0028 09      <parameter type="bool" name="enable" default="0">
0029 10              <name>Enable</name>
0030 11      </parameter>
0031 15 </effect>
0032 ```
0033 
0034 Line 1:
0035 * required to make strings used in the effect translatable (see [here](https://api.kde.org/frameworks/ki18n/html/prg_guide.html))
0036 
0037 Line 2:
0038 
0039 | tag name     | description    |
0040 | :------------| :------------- |
0041 | `tag`        | MLT ("mlt_service") name of the effect (see [MLT Docs](https://www.mltframework.org/docs/)) |
0042 | `id`         | internal kdenlive id, can be anything, but must be unique for each effect |
0043 | `type`       |  _(default = `"video"`)_ whether effect modifies video or audio (use `"audio"` then) |
0044 | `unique`     | _(default = `"0"`)_ this effect cannot be attached multiple times to one clip (speed, fades, ...) |
0045 | `version`    | _(optional)_ minimum version of the effect required to be available (works only if the MLT filter provides the necessary metadata) |
0046 | `dependency` | _(optional)_ ) MLT ("mlt_service") name of an effect or composition this asset depends on. If the dependency is not available this asset will not be available in Kdenlive too|
0047 
0048 Line 3:
0049 * name of the effect that will appear to the user
0050 
0051 Line 4:
0052 * Short description of the effect to be shown in the effects list
0053 * Additionally a <full> part can be added inside. It's content will be available in the effect stack (see [frei0r_lightgraffiti.xml](frei0r_lightgraffiti.xml) for an example):
0054   * supports HTML formatting (requires the use of CDATA)
0055 
0056 Line 5:
0057 * name of the author(s) of the filter (not of the XML file ;))
0058 
0059 The rest:
0060 
0061 ### list of tags for `<parameter>...</parameter>`
0062 
0063 | tag name  | description    |
0064 | :-------- | :------------- |
0065 | `name`    | visible name of the parameter (depending on the GUI this parameter uses) |
0066 | `comment` | _(optional)_ description of the parameter (support HTML formatting) (not yet supported by all widgets) |
0067 
0068 ### list of attributes for `<parameter ...>`
0069 | attribute name | description    |
0070 | :------------- | :------------- |
0071 | `name`         | MLT filter parameter name |
0072 | `paramprefix`  | a string to be prepended to the parameter value before passing it to MLT |
0073 | `suffix`       | a string to be appended to the parameter (for UI display only) |
0074 | `min`          | the minimal accepted value |
0075 | `max`          | the maximal accepted value |
0076 | `visualmin`    | the minimal value displayed in timeline keyframes (can be > than min) |
0077 | `visualmax`    | the maximal value displayed in timeline keyframes (can be < than max) |
0078 | `default`      | initial value, format depends on parameter type |
0079 | `value`        |  |
0080 | `optional`     | if it is set, it means that this parameter can have an empty value. So then loading a project, don't set its value to default |
0081 | `type`         | widget (GUI) to use. See section below for possible values
0082 
0083 For double values these placeholders are available:
0084 
0085 | placeholder            | description |
0086 | :--------------------- | :---------- |
0087 | `%maxWidth `           | width of the current profile  |
0088 | `%maxHeight`           | height of the current profile |
0089 | `%width`               | synonym for `%maxWidth` |
0090 | `%height`              | synonym for `%maxHeight` |
0091 | `%contentWidth`        | width of the target clip |
0092 | `%contentHeight`       | height of the target clip |
0093 | `%fittedContentWidth`  | width of the target clip scaled to fit current profile |
0094 | `%fittedContentHeight` | height of the target clip scaled to fit current profile |
0095 | `%out`                 | the out position of the current item |
0096 | `%fade"`               | the default fade duration (can be configured by the user) |
0097 
0098 
0099 
0100 #### values for attribute `type`
0101 
0102 ##### `"fixed"`
0103 * sets a (MLT filter) parameter, but does not expose it to the user (no GUI)
0104 
0105 ##### `"constant"`
0106 * number
0107 * represented by a slider
0108 * ###### additional parameter attributes:
0109 | attribute name | description    |
0110 | :------------- | :------------- |
0111 | `factor`       | _(optional)_ values coming from MLT will be multiplied with factor |
0112 | `offset`       | _(optional)_ will be added to values coming from MLT after `factor` is applied |
0113 | `min`          | smallest value possible (after multiplying with `factor`) |
0114 | `max`          | largest value possible (after multiplying with `factor`)  |
0115 | `suffix`       | _(optional)_ displayed unit of the value
0116 
0117 
0118 ##### `"double"`
0119 * synonym for `"constant"`
0120 
0121 
0122 ##### `"bool"`
0123 * true/false
0124 * represented by a checkbox
0125 
0126 
0127 ##### `"switch"`
0128 * 2 possible options defined by strings (max / min)
0129 * represented by a checkbox
0130 
0131 
0132 ##### `"list"`
0133 * multiple choice
0134 * represented by a drop-down menu
0135 * ###### additional parameter attributes:
0136 | attribute name | description    |
0137 | :------------- | :------------- |
0138 | `paramlist`    | list of possible values separated by semicolon (no whitespaces!). Special keyword `%lumaPaths` available to show files in the applications luma directories |
0139 * ###### additional tags:
0140 | tag name           | description    |
0141 | :----------------- | :------------- |
0142 | `paramlistdisplay` | _(optional)_ list of names to use for the values separated by comma |
0143 
0144 
0145 ##### `"position"`
0146 * time stored as frame number
0147 * represented by a slider
0148 
0149 
0150 ##### `"color"`
0151 * color value, similar to representation HTML (`"#rrggbb"`/`"#aarrggbb"` or `"0xrrggbbaa"`)
0152 * represented by a button opening the KDE color dialog + a color picker button
0153 * ###### additional attributes:
0154 | attribute name | description    |
0155 | :------------- | :------------- |
0156 | `alpha`       | _(default = `"0"`)_ use to enable alpha support |
0157 
0158 
0159 ##### `"keyframe"`
0160 * keyframable number
0161 * keyframes are opt-in (only one keyframe by default -> should be preferred over "constant" whenever possible)
0162 * works with MLT filters that utilize start/end values
0163 * same attributes as "constant"
0164 * ###### additional attributes:
0165 | attribute name | description    |
0166 | :------------- | :------------- |
0167 | `factor`       | _(optional)_ values coming from MLT will be multiplied with factor |
0168 | `intimeline`   | _(default = `"0"`)_ parameter to preselect for editing in the timeline (only one parameter can have `"1"`) |
0169 | `widget`       | _(optional)_ GUI based on the standard keyframe GUI (possible values: `"corners"`) |
0170 
0171 
0172 ##### `"simplekeyframe"`
0173 * works with MLT filters that use mlt_geometry for keyframe support (includes all frei0r filters)
0174 * same attributes as "keyframe"
0175 
0176 
0177 ##### `"geometry"`
0178 * a rectangle: position + dimension + additional value
0179 * works with MLT filters using mlt_geometry
0180 * the rect can be edited on the project monitor
0181 * ###### additional attributes:
0182 | attribute name | description    |
0183 | :------------- | :------------- |
0184 | `fixed`        | _(default = `"0"`)_ use to disable keyframe support |
0185 | `showrotation` | _(default = `"0"`)_ use to enable support to 3 axis rotation |
0186 | `opacity`      | _(default = `"true"`)_ use to disable support of the opacity setting |
0187 
0188 You can set `default` to `"adjustcenter"`  to adjust the geometry to the frame size
0189 
0190 
0191 ##### `"url"`
0192 * url/path
0193 * represented by button to open "file open" dialog
0194 * ###### additional attributes:
0195 | attribute name | description    |
0196 | :------------- | :------------- |
0197 | `filter`       | Filter for file extensions. Example : `"*.cpp *.cc *.C\|C++ Source Files\n*.h *.H\|Header files"` or as using MIME type: `"image/png text html"` |
0198 | `mode`         | _(optional)_ Default is empty = open. `"save"` means none-exsisting files can be selected and gui label is "save"
0199 
0200 <!-- Attention if you see this comment (i.e. your editor does not support markdown), note that the string above is probably not show right. Please consider "*.cpp *.cc *.C|C++ Source Files\n*.h *.H|Header" to be right -->
0201 
0202 
0203 ##### `"urllist"`
0204 * url/path
0205 * represented by button to open "file open" dialog (like `url`) but in addition the file can be selected from a predefined list (like `"list"`) and it has support for KNewStuff (e.g. https://store.kde.org)
0206 * ###### additional attributes:
0207 | attribute name | description    |
0208 | :------------- | :------------- |
0209 | `filter`       | Filter for file extensions. Example : `"Source Files (*.cpp *.cc *.C);;Header files (*.h *.H)"` (warning: this format is different to `url`!) |
0210 | `newstuff` | _(optional)_ KNewStuff config file (usually placed in `kdenlive/data` and added to to `kdenlive/src/uiresources.qrc` so the value looks like `":data/kdenlive_wipes.knsrc"`). If this is empty no download button is shown|
0211 | `paramlist`    | list of possible values separated by semicolon (no whitespaces!). Special keywords `%lumaPaths` and `%lutPaths` are available to show files in the applications luma/lut directories |
0212 * ###### additional tags:
0213 | tag name         | description    |
0214 | :--------------- | :------------- |
0215 | `paramlistdisplay` | _(optional)_ list of names to use for the values separated by comma |
0216 
0217 ##### `"wipe"`
0218 * special GUI for the wipe transition makes it possible to select a direction of a slide
0219 
0220 
0221 ##### `"curve"`
0222 * cubic curve editor for the frei0r color curves filter (old version)
0223 
0224 
0225 ##### `"bezier_spline"`
0226 * cubic Bézier spline editor for the frei0r color curves filter (new version, might be reused for other filters)
0227 
0228 
0229 ##### `"roto-spline"`
0230 * GUI for the rotoscoping filter (spline on the monitor)
0231 
0232 
0233 ##### `"keywords"`
0234 * Text entry with a selection of possible keywords to be inserted in the text.
0235 * ###### additional tags:
0236 | attribute name | description    |
0237 | :------------- | :------------- |
0238 | `keywords` | list of possible keyword values separated by semicolon |
0239 | `keywordsdisplay` | list of names to use for the values separated by semicolon |
0240 
0241 
0242 ##### `"fontfamily"`
0243 * Font typeface entry
0244 
0245 
0246 ##### `"readonly"`
0247 * Data (usually an animated geometry) that can be pasted to clipboard or dragged/dropped on another geometry parameter. Cannot be modified directly by user.