21#include "../libweed/weed-host.h"
22#include "../libweed/weed.h"
23#include "../libweed/weed-utils.h"
24#include "../libweed/weed-effects.h"
25#include "../libweed/weed-palettes.h"
27#include <weed/weed-host.h>
29#include <weed/weed-utils.h>
30#include <weed/weed-effects.h>
31#include <weed/weed-palettes.h>
36#ifndef WEED_GLOBAL_INLINE
37#define WEED_GLOBAL_INLINE inline
40#ifndef WEED_LOCAL_INLINE
41#define WEED_LOCAL_INLINE static inline
45 if (!plant)
return WEED_PLANT_UNKNOWN;
46 return weed_get_int_value(plant, WEED_LEAF_TYPE, NULL);
52 flags = weed_leaf_get_flags(plant, leaf);
53 weed_leaf_set_flags(plant, leaf, flags | flagbits);
61 flags = weed_leaf_get_flags(plant, leaf);
62 weed_leaf_set_flags(plant, leaf, flags & ~flagbits);
70 size_t ign_prefix_len = 0;
71 char **leaves = weed_plant_list_leaves(plant, NULL);
73 if (ign_prefix) ign_prefix_len = strlen(ign_prefix);
74 for (
register int i = 0; leaves[i]; i++) {
75 if (!ign_prefix || strncmp(leaves[i], ign_prefix, ign_prefix_len)) {
88 size_t ign_prefix_len = 0;
89 char **leaves = weed_plant_list_leaves(plant, NULL);
91 if (ign_prefix) ign_prefix_len = strlen(ign_prefix);
92 for (
register int i = 0; leaves[i]; i++) {
93 if (!ign_prefix || strncmp(leaves[i], ign_prefix, ign_prefix_len)) {
104 weed_plant_t *gui = NULL;
106 if (type != WEED_PLANT_FILTER_CLASS && type != WEED_PLANT_PARAMETER_TEMPLATE
107 && type != WEED_PLANT_PARAMETER && type != WEED_PLANT_FILTER_INSTANCE)
return NULL;
108 gui = weed_get_plantptr_value(plant, WEED_LEAF_GUI, NULL);
109 if (!gui && create_if_not_exists == WEED_TRUE) {
110 gui = weed_plant_new(WEED_PLANT_GUI);
111 weed_leaf_set(plant, WEED_LEAF_GUI, WEED_SEED_PLANTPTR, 1, &gui);
118 return weed_get_int_value(hinfo, WEED_LEAF_FLAGS, NULL);
123 weed_set_int_value(hinfo, WEED_LEAF_FLAGS, flags);
128 weed_set_int_value(hinfo, WEED_LEAF_VERBOSITY, verbosity);
143 return weed_get_string_value(pinfo, WEED_LEAF_PACKAGE_NAME, NULL);
151 return weed_get_plantptr_value(filter, WEED_LEAF_PLUGIN_INFO, NULL);
173 return weed_get_boolean_value(gui, WEED_LEAF_HIDDEN, NULL);
178 return weed_get_int_value(filter, WEED_LEAF_FLAGS, NULL);
235 && weed_get_boolean_value(gui, WEED_LEAF_HIDDEN, NULL) == WEED_TRUE)
242 return weed_get_string_value(filter, WEED_LEAF_NAME, NULL);
246 if (ntmpls) *ntmpls = 0;
248 return weed_get_plantptr_array_counted(filter, WEED_LEAF_IN_CHANNEL_TEMPLATES, ntmpls);
252 if (ntmpls) *ntmpls = 0;
254 return weed_get_plantptr_array_counted(filter, WEED_LEAF_OUT_CHANNEL_TEMPLATES, ntmpls);
258 if (ntmpls) *ntmpls = 0;
260 return weed_get_plantptr_array_counted(filter, WEED_LEAF_IN_PARAMETER_TEMPLATES, ntmpls);
264 if (ntmpls) *ntmpls = 0;
266 return weed_get_plantptr_array_counted(filter, WEED_LEAF_OUT_PARAMETER_TEMPLATES, ntmpls);
287 return weed_get_string_value(chantmpl, WEED_LEAF_NAME, NULL);
292 return weed_get_int_value(chantmpl, WEED_LEAF_FLAGS, NULL);
297 return weed_get_int_value(chantmpl, WEED_LEAF_MAX_AUDIO_LENGTH, NULL);
302 return weed_get_int_value(paramtmpl, WEED_LEAF_FLAGS, NULL);
308 return weed_leaf_seed_type(paramtmpl, WEED_LEAF_NEW_DEFAULT);
309 return weed_leaf_seed_type(paramtmpl, WEED_LEAF_DEFAULT);
314 return weed_get_int_value(paramtmpl, WEED_LEAF_PARAM_TYPE, NULL);
319 return weed_get_string_value(paramtmpl, WEED_LEAF_NAME, NULL);
338 && weed_get_boolean_value(gui, WEED_LEAF_WRAP, NULL) == WEED_TRUE)
return WEED_TRUE;
346 && weed_plant_has_leaf(gui, WEED_LEAF_CHOICES))
355 && weed_get_boolean_value(gui, WEED_LEAF_HIDDEN, NULL) == WEED_TRUE)
376 if (weed_plant_has_leaf(chantmpl, WEED_LEAF_MAX_REPEATS))
377 return weed_get_int_value(chantmpl, WEED_LEAF_MAX_REPEATS, NULL);
383 return weed_get_boolean_value(chantmpl, WEED_LEAF_IS_AUDIO, NULL);
388 if (nvals) *nvals = 0;
391 && weed_plant_has_leaf(chantmpl, WEED_LEAF_PALETTE_LIST)) {
392 pals = weed_get_int_array_counted(chantmpl, WEED_LEAF_PALETTE_LIST, &npals);
393 for (
register int i = 0; i < npals; i++) {
396 if (!weed_plant_has_leaf(filter, WEED_LEAF_PALETTE_LIST))
return NULL;
397 pals = weed_get_int_array_counted(filter, WEED_LEAF_PALETTE_LIST, &npals);
399 if (npals > 0 && pals[npals - 1] == WEED_PALETTE_END) npals--;
400 if (nvals) *nvals = npals;
406 return weed_get_voidptr_value(channel, WEED_LEAF_PIXEL_DATA, NULL);
410 if (nplanes) *nplanes = 0;
412 return weed_get_voidptr_array_counted(channel, WEED_LEAF_PIXEL_DATA, NULL);
418 return weed_get_int_value(channel, WEED_LEAF_WIDTH, NULL);
424 weed_set_int_value(channel, WEED_LEAF_WIDTH, width);
434 return weed_get_int_value(channel, WEED_LEAF_HEIGHT, NULL);
439 weed_set_int_value(channel, WEED_LEAF_HEIGHT, height);
444 weed_set_int_value(channel, WEED_LEAF_WIDTH, width);
445 weed_set_int_value(channel, WEED_LEAF_HEIGHT, height);
450 weed_set_int_value(channel, WEED_LEAF_CURRENT_PALETTE,
palette);
455 return weed_get_int_value(channel, WEED_LEAF_CURRENT_PALETTE, NULL);
460 return weed_get_int_value(channel, WEED_LEAF_GAMMA_TYPE, NULL);
465 weed_set_int_value(channel, WEED_LEAF_GAMMA_TYPE, gamma_type);
474 if (clamping) *clamping = weed_get_int_value(channel, WEED_LEAF_YUV_CLAMPING, NULL);
475 if (sampling) *sampling = weed_get_int_value(channel, WEED_LEAF_YUV_SAMPLING, NULL);
476 if (subspace) *subspace = weed_get_int_value(channel, WEED_LEAF_YUV_SUBSPACE, NULL);
484 return weed_get_int_value(channel, WEED_LEAF_ROWSTRIDES, NULL);
488 if (nplanes) *nplanes = 0;
490 return weed_get_int_array_counted(channel, WEED_LEAF_ROWSTRIDES, nplanes);
495 return weed_get_int_value(channel, WEED_LEAF_AUDIO_RATE, NULL);
500 return weed_get_int_value(channel, WEED_LEAF_AUDIO_CHANNELS, NULL);
505 return weed_get_int_value(channel, WEED_LEAF_AUDIO_DATA_LENGTH, NULL);
510 return weed_get_boolean_value(channel, WEED_LEAF_DISABLED, NULL);
515 return weed_get_plantptr_value(channel, WEED_LEAF_TEMPLATE, NULL);
520 return weed_get_plantptr_value(param, WEED_LEAF_TEMPLATE, NULL);
556 if ((gui =
weed_param_get_gui(param, WEED_FALSE)) != NULL && weed_plant_has_leaf(gui, WEED_LEAF_CHOICES))
557 return weed_leaf_num_elements(gui, WEED_LEAF_CHOICES);
559 && weed_plant_has_leaf(gui, WEED_LEAF_CHOICES))
560 return weed_leaf_num_elements(gui, WEED_LEAF_CHOICES);
565 if (naudchans) *naudchans = 0;
567 return (
float **)weed_get_voidptr_array_counted(channel, WEED_LEAF_AUDIO_DATA, naudchans);
571 int arate,
int naudchans,
int nsamps) {
573 weed_set_voidptr_array(channel, WEED_LEAF_AUDIO_DATA, naudchans, (
void **)data);
574 weed_set_int_value(channel, WEED_LEAF_AUDIO_RATE, arate);
575 weed_set_int_value(channel, WEED_LEAF_AUDIO_DATA_LENGTH, nsamps);
576 weed_set_int_value(channel, WEED_LEAF_AUDIO_CHANNELS, naudchans);
582 return weed_get_int_value(inst, WEED_LEAF_FLAGS, NULL);
587 weed_set_int_value(inst, WEED_LEAF_FLAGS, flags);
591 if (nchans) *nchans = 0;
593 return weed_get_plantptr_array_counted(instance, WEED_LEAF_IN_CHANNELS, nchans);
597 if (nchans) *nchans = 0;
599 return weed_get_plantptr_array_counted(instance, WEED_LEAF_OUT_CHANNELS, nchans);
603 if (nparams) *nparams = 0;
605 return weed_get_plantptr_array_counted(instance, WEED_LEAF_IN_PARAMETERS, nparams);
609 if (nparams) *nparams = 0;
611 return weed_get_plantptr_array_counted(instance, WEED_LEAF_OUT_PARAMETERS, nparams);
616 return weed_get_int_value(param, WEED_LEAF_VALUE, NULL);
621 return weed_get_boolean_value(param, WEED_LEAF_VALUE, NULL);
626 return weed_get_double_value(param, WEED_LEAF_VALUE, NULL);
631 return weed_get_int64_value(param, WEED_LEAF_VALUE, NULL);
636 if (weed_leaf_num_elements(param, WEED_LEAF_VALUE) == 0)
return NULL;
637 return weed_get_string_value(param, WEED_LEAF_VALUE, NULL);
642 return weed_get_int_value(gui, WEED_LEAF_FLAGS, NULL);
650 case (WEED_ERROR_MEMORY_ALLOCATION):
651 return strdup(
"Memory allocation error");
653 return strdup(
"Thread concurrency failure");
654 case (WEED_ERROR_IMMUTABLE):
655 return strdup(
"Read only property");
656 case (WEED_ERROR_UNDELETABLE):
657 return strdup(
"Undeletable property");
658 case (WEED_ERROR_BADVERSION):
659 return strdup(
"Bad version number");
660 case (WEED_ERROR_NOSUCH_ELEMENT):
661 return strdup(
"Invalid element");
662 case (WEED_ERROR_NOSUCH_LEAF):
663 return strdup(
"Invalid property");
664 case (WEED_ERROR_WRONG_SEED_TYPE):
665 return strdup(
"Incorrect property type");
666 case (WEED_ERROR_TOO_MANY_INSTANCES):
667 return strdup(
"Too many instances");
668 case (WEED_ERROR_PLUGIN_INVALID):
669 return strdup(
"Fatal plugin error");
670 case (WEED_ERROR_FILTER_INVALID):
671 return strdup(
"Invalid filter in plugin");
672 case (WEED_ERROR_REINIT_NEEDED):
673 return strdup(
"Filter needs reiniting");
677 return strdup(
"No error");
683 return strdup(
"integer");
684 case WEED_SEED_INT64:
685 return strdup(
"int64");
686 case WEED_SEED_BOOLEAN:
687 return strdup(
"boolean");
688 case WEED_SEED_DOUBLE:
689 return strdup(
"double");
690 case WEED_SEED_STRING:
691 return strdup(
"string");
692 case WEED_SEED_FUNCPTR:
693 return strdup(
"function pointer");
694 case WEED_SEED_VOIDPTR:
695 return strdup(
"void *");
696 case WEED_SEED_PLANTPTR:
697 return strdup(
"weed_plant_t *");
699 return strdup(
"custom pointer type");
705 case WEED_PALETTE_RGB24:
707 case WEED_PALETTE_RGBA32:
709 case WEED_PALETTE_BGR24:
711 case WEED_PALETTE_BGRA32:
713 case WEED_PALETTE_ARGB32:
715 case WEED_PALETTE_RGBFLOAT:
717 case WEED_PALETTE_RGBAFLOAT:
719 case WEED_PALETTE_YUV888:
721 case WEED_PALETTE_YUVA8888:
723 case WEED_PALETTE_YUV444P:
725 case WEED_PALETTE_YUVA4444P:
727 case WEED_PALETTE_YUV422P:
729 case WEED_PALETTE_YUV420P:
731 case WEED_PALETTE_YVU420P:
733 case WEED_PALETTE_YUV411:
735 case WEED_PALETTE_UYVY8888:
737 case WEED_PALETTE_YUYV8888:
739 case WEED_PALETTE_A8:
740 return "8 BIT ALPHA";
741 case WEED_PALETTE_A1:
742 return "1 BIT ALPHA";
743 case WEED_PALETTE_AFLOAT:
744 return "FLOAT ALPHA";
746 if (pal >= 2048)
return "custom";
752 if (clamping == WEED_YUV_CLAMPING_UNCLAMPED)
return "unclamped";
753 if (clamping == WEED_YUV_CLAMPING_CLAMPED)
return "clamped";
758 if (subspace == WEED_YUV_SUBSPACE_YUV)
return "Y'UV";
759 if (subspace == WEED_YUV_SUBSPACE_YCBCR)
return "Y'CbCr";
760 if (subspace == WEED_YUV_SUBSPACE_BT709)
return "BT.709";
771 return strdup(pname);
775 if (gamma == WEED_GAMMA_LINEAR)
return "linear";
776 if (gamma == WEED_GAMMA_SRGB)
return "sRGB";
777 if (gamma == WEED_GAMMA_BT709)
return "bt709";
781#ifndef WEED_ADVANCED_PALETTES
784 if (pal == WEED_PALETTE_A8 || pal == WEED_PALETTE_YUV420P || pal == WEED_PALETTE_YVU420P ||
785 pal == WEED_PALETTE_YUV422P || pal == WEED_PALETTE_YUV444P || pal == WEED_PALETTE_YUVA4444P)
return 8;
786 if (pal == WEED_PALETTE_RGB24 || pal == WEED_PALETTE_BGR24)
return 24;
787 if (pal == WEED_PALETTE_RGBA32 || pal == WEED_PALETTE_BGRA32 || pal == WEED_PALETTE_ARGB32 ||
788 pal == WEED_PALETTE_UYVY8888 || pal == WEED_PALETTE_YUYV8888 || pal == WEED_PALETTE_YUV888
789 || pal == WEED_PALETTE_YUVA8888)
791 if (pal == WEED_PALETTE_YUV411)
return 48;
792 if (pal == WEED_PALETTE_AFLOAT)
return sizeof(float);
793 if (pal == WEED_PALETTE_A1)
return 1;
794 if (pal == WEED_PALETTE_RGBFLOAT)
return (3 *
sizeof(
float));
795 if (pal == WEED_PALETTE_RGBAFLOAT)
return (4 *
sizeof(
float));
813 for (i = 0; i < nplanes; i++) {
835 && (flags & WEED_FILTER_AUDIO_RATES_MAY_VARY))
return WEED_TRUE;
LIVES_GLOBAL_INLINE boolean weed_palette_is_alpha(int pal)
LIVES_GLOBAL_INLINE int weed_palette_get_bits_per_macropixel(int pal)
LIVES_GLOBAL_INLINE int weed_palette_get_nplanes(int pal)
LIVES_GLOBAL_INLINE boolean weed_palette_is_valid(int pal)
LIVES_GLOBAL_INLINE boolean weed_palette_is_yuv(int pal)
LIVES_GLOBAL_INLINE boolean weed_palette_has_alpha(int pal)
LIVES_GLOBAL_INLINE double weed_palette_get_plane_ratio_vertical(int pal, int plane)
LIVES_GLOBAL_INLINE int weed_palette_get_pixels_per_macropixel(int pal)
LIVES_GLOBAL_INLINE double weed_palette_get_plane_ratio_horizontal(int pal, int plane)
weed_plant_t weed_layer_t
error("LSD_RANDFUNC(ptr, size) must be defined")
_palette * palette
interface colour settings
#define lives_strdup_printf(fmt,...)
WEED_GLOBAL_INLINE weed_plant_t * weed_paramtmpl_get_gui(weed_plant_t *paramt, int create_if_not_exists)
WEED_GLOBAL_INLINE int weed_param_get_value_int(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_chantmpl_get_flags(weed_plant_t *chantmpl)
WEED_GLOBAL_INLINE int weed_param_get_value_boolean(weed_plant_t *param)
WEED_GLOBAL_INLINE uint32_t weed_leaf_set_flagbits(weed_plant_t *plant, const char *leaf, uint32_t flagbits)
value ORed with flags
WEED_GLOBAL_INLINE weed_plant_t * weed_channel_get_template(weed_plant_t *channel)
WEED_GLOBAL_INLINE void weed_host_set_supports_premult_alpha(weed_plant_t *hinfo)
WEED_GLOBAL_INLINE int weed_channel_get_width_pixels(weed_plant_t *channel)
width in pixels: only relevant when comparing widths of diferrent palettes
WEED_GLOBAL_INLINE int weed_channel_get_naudchans(weed_plant_t *channel)
WEED_GLOBAL_INLINE void * weed_channel_get_pixel_data(weed_plant_t *channel)
#define WEED_LOCAL_INLINE
WEED_GLOBAL_INLINE void weed_channel_set_width(weed_plant_t *channel, int width)
width in macropixels
WEED_GLOBAL_INLINE int weed_param_get_nchoices(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_param_does_wrap(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_channel_get_rowstride(weed_plant_t *channel)
WEED_GLOBAL_INLINE char * weed_chantmpl_get_name(weed_plant_t *chantmpl)
WEED_GLOBAL_INLINE int * weed_chantmpl_get_palette_list(weed_plant_t *filter, weed_plant_t *chantmpl, int *nvals)
char * weed_palette_get_name_full(int pal, int clamping, int subspace)
const char * weed_yuv_subspace_get_name(int subspace)
WEED_GLOBAL_INLINE weed_plant_t ** weed_instance_get_out_channels(weed_plant_t *instance, int *nchans)
WEED_GLOBAL_INLINE int weed_chantmpl_get_max_repeats(weed_plant_t *chantmpl)
WEED_GLOBAL_INLINE int weed_filter_hints_stateless(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_channel_get_audio_length(weed_plant_t *channel)
WEED_GLOBAL_INLINE uint32_t weed_paramtmpl_value_type(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE int weed_paramtmpl_get_flags(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE int weed_channel_get_palette_yuv(weed_plant_t *channel, int *clamping, int *sampling, int *subspace)
WEED_GLOBAL_INLINE int weed_paramtmpl_does_wrap(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE int weed_param_has_value_perchannel(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_filter_may_thread(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_hints_unstable(weed_plant_t *filter)
WEED_GLOBAL_INLINE void weed_channel_set_palette(weed_plant_t *channel, int palette)
WEED_GLOBAL_INLINE void weed_instance_set_flags(weed_plant_t *inst, int flags)
WEED_GLOBAL_INLINE int weed_channel_get_width(weed_plant_t *channel)
width in macropixels
WEED_GLOBAL_INLINE weed_layer_t * weed_channel_set_audio_data(weed_plant_t *channel, float **data, int arate, int naudchans, int nsamps)
WEED_GLOBAL_INLINE char * weed_param_get_value_string(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_filter_is_palette_converter(weed_plant_t *filter)
WEED_GLOBAL_INLINE weed_plant_t * weed_channel_set_gamma_type(weed_plant_t *channel, int gamma_type)
only sets value; no conversion of pixel_data done
char * weed_seed_type_to_text(uint32_t seed_type)
WEED_GLOBAL_INLINE weed_plant_t * weed_param_get_template(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_paramtmpl_has_variable_size(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE weed_plant_t ** weed_instance_get_in_channels(weed_plant_t *instance, int *nchans)
WEED_GLOBAL_INLINE int * weed_channel_get_rowstrides(weed_plant_t *channel, int *nplanes)
WEED_GLOBAL_INLINE int weed_host_info_get_flags(weed_plant_t *hinfo)
WEED_GLOBAL_INLINE void weed_host_info_set_flags(weed_plant_t *hinfo, int flags)
WEED_GLOBAL_INLINE int weed_paramtmpl_value_irrelevant(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE int weed_channel_get_height(weed_plant_t *channel)
WEED_GLOBAL_INLINE int weed_filter_channel_sizes_vary(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_chantmpl_is_optional(weed_plant_t *chantmpl)
WEED_LOCAL_INLINE weed_plant_t * _weed_get_gui(weed_plant_t *plant, int create_if_not_exists)
WEED_GLOBAL_INLINE int weed_param_get_value_type(weed_plant_t *param)
WEED_GLOBAL_INLINE weed_plant_t ** weed_filter_get_in_chantmpls(weed_plant_t *filter, int *ntmpls)
WEED_GLOBAL_INLINE int weed_param_get_type(weed_plant_t *param)
WEED_GLOBAL_INLINE weed_plant_t * weed_param_get_gui(weed_plant_t *param, int create_if_not_exists)
WEED_GLOBAL_INLINE int weed_channel_get_palette(weed_plant_t *channel)
WEED_GLOBAL_INLINE int weed_channel_get_gamma_type(weed_plant_t *channel)
WEED_GLOBAL_INLINE weed_plant_t ** weed_filter_get_out_paramtmpls(weed_plant_t *filter, int *ntmpls)
const char * weed_gamma_get_name(int gamma)
double weed_palette_get_compression_ratio(int pal)
WEED_GLOBAL_INLINE int weed_channel_get_audio_rate(weed_plant_t *channel)
WEED_GLOBAL_INLINE int weed_paramtmpl_get_type(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE int weed_gui_get_flags(weed_plant_t *gui)
gui plants
WEED_GLOBAL_INLINE float ** weed_channel_get_audio_data(weed_plant_t *channel, int *naudchans)
void weed_clear_plant_flags(weed_plant_t *plant, uint32_t flags, const char *ign_prefix)
WEED_GLOBAL_INLINE weed_plant_t * weed_instance_get_gui(weed_plant_t *inst, int create_if_not_exists)
WEED_GLOBAL_INLINE int weed_paramtmpl_hints_string_choice(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE weed_plant_t ** weed_filter_get_out_chantmpls(weed_plant_t *filter, int *ntmpls)
WEED_GLOBAL_INLINE int weed_filter_hints_hidden(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_is_converter(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_is_process_last(weed_plant_t *filter)
WEED_GLOBAL_INLINE void weed_host_set_supports_linear_gamma(weed_plant_t *hinfo)
void weed_add_plant_flags(weed_plant_t *plant, uint32_t flags, const char *ign_prefix)
WEED_GLOBAL_INLINE char * weed_filter_get_name(weed_plant_t *filter)
WEED_GLOBAL_INLINE char * weed_paramtmpl_get_name(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE weed_plant_t ** weed_instance_get_out_params(weed_plant_t *instance, int *nparams)
WEED_GLOBAL_INLINE int weed_audio_filter_is_resampler(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_prefers_linear_gamma(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_prefers_premult_alpha(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_get_flags(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_filter_non_realtime(weed_plant_t *filter)
WEED_GLOBAL_INLINE uint32_t weed_leaf_clear_flagbits(weed_plant_t *plant, const char *leaf, uint32_t flagbits)
~value ANDed with flags
WEED_GLOBAL_INLINE double weed_param_get_value_double(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_param_is_hidden(weed_plant_t *param, int temporary)
WEED_GLOBAL_INLINE weed_plant_t * weed_filter_get_gui(weed_plant_t *filter, int create_if_not_exists)
const char * weed_palette_get_name(int pal)
WEED_GLOBAL_INLINE char * weed_filter_get_package_name(weed_plant_t *filter)
WEED_GLOBAL_INLINE weed_plant_t ** weed_filter_get_in_paramtmpls(weed_plant_t *filter, int *ntmpls)
WEED_GLOBAL_INLINE int64_t weed_param_get_value_int64(weed_plant_t *param)
WEED_GLOBAL_INLINE void ** weed_channel_get_pixel_data_planar(weed_plant_t *channel, int *nplanes)
WEED_GLOBAL_INLINE void weed_channel_set_size(weed_plant_t *channel, int width, int height)
WEED_GLOBAL_INLINE int weed_chantmpl_is_audio(weed_plant_t *chantmpl)
WEED_GLOBAL_INLINE int weed_filter_palettes_vary(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_paramtmpl_hints_hidden(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE void weed_channel_set_height(weed_plant_t *channel, int height)
const char * weed_yuv_clamping_get_name(int clamping)
WEED_GLOBAL_INLINE int weed_paramtmpl_has_value_perchannel(weed_plant_t *paramtmpl)
WEED_GLOBAL_INLINE void weed_host_set_verbosity(weed_plant_t *hinfo, int verbosity)
WEED_GLOBAL_INLINE weed_plant_t ** weed_instance_get_in_params(weed_plant_t *instance, int *nparams)
#define WEED_GLOBAL_INLINE
get_colorspace get_max / min
WEED_GLOBAL_INLINE int weed_instance_get_flags(weed_plant_t *inst)
WEED_GLOBAL_INLINE int weed_chantmpl_get_max_audio_length(weed_plant_t *chantmpl)
WEED_GLOBAL_INLINE weed_plant_t * weed_filter_get_plugin_info(weed_plant_t *filter)
WEED_GLOBAL_INLINE int weed_param_value_irrelevant(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_param_has_variable_size(weed_plant_t *param)
WEED_GLOBAL_INLINE int weed_channel_is_disabled(weed_plant_t *channel)
WEED_GLOBAL_INLINE int32_t weed_plant_get_type(weed_plant_t *plant)
char * weed_error_to_text(weed_error_t error)
WEED_GLOBAL_INLINE int weed_filter_is_resizer(weed_plant_t *filter)
WEED_GLOBAL_INLINE char * weed_plugin_info_get_package_name(weed_plant_t *pinfo)
#define WEED_PLANT_IS_FILTER_INSTANCE(plant)
#define WEED_PLANT_IS_PARAMETER_TEMPLATE(plant)
#define WEED_PLANT_IS_PARAMETER(plant)
#define WEED_PLANT_IS_HOST_INFO(plant)
#define WEED_PLANT_IS_GUI(plant)
#define WEED_PLANT_IS_CHANNEL_TEMPLATE(plant)
#define WEED_PLANT_IS_CHANNEL(plant)
#define WEED_PLANT_IS_PLUGIN_INFO(plant)
#define WEED_PLANT_IS_FILTER_CLASS(plant)