Go to the documentation of this file.
15 #ifndef _WEED_FILTER_UTILS_H_
16 #define _WEEED_FILTER_UTILS_H_
19 #error This header is designed for Weed hosts. Plugins have their own utilities in weed-plugin-utils.h
23 # define WARN_UNUSED __attribute__((warn_unused_result))
31 #define WEED_PLANT_IS_PLUGIN_INFO(plant) (weed_plant_get_type(plant) == WEED_PLANT_PLUGIN_INFO ? WEED_TRUE : \
34 #define WEED_PLANT_IS_HOST_INFO(plant) (weed_plant_get_type(plant) == WEED_PLANT_HOST_INFO ? WEED_TRUE : WEED_FALSE)
36 #define WEED_PLANT_IS_FILTER_CLASS(plant) (weed_plant_get_type(plant) == WEED_PLANT_FILTER_CLASS ? WEED_TRUE : \
38 #define WEED_PLANT_IS_FILTER_INSTANCE(plant) (weed_plant_get_type(plant) == WEED_PLANT_FILTER_INSTANCE ? WEED_TRUE : \
41 #define WEED_PLANT_IS_CHANNEL(plant) (weed_plant_get_type(plant) == WEED_PLANT_CHANNEL ? WEED_TRUE : WEED_FALSE)
43 #define WEED_PLANT_IS_CHANNEL_TEMPLATE(plant) (weed_plant_get_type(plant) == WEED_PLANT_CHANNEL_TEMPLATE ? \
44 WEED_TRUE : WEED_FALSE)
46 #define WEED_PLANT_IS_PARAMETER(plant) (weed_plant_get_type(plant) == WEED_PLANT_PARAMETER ? WEED_TRUE : WEED_FALSE)
48 #define WEED_PLANT_IS_PARAMETER_TEMPLATE(plant) (weed_plant_get_type(plant) == WEED_PLANT_PARAMETER_TEMPLATE ? \
49 WEED_TRUE : WEED_FALSE)
51 #define WEED_PLANT_IS_GUI(plant) (weed_plant_get_type(plant) == WEED_PLANT_GUI ? WEED_TRUE : WEED_FALSE)
205 #ifndef WEED_ADVANCED_PALETTES
209 #define weed_palette_is_alpha(pal) ((((pal >= 1024) && (pal < 2048))) ? WEED_TRUE : WEED_FALSE)
210 #define weed_palette_is_rgb(pal) (pal >0 && pal < 512 ? WEED_TRUE : WEED_FALSE)
211 #define weed_palette_is_yuv(pal) (pal >= 512 && pal < 1024 ? WEED_TRUE : WEED_FALSE)
213 #define weed_palette_is_float(pal) ((pal == WEED_PALETTE_RGBAFLOAT || pal == WEED_PALETTE_AFLOAT || \
214 pal == WEED_PALETTE_RGBFLOAT) ? WEED_TRUE : WEED_FALSE)
217 #define pixel_size(pal) ((pal == WEED_PALETTE_RGB24 || pal == WEED_PALETTE_BGR24 || pal == WEED_PALETTE_YUV888) ? 3 : \
218 (pal == WEED_PALETTE_RGBA32 || pal == WEED_PALETTE_BGRA32 || pal == WEED_PALETTE_ARGB32 || \
219 pal == WEED_PALETTE_YUVA8888 || pal == WEED_PALETTE_UYVY || pal == WEED_PALETTE_YUYV) ? 4 : 1)
221 #define weed_palette_has_alpha(pal) ((pal == WEED_PALETTE_RGBA32 || pal == WEED_PALETTE_BGRA32 || \
222 pal == WEED_PALETTE_ARGB32 || pal == WEED_PALETTE_YUVA4444P || pal == WEED_PALETTE_YUVA8888 || \
223 pal == WEED_PALETTE_RGBAFLOAT || weed_palette_is_alpha(pal)) ? WEED_TRUE : WEED_FALSE)
226 #define weed_palette_get_plane_ratio_horizontal(pal, plane) ((double)(plane == 0 ? 1.0 : (plane == 1 || plane == 2) ? \
227 (pal == WEED_PALETTE_YUV444P || pal == WEED_PALETTE_YUVA4444P) ? 1.0 : \
228 (pal == WEED_PALETTE_YUV422P || pal == WEED_PALETTE_YUV420P || \
229 pal == WEED_PALETTE_YVU420P) ? 0.5 : plane == 3 ? \
230 pal == WEED_PALETTE_YUVA4444P ? 1.0 : 0.0 : 0.0 : 0.0))
233 #define weed_palette_get_plane_ratio_vertical(pal, plane) ((double)(plane == 0 ? 1.0 : (plane == 1 || plane == 2) ? \
234 (pal == WEED_PALETTE_YUV444P || pal == WEED_PALETTE_YUVA4444P || \
235 pal == WEED_PALETTE_YUV422P) ? 1.0 : (pal == WEED_PALETTE_YUV420P || \
236 pal == WEED_PALETTE_YVU420P) ? 0.5 : plane == 3 ? \
237 pal == WEED_PALETTE_YUVA4444P ? 1.0 : 0.0 : 0.0 : 0.0))
239 #define weed_palette_get_nplanes(pal) ((pal == WEED_PALETTE_RGB24 || pal == WEED_PALETTE_BGR24 || \
240 pal == WEED_PALETTE_RGBA32 || pal == WEED_PALETTE_BGRA32 || pal == WEED_PALETTE_ARGB32 || \
241 pal == WEED_PALETTE_UYVY || pal == WEED_PALETTE_YUYV || pal == WEED_PALETTE_YUV411 || \
242 pal == WEED_PALETTE_YUV888 || pal == WEED_PALETTE_YUVA8888 || pal == WEED_PALETTE_AFLOAT || \
243 pal == WEED_PALETTE_A8 || pal == WEED_PALETTE_A1 || pal == WEED_PALETTE_RGBFLOAT || \
244 pal == WEED_PALETTE_RGBAFLOAT) ? 1 : (pal == WEED_PALETTE_YUV420P || \
245 pal == WEED_PALETTE_YVU420P || pal == WEED_PALETTE_YUV422P || \
246 pal == WEED_PALETTE_YUV444P) ? 3 : pal == WEED_PALETTE_YUVA4444P ? 4 : 0)
248 #define weed_palette_get_pixels_per_macropixel(pal) ((pal == WEED_PALETTE_UYVY || pal == WEED_PALETTE_YUYV) ? 2 : \
249 (pal == WEED_PALETTE_YUV411) ? 4 : (weed_palette_is_valid(pal) ? 1 : 0))
251 #define weed_palette_is_valid(pal) (weed_palette_get_nplanes(pal) == 0 ? WEED_FALSE : WEED_TRUE)
255 #define weed_palette_is_planar(pal) (weed_palette_get_nplanes(pal) > 1)
int * weed_channel_get_rowstrides(weed_plant_t *channel, int *nplanes)
int * weed_chantmpl_get_palette_list(weed_plant_t *filter, weed_plant_t *chantmpl, int *nvals)
int weed_filter_hints_stateless(weed_plant_t *filter)
weed_plant_t ** weed_instance_get_in_channels(weed_plant_t *instance, int *nchans)
int weed_chantmpl_is_optional(weed_plant_t *chantmpl)
int weed_paramtmpl_get_type(weed_plant_t *paramtmpl)
weed_plant_t ** weed_instance_get_out_channels(weed_plant_t *instance, int *nchans)
const char * weed_yuv_clamping_get_name(int clamping)
int weed_param_does_wrap(weed_plant_t *param)
double weed_palette_get_compression_ratio(int pal)
int weed_paramtmpl_does_wrap(weed_plant_t *paramtmpl)
int weed_channel_get_width(weed_plant_t *channel)
width in macropixels
int weed_paramtmpl_get_flags(weed_plant_t *paramtmpl)
void weed_host_set_supports_premult_alpha(weed_plant_t *host_info)
weed_plant_t * weed_param_get_gui(weed_plant_t *param, int create_if_not_exists)
char * weed_palette_get_name_full(int pal, int clamping, int subspace) WARN_UNUSED
int weed_param_is_hidden(weed_plant_t *param, int temporary)
int weed_filter_get_flags(weed_plant_t *filter)
char * weed_filter_get_name(weed_plant_t *filter)
int weed_channel_get_naudchans(weed_plant_t *channel)
int weed_filter_may_thread(weed_plant_t *filter)
int weed_param_get_nchoices(weed_plant_t *param)
int weed_param_get_value_boolean(weed_plant_t *param)
int weed_param_get_type(weed_plant_t *param)
int weed_paramtmpl_value_irrelevant(weed_plant_t *paramtmpl)
char * weed_chantmpl_get_name(weed_plant_t *chantmpl)
uint32_t weed_leaf_clear_flagbits(weed_plant_t *, const char *leaf, uint32_t flagbits)
~value ANDed with flags
char * weed_filter_get_package_name(weed_plant_t *filter)
weed_plant_t * weed_param_get_template(weed_plant_t *param)
void weed_instance_set_flags(weed_plant_t *instance, int flags)
int64_t weed_param_get_value_int64(weed_plant_t *param)
int weed_filter_is_resizer(weed_plant_t *filter)
const char * weed_gamma_get_name(int gamma)
int weed_param_has_variable_size(weed_plant_t *param)
int weed_paramtmpl_hints_hidden(weed_plant_t *paramtmpl)
int weed_chantmpl_is_audio(weed_plant_t *chantmpl)
weed_plant_t * weed_filter_get_plugin_info(weed_plant_t *filter)
int weed_filter_prefers_premult_alpha(weed_plant_t *filter)
void weed_clear_plant_flags(weed_plant_t *t, uint32_t flags, const char *ign_prefix)
float ** weed_channel_get_audio_data(weed_plant_t *channel, int *naudchans)
uint32_t weed_leaf_set_flagbits(weed_plant_t *, const char *leaf, uint32_t flagbits)
value ORed with flags
char * weed_plugin_info_get_package_name(weed_plant_t *pinfo)
int weed_param_get_value_type(weed_plant_t *param)
int weed_instance_get_flags(weed_plant_t *instance)
void weed_add_plant_flags(weed_plant_t *, uint32_t flags, const char *ign_prefix)
const char * weed_yuv_subspace_get_name(int subspace)
int weed_channel_get_palette(weed_plant_t *channel)
int weed_channel_get_rowstride(weed_plant_t *channel)
int weed_filter_hints_hidden(weed_plant_t *filter)
int weed_param_value_irrelevant(weed_plant_t *param)
int weed_filter_non_realtime(weed_plant_t *filter)
double weed_param_get_value_double(weed_plant_t *param)
char * weed_paramtmpl_get_name(weed_plant_t *paramtmpl)
_palette * palette
interface colour settings
weed_plant_t ** weed_filter_get_out_chantmpls(weed_plant_t *filter, int *ntmpls)
weed_plant_t * weed_channel_set_gamma_type(weed_plant_t *channel, int gamma_type)
only sets value; no conversion of pixel_data done
int weed_filter_prefers_linear_gamma(weed_plant_t *filter)
int weed_filter_is_converter(weed_plant_t *filter)
error("LSD_RANDFUNC(ptr, size) must be defined")
int weed_channel_get_width_pixels(weed_plant_t *channel)
width in pixels: only relevant when comparing widths of diferrent palettes
int32_t weed_plant_get_type(weed_plant_t *)
void weed_host_info_set_flags(weed_plant_t *host_info, int flags)
weed_plant_t ** weed_filter_get_out_paramtmpls(weed_plant_t *filter, int *ntmpls)
int weed_param_get_value_int(weed_plant_t *param)
int weed_channel_get_audio_length(weed_plant_t *channel)
int weed_channel_get_palette_yuv(weed_plant_t *channel, int *clamping, int *sampling, int *subspace)
void weed_channel_set_height(weed_plant_t *channel, int height)
void weed_host_set_supports_linear_gamma(weed_plant_t *host_info)
int weed_filter_palettes_vary(weed_plant_t *filter)
weed_plant_t * weed_channel_set_audio_data(weed_plant_t *channel, float **data, int arate, int naudchans, int nsamps)
int weed_channel_get_gamma_type(weed_plant_t *channel)
void weed_channel_set_width(weed_plant_t *channel, int width)
width in macropixels
void ** weed_channel_get_pixel_data_planar(weed_plant_t *channel, int *nplanes)
int weed_chantmpl_get_flags(weed_plant_t *chantmpl)
int weed_paramtmpl_hints_string_choice(weed_plant_t *paramtmpl)
weed_plant_t ** weed_filter_get_in_paramtmpls(weed_plant_t *filter, int *ntmpls)
weed_plant_t * weed_paramtmpl_get_gui(weed_plant_t *paramtmpl, int create_if_not_exists)
uint32_t weed_paramtmpl_value_type(weed_plant_t *paramtmpl)
char * weed_error_to_text(weed_error_t error) WARN_UNUSED
int weed_filter_hints_unstable(weed_plant_t *filter)
int weed_channel_get_height(weed_plant_t *channel)
weed_plant_t ** weed_filter_get_in_chantmpls(weed_plant_t *filter, int *ntmpls)
int weed_channel_get_audio_rate(weed_plant_t *channel)
int weed_chantmpl_get_max_audio_length(weed_plant_t *chantmpl)
int weed_chantmpl_get_max_repeats(weed_plant_t *chantmpl)
weed_plant_t * weed_filter_get_gui(weed_plant_t *filter, int create_if_not_exists)
int weed_filter_channel_sizes_vary(weed_plant_t *filter)
void weed_channel_set_palette(weed_plant_t *channel, int palette)
int weed_channel_is_disabled(weed_plant_t *channel)
int weed_host_info_get_flags(weed_plant_t *host_info)
void weed_host_set_verbosity(weed_plant_t *host_info, int verbosityy)
weed_plant_t ** weed_instance_get_out_params(weed_plant_t *instance, int *nparams)
int weed_paramtmpl_has_variable_size(weed_plant_t *paramtmpl)
const char * weed_palette_get_name(int pal)
int weed_paramtmpl_has_value_perchannel(weed_plant_t *paramtmpl)
char * weed_seed_type_to_text(uint32_t seed_type) WARN_UNUSED
char * weed_param_get_value_string(weed_plant_t *param)
void * weed_channel_get_pixel_data(weed_plant_t *channel)
int weed_filter_is_process_last(weed_plant_t *filter)
int weed_palette_get_bits_per_macropixel(int pal)
weed_plant_t * weed_instance_get_gui(weed_plant_t *inst, int create_if_not_exists)
int weed_param_has_value_perchannel(weed_plant_t *param)
void weed_channel_set_size(weed_plant_t *channel, int width, int height)
int weed_gui_get_flags(weed_plant_t *gui)
gui plants
weed_plant_t * weed_channel_get_template(weed_plant_t *channel)
weed_plant_t ** weed_instance_get_in_params(weed_plant_t *instance, int *nparams)