LiVES  2.8.9
effects-weed.h
Go to the documentation of this file.
1 // effects-weed.h
2 // LiVES (lives-exe)
3 // (c) G. Finch 2005 - 2016 <salsaman@gmail.com>
4 // Released under the GPL 3 or later
5 // see file ../COPYING for licensing details
6 
7 #ifndef HAS_LIVES_EFFECTS_WEED_H
8 #define HAS_LIVES_EFFECTS_WEED_H
9 
11 typedef enum {
33 
37 
38 typedef enum {
43 
44 #ifndef WEED_PLANT_LAYER
45 #define WEED_PLANT_LAYER WEED_PLANT_CHANNEL
46 #endif
47 
48 #define WEED_LEAF_TYPE "type"
49 #define WEED_LEAF_PLUGIN_INFO "plugin_info"
50 #define WEED_LEAF_FILTERS "filters"
51 #define WEED_LEAF_MAINTAINER "maintainer"
52 #define WEED_LEAF_HOST_INFO "host_info"
53 
54 // host info
55 #define WEED_LEAF_API_VERSION "api_version"
56 #define WEED_LEAF_GET_FUNC "weed_leaf_get_func"
57 #define WEED_LEAF_SET_FUNC "weed_leaf_set_func"
58 #define WEED_PLANT_NEW_FUNC "weed_plant_new_func"
59 #define WEED_PLANT_LIST_LEAVES_FUNC "weed_plant_list_leaves_func"
60 #define WEED_LEAF_NUM_ELEMENTS_FUNC "weed_leaf_num_elements_func"
61 #define WEED_LEAF_ELEMENT_SIZE_FUNC "weed_leaf_element_size_func"
62 #define WEED_LEAF_SEED_TYPE_FUNC "weed_leaf_seed_type_func"
63 #define WEED_LEAF_GET_FLAGS_FUNC "weed_leaf_get_flags_func"
64 #define WEED_LEAF_MALLOC_FUNC "weed_malloc_func"
65 #define WEED_LEAF_FREE_FUNC "weed_free_func"
66 #define WEED_LEAF_MEMSET_FUNC "weed_memset_func"
67 #define WEED_LEAF_MEMCPY_FUNC "weed_memcpy_func"
68 
69 // filter_class
70 #define WEED_LEAF_INIT_FUNC "init_func"
71 #define WEED_LEAF_DEINIT_FUNC "deinit_func"
72 #define WEED_LEAF_PROCESS_FUNC "process_func"
73 #define WEED_LEAF_DISPLAY_FUNC "display_func"
74 #define WEED_LEAF_INTERPOLATE_FUNC "interpolate_func"
75 #define WEED_LEAF_TARGET_FPS "target_fps"
76 #define WEED_LEAF_GUI "gui"
77 #define WEED_LEAF_DESCRIPTION "description"
78 #define WEED_LEAF_AUTHOR "author"
79 #define WEED_LEAF_EXTRA_AUTHORS "extra_authors"
80 #define WEED_LEAF_URL "url"
81 #define WEED_LEAF_ICON "icon"
82 #define WEED_LEAF_LICENSE "license"
83 #define WEED_LEAF_COPYRIGHT "copyright"
84 #define WEED_LEAF_VERSION "version"
85 
86 // instance
87 #define WEED_LEAF_FILTER_CLASS "filter_class"
88 #define WEED_LEAF_TIMECODE "timecode"
89 #define WEED_LEAF_FPS "fps"
90 
91 // channels / chan template
92 #define WEED_LEAF_PIXEL_DATA "pixel_data"
93 #define WEED_LEAF_WIDTH "width"
94 #define WEED_LEAF_HEIGHT "height"
95 #define WEED_LEAF_PALETTE_LIST "palette_list"
96 #define WEED_LEAF_CURRENT_PALETTE "current_palette"
97 #define WEED_LEAF_ROWSTRIDES "rowstrides"
98 #define WEED_LEAF_YUV_SUBSPACE "YUV_subspace"
99 #define WEED_LEAF_YUV_SAMPLING "YUV_sampling"
100 #define WEED_LEAF_YUV_CLAMPING "YUV_clamping"
101 #define WEED_LEAF_IN_CHANNELS "in_channels"
102 #define WEED_LEAF_OUT_CHANNELS "out_channels"
103 #define WEED_LEAF_IN_CHANNEL_TEMPLATES "in_channel_templates"
104 #define WEED_LEAF_OUT_CHANNEL_TEMPLATES "out_channel_templates"
105 #define WEED_LEAF_OFFSET "offset"
106 #define WEED_LEAF_HSTEP "hstep"
107 #define WEED_LEAF_VSTEP "vstep"
108 #define WEED_LEAF_MAXWIDTH "maxwidth"
109 #define WEED_LEAF_MAXHEIGHT "maxheight"
110 #define WEED_LEAF_OPTIONAL "optional"
111 #define WEED_LEAF_DISABLED "disabled"
112 #define WEED_LEAF_ALIGNMENT "alignment"
113 #define WEED_LEAF_TEMPLATE "template"
114 #define WEED_LEAF_PIXEL_ASPECT_RATIO "pixel_aspect_ratio"
115 #define WEED_LEAF_ROWSTRIDE_ALIGNMENT_HINT "rowstride_alignment_hint"
116 #define WEED_LEAF_MAX_REPEATS "max_repeats"
117 
118 // params / param tmpl
119 #define WEED_LEAF_IN_PARAMETERS "in_parameters"
120 #define WEED_LEAF_OUT_PARAMETERS "out_parameters"
121 #define WEED_LEAF_VALUE "value"
122 #define WEED_LEAF_FLAGS "flags"
123 #define WEED_LEAF_HINT "hint"
124 #define WEED_LEAF_GROUP "group"
125 #define WEED_LEAF_NAME "name"
126 #define WEED_LEAF_DEFAULT "default"
127 #define WEED_LEAF_MIN "min"
128 #define WEED_LEAF_MAX "max"
129 #define WEED_LEAF_IGNORE "ignore"
130 #define WEED_LEAF_NEW_DEFAULT "new_default"
131 #define WEED_LEAF_COLORSPACE "colorspace"
132 #define WEED_LEAF_IN_PARAMETER_TEMPLATES "in_parameter_templates"
133 #define WEED_LEAF_OUT_PARAMETER_TEMPLATES "out_parameter_templates"
134 #define WEED_LEAF_TRANSITION "transition"
135 #define WEED_LEAF_IS_VOLUME_MASTER "is_volume_master"
136 
137 // audio
138 #define WEED_LEAF_IS_AUDIO "is_audio"
139 #define WEED_LEAF_AUDIO_DATA "audio_data"
140 #define WEED_LEAF_AUDIO_DATA_LENGTH "audio_data_length"
141 #define WEED_LEAF_AUDIO_RATE "audio_rate"
142 #define WEED_LEAF_AUDIO_CHANNELS "audio_channels"
143 #define WEED_LEAF_AUDIO_INTERLEAF "audio_interleaf"
144 
145 // param gui
146 #define WEED_LEAF_WRAP "wrap"
147 #define WEED_LEAF_MAXCHARS "maxchars"
148 #define WEED_LEAF_LABEL "label"
149 #define WEED_LEAF_DECIMALS "decimals"
150 #define WEED_LEAF_STEP_SIZE "step_size"
151 #define WEED_LEAF_CHOICES "choices"
152 #define WEED_LEAF_USE_MNEMONIC "use_mnemonic"
153 #define WEED_LEAF_HIDDEN "hidden"
154 #define WEED_LEAF_DISPLAY_VALUE "display_value"
155 #define WEED_LEAF_COPY_VALUE_TO "copy_value_to"
156 
157 // plugin gui: layout
158 #define WEED_LEAF_LAYOUT_SCHEME "layout_scheme"
159 #define WEED_LEAF_RFX_STRINGS "rfx_strings"
160 #define WEED_LEAF_RFX_DELIM "rfx_delim"
161 
162 // plugin specific values
163 #define WEED_LEAF_PLUGIN_UNSTABLE "plugin_unstable" // plugin hint to host
164 
165 // internal values
166 #define WEED_LEAF_HOST_AUDIO_PLAYER "host_audio_player" // exported to plugins
167 
168 #define WEED_LEAF_HOST_ORIG_PDATA "host_orig_pdata" // set if we "steal" an alpha channel to chain
169 #define WEED_LEAF_HOST_MENU_HIDE "host_menu_hide" // hide from menus
170 #define WEED_LEAF_HOST_DEFAULT "host_default" // user set default
171 #define WEED_LEAF_HOST_WIDTH "host_width" // user set width
172 #define WEED_LEAF_HOST_HEIGHT "host_height" // user set height
173 #define WEED_LEAF_HOST_FPS "host_fps" // user set fps
174 #define WEED_LEAF_HOST_TAG "host_tag" // internal key mapping (for higher keys)
175 #define WEED_LEAF_HOST_KEY "host_key" // internal key mapping
176 #define WEED_LEAF_HOST_MODE "host_mode" // internal mode mapping
177 #define WEED_LEAF_HOST_INPLACE "host_inplace" // inplace effect
178 #define WEED_LEAF_HOST_DISABLED "host_disabled" // channel is disabled
179 #define WEED_LEAF_HOST_TEMP_DISABLED "host_temp_disabled" // channel is temp disabled
180 #define WEED_LEAF_HOST_REFS "host_refs" // host ref counting
181 #define WEED_LEAF_HOST_REPEATS "host_repeats" // host channel repeats
182 #define WEED_LEAF_HOST_INITED "host_inited" // inited or not
183 #define WEED_LEAF_HOST_INTERNAL_CONNECTION "host_internal_connection" // for chain plugins
184 #define WEED_LEAF_HOST_INTERNAL_CONNECTION_AUTOSCALE "host_internal_connection_autoscale" // for chain plugins
185 #define WEED_LEAF_HOST_NEXT_INSTANCE "host_next_instance" // for chain plugins
186 #define WEED_LEAF_HOST_COMPOUND_CLASS "host_compound_class" // for chain plugins
187 #define WEED_LEAF_HOST_PLUGIN_PATH "host_plugin_path" // plugin path
188 #define WEED_LEAF_HOST_HANDLE "host_handle" // dll handle
189 #define WEED_LEAF_HOST_FILTER_LIST "host_filter_list" // host usable filters
190 
191 #define WEED_LEAF_HOST_INSTANCE "host_instance" // special value for text widgets
192 #define WEED_LEAF_HOST_IDX "host_idx" // special value for text widgets
193 
194 // layer only values
195 
196 #define WEED_LEAF_CLIP "clip"
197 #define WEED_LEAF_FRAME "frame"
198 
200 weed_plant_t *weed_bootstrap_func(weed_default_getter_f *value, int num_versions, int *plugin_versions);
201 
202 weed_plant_t *get_weed_filter(int filter_idx); // TODO: make const
203 char *weed_filter_idx_get_name(int filter_idx) WARN_UNUSED;
204 char *weed_instance_get_filter_name(weed_plant_t *inst, boolean get_compound_parent) WARN_UNUSED;
205 char *make_weed_hashname(int filter_idx, boolean fullname,
206  boolean use_extra_authors) WARN_UNUSED;
207 int weed_get_idx_for_hashname(const char *hashname, boolean fullname);
208 int *weed_get_indices_from_template(const char *package_name, const char *filter_name, const char *author, int version);
209 int enabled_in_channels(weed_plant_t *plant, boolean count_repeats);
210 int enabled_out_channels(weed_plant_t *plant, boolean count_repeats);
211 weed_plant_t *get_enabled_channel(weed_plant_t *inst, int which, boolean is_in);
212 weed_plant_t *get_enabled_audio_channel(weed_plant_t *inst, int which, boolean is_in);
213 weed_plant_t *get_mandatory_channel(weed_plant_t *filter, int which, boolean is_in);
214 boolean weed_filter_is_resizer(weed_plant_t *filt);
215 boolean weed_instance_is_resizer(weed_plant_t *filt);
216 weed_plant_t *weed_instance_get_filter(weed_plant_t *inst, boolean get_compound_parent);
217 
218 #define PLUGIN_COMPOUND_EFFECTS_BUILTIN "effects/compound/"
219 #define PLUGIN_COMPOUND_EFFECTS_CUSTOM "plugins/effects/compound/"
220 
221 int num_compound_fx(weed_plant_t
222  *plant);
223 void load_compound_fx(void);
224 
225 boolean has_non_alpha_palette(weed_plant_t *ctmpl);
226 boolean has_alpha_palette(weed_plant_t *ctmpl);
227 
228 boolean is_audio_channel_in(weed_plant_t *inst, int chnum);
229 boolean has_video_chans_in(weed_plant_t *filter, boolean count_opt);
230 boolean has_audio_chans_in(weed_plant_t *filter, boolean count_opt);
231 boolean is_audio_channel_out(weed_plant_t *inst, int chnum);
232 boolean has_video_chans_out(weed_plant_t *filter, boolean count_opt);
233 boolean has_audio_chans_out(weed_plant_t *filter, boolean count_opt);
234 boolean is_pure_audio(weed_plant_t *filter_or_instance, boolean count_opt);
235 
236 boolean has_video_filters(boolean analysers_only);
237 
238 #ifdef HAS_LIVES_EFFECTS_H
239 lives_fx_cat_t weed_filter_categorise(weed_plant_t *pl, int in_channels, int out_channels);
240 lives_fx_cat_t weed_filter_subcategorise(weed_plant_t *pl, lives_fx_cat_t category, boolean count_opt);
241 boolean has_audio_filters(lives_af_t af_type);
242 #endif
243 
244 char *weed_seed_type_to_text(int seed_type);
245 char *weed_error_to_text(int error);
246 
247 boolean has_usable_palette(weed_plant_t *chantmpl);
248 int check_weed_palette_list(int *palette_list, int num_palettes, int palette);
249 
250 int weed_call_init_func(weed_plant_t *instance);
251 int weed_call_deinit_func(weed_plant_t *instance);
252 
253 char *cd_to_plugin_dir(weed_plant_t *filter);
254 boolean weed_init_effect(int hotkey);
255 void weed_deinit_effect(int hotkey);
256 weed_plant_t *weed_instance_from_filter(weed_plant_t *filter);
257 void weed_instance_ref(weed_plant_t *inst);
258 void weed_instance_unref(weed_plant_t *inst);
259 void weed_in_parameters_free(weed_plant_t *inst);
260 void weed_in_params_free(weed_plant_t **parameters, int num_parameters);
261 void add_param_connections(weed_plant_t *inst);
262 lives_filter_error_t weed_reinit_effect(weed_plant_t *inst, boolean reinit_compound);
263 void weed_reinit_all(void);
264 
265 int weed_flagset_array_count(weed_plant_t **array, boolean set_readonly);
266 
267 int num_alpha_channels(weed_plant_t *filter, boolean out);
268 
269 int num_in_params(weed_plant_t *, boolean skip_hidden, boolean skip_internal);
270 int num_out_params(weed_plant_t *);
271 weed_plant_t *weed_inst_in_param(weed_plant_t *inst, int param_num, boolean skip_hidden, boolean skip_internal);
272 weed_plant_t *weed_inst_out_param(weed_plant_t *inst, int param_num);
273 weed_plant_t *weed_filter_in_paramtmpl(weed_plant_t *filter, int param_num, boolean skip_internal);
274 weed_plant_t *weed_filter_out_paramtmpl(weed_plant_t *filter, int param_num);
275 boolean is_hidden_param(weed_plant_t *, int i);
276 int get_nth_simple_param(weed_plant_t *, int pnum);
277 int count_simple_params(weed_plant_t *);
278 weed_plant_t **weed_params_create(weed_plant_t *filter, boolean in);
279 int get_transition_param(weed_plant_t *filter, boolean skip_internal);
280 int get_master_vol_param(weed_plant_t *filter, boolean skip_internal);
281 boolean is_perchannel_multiw(weed_plant_t *param);
282 boolean has_perchannel_multiw(weed_plant_t *filter);
283 boolean weed_parameter_has_variable_elements_strict(weed_plant_t *inst, weed_plant_t *ptmpl);
284 
286 boolean interpolate_param(weed_plant_t *inst, int i, void *pchain, weed_timecode_t tc);
287 boolean interpolate_params(weed_plant_t *inst, void **pchains, weed_timecode_t tc);
288 
289 void filter_mutex_lock(int key); // 0 based key
290 void filter_mutex_unlock(int key); // 0 based key
291 
292 boolean weed_plant_serialise(int fd, weed_plant_t *plant, unsigned char **mem);
293 weed_plant_t *weed_plant_deserialise(int fd, unsigned char **mem);
294 
296 void rec_param_change(weed_plant_t *inst, int pnum);
297 
298 // copy values for "copy_value_to" params
299 int set_copy_to(weed_plant_t *inst, int pnum, boolean update);
300 
301 weed_plant_t *get_textparm();
302 
303 void weed_set_blend_factor(int hotkey); // 0 based key
304 int weed_get_blend_factor(int hotkey); // 0 based key
305 
306 void weed_memory_init(void);
307 
308 void weed_load_all(void);
309 void weed_unload_all(void);
310 int get_next_free_key(void);
311 
312 void weed_deinit_all(boolean shutdown);
313 
314 weed_plant_t *weed_apply_effects(weed_plant_t **layers, weed_plant_t *filter_map, weed_timecode_t tc, int opwidth, int opheight,
315  void ***pchains);
316 lives_filter_error_t weed_apply_instance(weed_plant_t *inst, weed_plant_t *init_event, weed_plant_t **layers,
317  int opwidth, int opheight, weed_timecode_t tc);
318 void weed_apply_audio_effects(weed_plant_t *filter_map, float **abuf, int nbtracks, int nchans, int64_t nsamps, double arate,
319  weed_timecode_t tc, double *vis);
320 void weed_apply_audio_effects_rt(float **abuf, int nchans, int64_t nsamps, double arate, weed_timecode_t tc, boolean analysers_only);
321 
322 lives_filter_error_t weed_apply_audio_instance(weed_plant_t *init_event, float **abuf, int nbtracks, int nchans, int64_t nsamps,
323  double arate, weed_timecode_t tc, double *vis);
324 
325 boolean weed_generator_start(weed_plant_t *inst, int key); // 0 based key
326 void weed_generator_end(weed_plant_t *inst);
327 boolean weed_playback_gen_start(void);
328 void weed_bg_generator_end(weed_plant_t *inst);
329 void wge_inner(weed_plant_t *inst, boolean unref);
330 
331 // layers
332 weed_plant_t *weed_layer_create_from_generator(weed_plant_t *inst, weed_timecode_t tc);
333 weed_plant_t *weed_layer_new();
334 weed_plant_t *weed_layer_new_for_frame();
335 void **weed_layer_get_pixel_data(weed_plant_t *layer);
336 int *weed_layer_get_rowstrides(weed_plant_t *layer);
337 int weed_layer_get_width(weed_plant_t *layer);
338 int weed_layer_get_height(weed_plant_t *layer);
339 int weed_layer_current_palette(weed_plant_t *layer);
340 
342 void backup_weed_instances(void);
343 void restore_weed_instances(void);
344 
346 // WARNING !! "key" here starts at 1, "mode" starts at 0
347 
348 boolean rte_key_valid(int key, boolean is_userkey);
349 boolean rte_keymode_valid(int key, int mode,
350  boolean is_userkey);
351 int rte_keymode_get_filter_idx(int key, int mode);
353 char *rte_keymode_get_filter_name(int key, int mode) WARN_UNUSED;
354 char *rte_keymode_get_plugin_name(int key, int mode) WARN_UNUSED;
355 char *rte_keymode_get_type(int key, int mode) WARN_UNUSED;
356 
357 #ifdef HAS_LIVES_EFFECTS_H
358 lives_fx_cat_t rte_keymode_get_category(int key, int mode);
359 #endif
360 
361 weed_plant_t *rte_keymode_get_instance(int key, int mode);
362 weed_plant_t *rte_keymode_get_filter(int key, int mode);
363 
364 boolean weed_delete_effectkey(int key, int mode);
365 int weed_add_effectkey(int key, const char *hashname, boolean fullname);
366 
367 int weed_add_effectkey_by_idx(int key, int idx);
368 
369 int rte_key_getmode(int key);
370 int rte_key_getmaxmode(int key);
371 
372 weed_plant_t *get_new_inst_for_keymode(int key, int mode);
373 
374 boolean rte_key_setmode(int key, int newmode);
375 
377 int rte_switch_keymode(int key, int mode, const char *hashname);
378 
379 //boolean rte_key_is_enabled(int key);
380 
382 
383 int rte_getmodespk(void) __attribute__((__pure__));
384 
385 LiVESList *weed_get_all_names(lives_fx_list_t list_type);
386 int rte_get_numfilters(boolean inc_dupes);
387 
389 // key starts at 0
390 
391 void free_key_defaults(int key, int mode);
392 void apply_key_defaults(weed_plant_t *inst, int key, int mode);
393 void write_key_defaults(int fd, int key, int mode);
394 boolean read_key_defaults(int fd, int nparams, int key, int mode, int version);
395 void set_key_defaults(weed_plant_t *inst, int key, int mode);
396 boolean has_key_defaults(void);
397 
399 // 0 based keys
400 void rte_swap_fg_bg(void);
401 
402 int rte_bg_gen_key(void) GNU_PURE;
403 
404 int rte_fg_gen_key(void) GNU_PURE;
405 
406 int rte_bg_gen_mode(void) GNU_PURE;
407 int rte_fg_gen_mode(void) GNU_PURE;
408 
410 
411 char *get_weed_display_string(weed_plant_t *inst, int pnum);
412 weed_plant_t *add_filter_deinit_events(weed_plant_t *event_list);
413 weed_plant_t *add_filter_init_events(weed_plant_t *event_list, weed_timecode_t tc);
414 void deinit_render_effects(void);
415 
416 boolean write_filter_defaults(int fd, int idx);
417 boolean read_filter_defaults(int fd);
418 
419 boolean write_generator_sizes(int fd, int idx);
420 boolean read_generator_sizes(int fd);
421 
422 int step_val(int val, int step);
423 
424 void set_param_gui_readwrite(weed_plant_t *inst);
425 void set_param_gui_readonly(weed_plant_t *inst);
426 
427 void weed_add_plant_flags(weed_plant_t *plant, int flags);
428 
429 void update_host_info(weed_plant_t *inst);
430 
432 void fill_param_vals_to(weed_plant_t *param, weed_plant_t *ptmpl, int fill_slot);
433 
434 // some general utilities
435 
436 #define WEED_PLANT_IS_PLUGIN_INFO(plant) (weed_get_plant_type(plant) == WEED_PLANT_PLUGIN_INFO ? 1 : 0)
437 #define WEED_PLANT_IS_HOST_INFO(plant) (weed_get_plant_type(plant) == WEED_PLANT_HOST_INFO ? 1 : 0)
438 #define WEED_PLANT_IS_FILTER_CLASS(plant) (weed_get_plant_type(plant) == WEED_PLANT_FILTER_CLASS ? 1 : 0)
439 #define WEED_PLANT_IS_FILTER_INSTANCE(plant) (weed_get_plant_type(plant) == WEED_PLANT_FILTER_INSTANCE ? 1 : 0)
440 #define WEED_PLANT_IS_CHANNEL(plant) (weed_get_plant_type(plant) == WEED_PLANT_CHANNEL ? 1 : 0)
441 #define WEED_PLANT_IS_CHANNEL_TEMPLATE(plant) (weed_get_plant_type(plant) == WEED_PLANT_CHANNEL_TEMPLATE ? 1 : 0)
442 #define WEED_PLANT_IS_PARAMETER(plant) (weed_get_plant_type(plant) == WEED_PLANT_PARAMETER ? 1 : 0)
443 #define WEED_PLANT_IS_PARAMETER_TEMPLATE(plant) (weed_get_plant_type(plant) == WEED_PLANT_PARAMETER_TEMPLATE ? 1 : 0)
444 #define WEED_PLANT_IS_GUI(plant) (weed_get_plant_type(plant) == WEED_PLANT_GUI ? 1 : 0)
445 
447 
448 #endif
lives_fx_cat_t weed_filter_categorise(weed_plant_t *pl, int in_channels, int out_channels)
Definition: effects-weed.c:420
weed_plant_t * weed_layer_new()
Definition: effects-weed.c:1256
boolean is_audio_channel_out(weed_plant_t *inst, int chnum)
Definition: effects-weed.c:875
int weed_flagset_array_count(weed_plant_t **array, boolean set_readonly)
Definition: effects-weed.c:1374
void rte_swap_fg_bg(void)
Definition: effects-weed.c:9026
int rte_getmodespk(void) __attribute__((__pure__))
Definition: effects-weed.c:8770
boolean weed_instance_is_resizer(weed_plant_t *filt)
Definition: effects-weed.c:779
int * weed_layer_get_rowstrides(weed_plant_t *layer)
Definition: effects-weed.c:10081
weed_plant_t ** weed_params_create(weed_plant_t *filter, boolean in)
Definition: effects-weed.c:6255
boolean has_audio_filters(lives_af_t af_type)
Definition: effects-weed.c:3985
int rte_key_getmaxmode(int key)
returns highest mode which is set
Definition: effects-weed.c:8684
void deinit_render_effects(void)
Definition: effects-weed.c:7204
void wge_inner(weed_plant_t *inst, boolean unref)
deinit instance(s) for generator
Definition: effects-weed.c:6043
weed_plant_t * get_mandatory_channel(weed_plant_t *filter, int which, boolean is_in)
for FILTER_CLASS
Definition: effects-weed.c:742
lives_fx_cat_t
Definition: effects.h:17
Definition: effects-weed.h:12
boolean has_audio_chans_in(weed_plant_t *filter, boolean count_opt)
Definition: effects-weed.c:853
void weed_add_plant_flags(weed_plant_t *plant, int flags)
Definition: effects-weed.c:148
int step_val(int val, int step)
Definition: effects-weed.c:622
int weed_layer_get_width(weed_plant_t *layer)
Definition: effects-weed.c:10086
boolean is_hidden_param(weed_plant_t *, int i)
Definition: effects-weed.c:7871
LiVESList * weed_get_all_names(lives_fx_list_t list_type)
Definition: effects-weed.c:9043
boolean weed_delete_effectkey(int key, int mode)
unbinds a filter_class from a key/mode
Definition: effects-weed.c:8595
int weed_call_init_func(weed_plant_t *instance)
Definition: effects-weed.c:7002
int rte_fg_gen_key(void) GNU_PURE
Definition: effects-weed.c:8780
char * cd_to_plugin_dir(weed_plant_t *filter)
Definition: effects-weed.c:1422
Definition: effects-weed.h:27
int weed_general_error
Definition: effects-weed.h:446
boolean weed_playback_gen_start(void)
Definition: effects-weed.c:7665
Definition: effects-weed.h:13
weed_plant_t * rte_keymode_get_filter(int key, int mode)
returns filter_class bound to key/mode (or NULL)
Definition: effects-weed.c:8713
void load_compound_fx(void)
Definition: effects-weed.c:5781
char * get_weed_display_string(weed_plant_t *inst, int pnum)
Definition: effects-weed.c:8210
void free_key_defaults(int key, int mode)
Definition: effects-weed.c:10981
void add_param_connections(weed_plant_t *inst)
Definition: effects-weed.c:6418
boolean is_perchannel_multiw(weed_plant_t *param)
Definition: effects-weed.c:7980
int weed_add_effectkey(int key, const char *hashname, boolean fullname)
bind a filter_class to key/mode using its hashname
Definition: effects-weed.c:8977
boolean rte_key_valid(int key, boolean is_userkey)
returns TRUE if there is a filter bound to active mode of hotkey
Definition: effects-weed.c:8654
int rte_switch_keymode(int key, int mode, const char *hashname)
Definition: effects-weed.c:8984
boolean rte_key_setmode(int key, int newmode)
set mode for a given key; if key==0 then the active key is used
Definition: effects-weed.c:8837
int weed_get_idx_for_hashname(const char *hashname, boolean fullname)
fullname includes author and version
Definition: effects-weed.c:9918
weed_plant_t * get_weed_filter(int filter_idx)
Definition: effects-weed.c:10070
lives_filter_error_t weed_apply_instance(weed_plant_t *inst, weed_plant_t *init_event, weed_plant_t **layers, int opwidth, int opheight, weed_timecode_t tc)
Definition: effects-weed.c:1767
void weed_in_parameters_free(weed_plant_t *inst)
Definition: effects-weed.c:5988
boolean write_filter_defaults(int fd, int idx)
Definition: effects-weed.c:10458
Definition: effects-weed.h:24
int weed_add_effectkey_by_idx(int key, int idx)
see description
Definition: effects-weed.c:8935
int set_copy_to(weed_plant_t *inst, int pnum, boolean update)
Definition: effects-weed.c:8247
int check_weed_palette_list(int *palette_list, int num_palettes, int palette)
Definition: effects-weed.c:1080
weed_plant_t * weed_instance_from_filter(weed_plant_t *filter)
Definition: effects-weed.c:6463
int get_nth_simple_param(weed_plant_t *, int pnum)
Definition: effects-weed.c:8141
int weed_call_deinit_func(weed_plant_t *instance)
Definition: effects-weed.c:7026
void rec_param_change(weed_plant_t *inst, int pnum)
record a parameter value change in our event_list
Definition: effects-weed.c:8300
Definition: effects-weed.h:26
void apply_key_defaults(weed_plant_t *inst, int key, int mode)
Definition: effects-weed.c:10924
lives_fx_cat_t rte_keymode_get_category(int key, int mode)
Definition: effects-weed.c:8559
weed_plant_t * get_new_inst_for_keymode(int key, int mode)
get new inst (during recording playback)
Definition: effects-weed.c:8502
void weed_apply_audio_effects_rt(float **abuf, int nchans, int64_t nsamps, double arate, weed_timecode_t tc, boolean analysers_only)
Definition: effects-weed.c:3875
weed_plant_t * add_filter_init_events(weed_plant_t *event_list, weed_timecode_t tc)
Definition: effects-weed.c:1054
boolean has_audio_chans_out(weed_plant_t *filter, boolean count_opt)
Definition: effects-weed.c:915
lives_af_t
audio filter type (any, analyser only, non analyser only)
Definition: effects.h:46
weed_plant_t * rte_keymode_get_instance(int key, int mode)
returns filter_instance bound to key/mode (or NULL)
Definition: effects-weed.c:8698
void weed_generator_end(weed_plant_t *inst)
Definition: effects-weed.c:6072
boolean interpolate_param(weed_plant_t *inst, int i, void *pchain, weed_timecode_t tc)
parameter interpolation
Definition: effects-weed.c:9369
lives_filter_error_t
filter apply errors
Definition: effects-weed.h:11
boolean read_generator_sizes(int fd)
Definition: effects-weed.c:10677
void fill_param_vals_to(weed_plant_t *param, weed_plant_t *ptmpl, int fill_slot)
add default filler values to a parameter or pchange.
Definition: effects-weed.c:9089
weed_plant_t * weed_inst_in_param(weed_plant_t *inst, int param_num, boolean skip_hidden, boolean skip_internal)
Definition: effects-weed.c:8014
int rte_fg_gen_mode(void) GNU_PURE
Definition: effects-weed.c:8790
void set_param_gui_readwrite(weed_plant_t *inst)
Definition: effects-weed.c:1400
int rte_bg_gen_mode(void) GNU_PURE
Definition: effects-weed.c:8785
weed_plant_t * weed_filter_in_paramtmpl(weed_plant_t *filter, int param_num, boolean skip_internal)
Definition: effects-weed.c:8084
int get_master_vol_param(weed_plant_t *filter, boolean skip_internal)
Definition: effects-weed.c:7958
int weed_layer_current_palette(weed_plant_t *layer)
void weed_set_blend_factor(int hotkey)
Definition: effects-weed.c:8322
const char * version(void)
boolean weed_generator_start(weed_plant_t *inst, int key)
Definition: effects-weed.c:7423
_palette * palette
Definition: main.c:84
int rte_bg_gen_key(void) GNU_PURE
Definition: effects-weed.c:8775
weed_plant_t * weed_apply_effects(weed_plant_t **layers, weed_plant_t *filter_map, weed_timecode_t tc, int opwidth, int opheight, void ***pchains)
Definition: effects-weed.c:3694
void update_host_info(weed_plant_t *inst)
Definition: effects-weed.c:656
values >= 512 are info
Definition: effects-weed.h:35
boolean read_key_defaults(int fd, int nparams, int key, int mode, int version)
Definition: effects-weed.c:10811
Definition: effects-weed.h:25
weed_plant_t * get_enabled_audio_channel(weed_plant_t *inst, int which, boolean is_in)
for FILTER_INST
Definition: effects-weed.c:736
int rte_key_getmode(int key)
returns current active mode for a key (or -1)
Definition: effects-weed.c:8678
char * weed_instance_get_filter_name(weed_plant_t *inst, boolean get_compound_parent) WARN_UNUSED
Definition: effects-weed.c:8733
boolean has_usable_palette(weed_plant_t *chantmpl)
Definition: effects-weed.c:4112
void weed_deinit_effect(int hotkey)
hotkey starts at 1
Definition: effects-weed.c:7049
char * rte_keymode_get_plugin_name(int key, int mode) WARN_UNUSED
returns name of plugin package containing filter_class (or "")
Definition: effects-weed.c:8754
void weed_deinit_all(boolean shutdown)
deinit all active effects
Definition: effects-weed.c:7221
boolean weed_init_effect(int hotkey)
hotkey starts at 1
Definition: effects-weed.c:6589
char * make_weed_hashname(int filter_idx, boolean fullname, boolean use_extra_authors) WARN_UNUSED
fullname includes author and version
Definition: effects-weed.c:9861
boolean weed_parameter_has_variable_elements_strict(weed_plant_t *inst, weed_plant_t *ptmpl)
Definition: effects-weed.c:947
Definition: effects-weed.h:14
Definition: effects-weed.h:41
void weed_memory_init(void)
call weed_init() with mem functions
Definition: effects-weed.c:4849
int rte_get_numfilters(boolean inc_dupes)
Definition: effects-weed.c:9080
lives_fx_list_t
Definition: effects-weed.h:38
boolean has_video_chans_in(weed_plant_t *filter, boolean count_opt)
Definition: effects-weed.c:831
int enabled_out_channels(weed_plant_t *plant, boolean count_repeats)
Definition: effects-weed.c:4181
weed_plant_t * weed_bootstrap_func(weed_default_getter_f *value, int num_versions, int *plugin_versions)
bootstrap function for weed plugins
Definition: effects-weed.c:207
Definition: effects-weed.h:21
Definition: effects-weed.h:18
weed_plant_t * get_textparm()
Definition: effects-weed.c:8795
void filter_mutex_unlock(int key)
Definition: effects-weed.c:125
int num_in_params(weed_plant_t *, boolean skip_hidden, boolean skip_internal)
Definition: effects-weed.c:4045
void ** weed_layer_get_pixel_data(weed_plant_t *layer)
Definition: effects-weed.c:10076
int enabled_in_channels(weed_plant_t *plant, boolean count_repeats)
Definition: effects-weed.c:4122
int num_out_params(weed_plant_t *)
Definition: effects-weed.c:4096
int weed_layer_get_height(weed_plant_t *layer)
Definition: effects-weed.c:10091
weed_plant_t * get_enabled_channel(weed_plant_t *inst, int which, boolean is_in)
for FILTER_INST
Definition: effects-weed.c:730
Definition: effects-weed.h:17
boolean has_alpha_palette(weed_plant_t *ctmpl)
Definition: effects-weed.c:301
void backup_weed_instances(void)
for multitrack
Definition: effects-weed.c:600
boolean is_pure_audio(weed_plant_t *filter_or_instance, boolean count_opt)
TRUE if audio in or out and no vid in/out.
Definition: effects-weed.c:937
boolean rte_keymode_valid(int key, int mode, boolean is_userkey)
set to TRUE
Definition: effects-weed.c:8663
char * weed_filter_idx_get_name(int filter_idx) WARN_UNUSED
Definition: effects-weed.c:8720
Definition: effects-weed.h:31
weed_plant_t * weed_filter_out_paramtmpl(weed_plant_t *filter, int param_num)
Definition: effects-weed.c:8122
void weed_load_all(void)
load effects
Definition: effects-weed.c:4959
char * weed_seed_type_to_text(int seed_type)
Definition: effects-weed.c:497
boolean has_non_alpha_palette(weed_plant_t *ctmpl)
Definition: effects-weed.c:279
int get_transition_param(weed_plant_t *filter, boolean skip_internal)
Definition: effects-weed.c:7936
int weed_get_blend_factor(int hotkey)
Definition: effects-weed.c:8452
char * rte_keymode_get_filter_name(int key, int mode) WARN_UNUSED
returns name of filter_class bound to key/mode (or "")
Definition: effects-weed.c:8746
Definition: effects-weed.h:40
boolean has_video_chans_out(weed_plant_t *filter, boolean count_opt)
Definition: effects-weed.c:893
weed_plant_t * weed_layer_create_from_generator(weed_plant_t *inst, weed_timecode_t tc)
Definition: effects-weed.c:7260
boolean interpolate_params(weed_plant_t *inst, void **pchains, weed_timecode_t tc)
Definition: effects-weed.c:9825
Definition: effects-weed.h:15
weed_plant_t * weed_plant_deserialise(int fd, unsigned char **mem)
Definition: effects-weed.c:10412
void restore_weed_instances(void)
Definition: effects-weed.c:613
int num_alpha_channels(weed_plant_t *filter, boolean out)
Definition: effects-weed.c:515
Definition: effects-weed.h:29
void set_key_defaults(weed_plant_t *inst, int key, int mode)
Definition: effects-weed.c:11006
Definition: effects-weed.h:23
boolean weed_filter_is_resizer(weed_plant_t *filt)
Definition: effects-weed.c:765
void weed_unload_all(void)
unload all effects
Definition: effects-weed.c:5828
void filter_mutex_lock(int key)
Definition: effects-weed.c:118
int * weed_get_indices_from_template(const char *package_name, const char *filter_name, const char *author, int version)
Definition: effects-weed.c:10027
boolean has_perchannel_multiw(weed_plant_t *filter)
Definition: effects-weed.c:7993
void set_param_gui_readonly(weed_plant_t *inst)
Definition: effects-weed.c:1381
#define GNU_PURE
Definition: main.h:306
weed_plant_t * weed_instance_get_filter(weed_plant_t *inst, boolean get_compound_parent)
Definition: effects-weed.c:323
boolean weed_plant_serialise(int fd, weed_plant_t *plant, unsigned char **mem)
Definition: effects-weed.c:10177
Definition: effects-weed.h:30
void weed_reinit_all(void)
Definition: effects-weed.c:1530
boolean has_video_filters(boolean analysers_only)
Definition: effects-weed.c:4011
int count_simple_params(weed_plant_t *)
Definition: effects-weed.c:8184
Definition: effects-weed.h:22
void weed_bg_generator_end(weed_plant_t *inst)
Definition: effects-weed.c:7656
void weed_instance_ref(weed_plant_t *inst)
Definition: effects-weed.c:6036
weed_plant_t * add_filter_deinit_events(weed_plant_t *event_list)
Definition: effects-weed.c:1022
Definition: effects-weed.h:28
Definition: effects-weed.h:20
void weed_instance_unref(weed_plant_t *inst)
Definition: effects-weed.c:6029
char * weed_error_to_text(int error)
Definition: effects-weed.c:331
Definition: effects-weed.h:32
lives_filter_error_t weed_apply_audio_instance(weed_plant_t *init_event, float **abuf, int nbtracks, int nchans, int64_t nsamps, double arate, weed_timecode_t tc, double *vis)
Definition: effects-weed.c:3214
void weed_apply_audio_effects(weed_plant_t *filter_map, float **abuf, int nbtracks, int nchans, int64_t nsamps, double arate, weed_timecode_t tc, double *vis)
Definition: effects-weed.c:3840
Definition: effects-weed.h:19
boolean is_audio_channel_in(weed_plant_t *inst, int chnum)
Definition: effects-weed.c:785
boolean write_generator_sizes(int fd, int idx)
Definition: effects-weed.c:10622
Definition: effects-weed.h:16
int num_compound_fx(weed_plant_t *plant)
return number of filters in a compound fx (1 if it is not compound) - works for filter or inst ...
Definition: effects-weed.c:268
#define WARN_UNUSED
Definition: main.h:305
lives_filter_error_t weed_reinit_effect(weed_plant_t *inst, boolean reinit_compound)
Definition: effects-weed.c:1436
char * rte_keymode_get_type(int key, int mode) WARN_UNUSED
returns a string filter/instance type (or "")
Definition: effects-weed.c:8533
void write_key_defaults(int fd, int key, int mode)
Definition: effects-weed.c:10957
weed_plant_t * weed_layer_new_for_frame()
int get_next_free_key(void)
next free "key" for the multitrack system
Definition: effects-weed.c:8580
int rte_keymode_get_filter_idx(int key, int mode)
returns filter_class index of key/mode (or -1 if no filter bound)
Definition: effects-weed.c:8671
Definition: effects-weed.h:39
void weed_in_params_free(weed_plant_t **parameters, int num_parameters)
Definition: effects-weed.c:5975
lives_fx_cat_t weed_filter_subcategorise(weed_plant_t *pl, lives_fx_cat_t category, boolean count_opt)
Definition: effects-weed.c:466
boolean has_key_defaults(void)
Definition: effects-weed.c:11043
weed_plant_t * weed_inst_out_param(weed_plant_t *inst, int param_num)
Definition: effects-weed.c:8060
boolean read_filter_defaults(int fd)
Definition: effects-weed.c:10506