LiVES 3.2.0
plugins.h
Go to the documentation of this file.
1// plugins.h
2// LiVES
3// (c) G. Finch 2003-2020 <salsaman+lives@gmail.com>
4// released under the GNU GPL 3 or later
5// see file ../COPYING or www.gnu.org for licensing details
6
7#ifndef HAS_LIVES_PLUGINS_H
8#define HAS_LIVES_PLUGINS_H
9
10#ifdef GUI_GTK
11#include <gmodule.h>
12#endif
13
14#include <unistd.h>
15#include <string.h>
16#include <fcntl.h>
17#include <stdlib.h>
18
19// generic plugins
20
21#define PLUGIN_SUBTYPE_DLL "dll"
22#define PLUGIN_SUBTYPE_BINARY "exe"
23#define PLUGIN_SUBTYPE_SCRIPT "script"
24
25#define PLUGIN_TYPE_DECODER "decoder"
26#define PLUGIN_TYPE_ENCODER "encoder"
27#define PLUGIN_TYPE_FILTER "filter"
28#define PLUGIN_TYPE_SOURCE "source"
29#define PLUGIN_TYPE_PLAYER "player"
30
31#define PLUGIN_CHANNEL_NONE 0ul
32#define PLUGIN_CHANNEL_VIDEO (1<<0)ul
33#define PLUGIN_CHANNEL_AUDIO (1<<1)ul
34#define PLUGIN_CHANNEL_TEXT (1<<2)ul
35
36#define PLUGIN_CHANNEL_DATA (1<<32)ul
37#define PLUGIN_CHANNEL_STREAM (1<<33)ul
38#define PLUGIN_CHANNEL_TTY (1<<34)ul
39#define PLUGIN_CHANNEL_FILE (1<<35)ul
40
41typedef enum {
43
44 // video players
47 LIVES_INTENTION_TRANSCODE, // encode / data in
49
50 //LIVES_INTENTION_ENCODE, // encode / file in
64
66// vpp
67#define VPP_CAN_RESIZE (1<<0)
68#define VPP_CAN_RETURN (1<<1)
69#define VPP_LOCAL_DISPLAY (1<<2)
70#define VPP_LINEAR_GAMMA (1<<3)
71#define VPP_CAN_RESIZE_WINDOW (1<<4)
72#define VPP_CAN_LETTERBOX (1<<5)
73#define VPP_CAN_CHANGE_PALETTE (1<<6)
74
75typedef struct {
76 uint64_t intent;
77 uint64_t in_chan_types;
78 uint64_t out_chan_types;
79 uint64_t intents;
80 uint64_t capabilities;
82
83typedef struct {
84 char type[16];
85 char subtype[16];
88 char name[64];
93
94LiVESList *get_plugin_list(const char *plugin_type, boolean allow_nonex,
95 const char *plugdir, const char *filter_ext);
96
97// directory locations
98#define PLUGIN_ENCODERS "encoders"
99#define PLUGIN_DECODERS "decoders"
100#define PLUGIN_VID_PLAYBACK "playback/video"
101#define PLUGIN_AUDIO_STREAM "playback/audiostream"
102
103#define AUDIO_STREAMER_NAME "audiostreamer.pl"
104
106#define PLUGIN_THEMES "themes"
107#define PLUGIN_THEMES_CUSTOM "custom/themes"
108
110#define PLUGIN_EFFECTS_WEED "weed"
111#define PLUGIN_WEED_FX_BUILTIN "effects/realtime/weed"
112
113LiVESList *get_plugin_result(const char *command, const char *delim, boolean allow_blanks, boolean strip);
114LiVESList *plugin_request(const char *plugin_type, const char *plugin_name, const char *request);
115LiVESList *plugin_request_with_blanks(const char *plugin_type, const char *plugin_name, const char *request);
116LiVESList *plugin_request_by_line(const char *plugin_type, const char *plugin_name, const char *request);
117LiVESList *plugin_request_by_space(const char *plugin_type, const char *plugin_name, const char *request);
118LiVESList *plugin_request_common(const char *plugin_type, const char *plugin_name, const char *request, const char *delim,
119 boolean allow_blanks);
120
121#define VPP_DEFS_FILE "vpp_defaults"
122
123typedef struct {
124 // playback
125 char name[64];
126 void *handle;
127
128 // mandatory
129 const char *(*module_check_init)(void);
130 const char *(*version)(void);
131 const char *(*get_description)(void);
132
133 int *(*get_palette_list)(void);
135 uint64_t (*get_capabilities)(int palette);
136
137 boolean(*render_frame)(int hsize, int vsize, ticks_t timecode, void **pixel_data, void **return_data,
138 weed_plant_t **play_params);
139
141
142 // optional
143 weed_plant_t *(*weed_setup)(weed_bootstrap_f);
144 boolean(*init_screen)(int width, int height, boolean fullscreen,
145 uint64_t window_id, int argc, char **argv);
146 void (*exit_screen)(uint16_t mouse_x, uint16_t mouse_y);
147 void (*module_unload)(void);
148 const char *(*get_fps_list)(int palette);
149 boolean(*set_fps)(double fps);
150
151 const char *(*get_init_rfx)(int intention);
152
153#ifdef __WEED_EFFECTS_H__
155 const weed_plant_t **(*get_play_params)(weed_bootstrap_f f);
156#endif
157
158 // optional for YUV palettes
159 int *(*get_yuv_palette_sampling)(int palette);
160 int *(*get_yuv_palette_clamping)(int palette);
161 int *(*get_yuv_palette_subspace)(int palette);
162 int (*set_yuv_palette_sampling)(int sampling_type);
163 int (*set_yuv_palette_clamping)(int clamping_type);
164 int (*set_yuv_palette_subspace)(int subspace_type);
165
166 // audio streaming (deprecated, use init_audio(), render_audio_frame())
167 int *(*get_audio_fmts)(void);
168
169 uint32_t audio_codec; //(deprecated, use init_audio(), render_audio_frame())
170 // must match with the "acodec" LiVESList in interface.c
171 // and bitmaps in the encder plugins
172
173 // optional audio packeting
174 boolean(*init_audio)(int in_sample_rate, int in_nchans, int argc, char **argv);
175 boolean(*render_audio_frame_float)(float **audio, int nsamps);
176
177 uint64_t capabilities;
178
179 int fwidth, fheight;
180
185
189
192
193 const weed_plant_t **play_paramtmpls;
194 weed_plant_t **play_params;
195 weed_plant_t **alpha_chans;
199
200_vid_playback_plugin *open_vid_playback_plugin(const char *name, boolean in_use);
201void vid_playback_plugin_exit(void);
204void save_vpp_defaults(_vid_playback_plugin *, char *file);
205void load_vpp_defaults(_vid_playback_plugin *, char *file);
206
208
209#define DEFAULT_VPP "openGL"
210
211#define DEF_VPP_HSIZE DEF_FRAME_HSIZE_UNSCALED
212#define DEF_VPP_VSIZE DEF_FRAME_VSIZE_UNSCALED
213
214const weed_plant_t *pp_get_param(weed_plant_t **pparams, int idx);
215const weed_plant_t *pp_get_chan(weed_plant_t **pparams, int idx);
216
217// encoder plugins
218
219#define FFMPEG_ENCODER_NAME "ffmpeg_encoder"
220
221#define MULTI_ENCODER_NAME "multi_encoder"
222#define MULTI_ENCODER3_NAME "multi_encoder3"
223
224#define HI_THEORA_FORMAT "hi-theora"
225#define HI_MPEG_FORMAT "hi-mpg"
226#define HI_H_MKV_FORMAT "hi_h-mkv"
227#define HI_H_AVI_FORMAT "hi_h-avi"
228
229void do_plugin_encoder_error(const char *plugin_name_or_null);
230
231LiVESList *filter_encoders_by_img_ext(LiVESList *encoders, const char *img_ext);
232
233typedef struct {
234 char name[64];
235 uint32_t audio_codec;
236 // match with bitmaps in the encoder plugins
237 // and also anames array in plugins.c (see below)
238
239#define AUDIO_CODEC_MP3 0
240#define AUDIO_CODEC_PCM 1
241#define AUDIO_CODEC_MP2 2
242#define AUDIO_CODEC_VORBIS 3
243#define AUDIO_CODEC_AC3 4
244#define AUDIO_CODEC_AAC 5
245#define AUDIO_CODEC_AMR_NB 6
246#define AUDIO_CODEC_RAW 7 // reserved
247#define AUDIO_CODEC_WMA2 8
248#define AUDIO_CODEC_OPUS 9
249
250#define AUDIO_CODEC_MAX 31
251 //
252#define AUDIO_CODEC_NONE 32
253#define AUDIO_CODEC_UNKNOWN 33
254
255 uint32_t capabilities;
256
257#define HAS_RFX (1<<0)
258
259#define CAN_ENCODE_PNG (1<<2)
260#define ENCODER_NON_NATIVE (1<<3)
261
262 // current output format
263 char of_name[64];
264 char of_desc[128];
266 char of_restrict[1024];
267 char of_def_ext[16];
268 char ptext[512];
269}
271
272typedef struct {
274 // a value > 0. indicates some values are set. Unset values may be left as 0., or
277
278 double ctiming_ratio; // dynamic multiplier for timing info, depends on machine load and other factors.
284
288
289 // examples:
290 // iframe to next kframe with decode: kframe_nseek_time + n * kframe_delay_time + buffer_flush_tome + kdecode_time
291 // where n is the number of iframes skipped over
292
293 // seek from iframe to another iframe, passing over several kframes, decoding frames from final kframe to target
294
300
301 double xvals[64];
303
304// defined in plugins.c for the whole app
305extern const char *const anames[AUDIO_CODEC_MAX];
306
307// decoder plugins
308
309// seek_flags is a bitmap
310
312#define LIVES_SEEK_FAST (1<<0)
313#define LIVES_SEEK_FAST_REV (1<<1)
314
316#define LIVES_SEEK_NEEDS_CALCULATION (1<<2)
317#define LIVES_SEEK_QUALITY_LOSS (1<<3)
318
319typedef struct _lives_clip_data {
320 // fixed part
323
331
332 void *priv;
333
334 char *URI;
335
336 int nclips;
337 char container_name[512];
338
339 char title[1024];
340 char author[1024];
341 char comment[1024];
342
345
346 // video data
347 int width;
349 int64_t nframes;
352
359
360 float par;
361
363
364 float fps;
365
369 int64_t jump_limit;
370
371 int64_t kframe_start;
372 int64_t kframe_dist;
374
375 int *palettes;
376
379
385
386 char video_name[512];
387
388 /* audio data */
389 int arate;
392 boolean asigned;
393 boolean ainterleaf;
394 char audio_name[512];
395
398
399#define SYNC_HINT_AUDIO_TRIM_START (1<<0)
400#define SYNC_HINT_AUDIO_PAD_START (1<<1)
401#define SYNC_HINT_AUDIO_TRIM_END (1<<2)
402#define SYNC_HINT_AUDIO_PAD_END (1<<3)
403
404#define SYNC_HINT_VIDEO_PAD_START (1<<4)
405#define SYNC_HINT_VIDEO_PAD_END (1<<5)
406
408
410
411
412typedef struct {
413 // playback
414 const char *name;
415 void *handle;
416
417 // mandatory
418 const char *(*version)(void);
419
429 lives_clip_data_t *(*get_clip_data)(char *URI, const lives_clip_data_t *cdata);
430
432 boolean(*get_frame)(const lives_clip_data_t *, int64_t frame, int *rowstrides, int height, void **pixel_data);
433
436
439
440 // optional
441 const char *(*module_check_init)(void);
443 int64_t (*rip_audio)(const lives_clip_data_t *, const char *fname, int64_t stframe, int64_t nframes,
444 unsigned char **abuff);
446 void (*module_unload)(void);
448
449typedef struct {
452 int refs;
454
455LiVESList *load_decoders(void);
456boolean chill_decoder_plugin(int fileno);
457boolean decoder_plugin_move_to_first(const char *name);
458const lives_clip_data_t *get_decoder_cdata(int fileno, LiVESList *disabled, const lives_clip_data_t *fake_cdata);
460void close_clip_decoder(int clipno);
461lives_decoder_sys_t *open_decoder_plugin(const char *plname);
462void get_mime_type(char *text, int maxlen, const lives_clip_data_t *);
463void unload_decoder_plugins(void);
464lives_decoder_t *clone_decoder(int fileno);
465
466// RFX plugins
467
469#define PLUGIN_RENDERED_EFFECTS_BUILTIN "effects/rendered/"
470
472#define PLUGIN_RENDERED_EFFECTS_CUSTOM "plugins/effects/rendered/custom/"
473#define PLUGIN_RENDERED_EFFECTS_TEST "plugins/effects/rendered/test/"
474
476#define PLUGIN_RENDERED_EFFECTS_BUILTIN_SCRIPTS "effects/RFXscripts/"
477
479#define PLUGIN_RENDERED_EFFECTS_CUSTOM_SCRIPTS "plugins/effects/RFXscripts/custom/"
480#define PLUGIN_RENDERED_EFFECTS_TEST_SCRIPTS "plugins/effects/RFXscripts/test/"
481
483#define PLUGIN_RFX_SCRAP ""
484
487// TODO : use enum for widget type
488#define MAX_PARAM_WIDGETS 128
489
490#define RFX_MAX_NORM_WIDGETS 16
491
493#define WIDGET_RB_IN 16
494#define WIDGET_RB_OUT 17
495#define WIDGET_RB_DUMMY 18
496
498#define RFX_MAXSTRINGLEN (PATH_MAX - 1)
499
500typedef enum {
508
511
512typedef enum {
517
518typedef enum {
519 LIVES_PARAM_SPECIAL_TYPE_NONE = 0, // normal parameter type
520
521 // framedraw types
526
527 // text widget types
532
533 // misc types
537
538typedef struct {
539 // weed style part
540 char *name;
541 char *desc;
542
543 char *label;
544 int flags;
546 uint32_t hidden;
547
548 // reason(s) for hiding [bitmap]
550#define HIDDEN_UNDISPLAYABLE (1 << 0)
551#define HIDDEN_GUI_PERM (1 << 1)
552#define HIDDEN_MULTI (1 << 2)
553
554#define HIDDEN_STRUCTURAL (0x00FF)
555
557#define HIDDEN_NEEDS_REINIT (1 << 16)
558#define HIDDEN_GUI_TEMP (1 << 17)
559
560#define HIDDEN_TEMPORARY (0xFF00)
561
562 double step_size;
563 //int copy_to;
564 boolean transition;
565
566#define REINIT_FUNCTIONAL 1
567#define REINIT_VISUAL 2
568
570
571 boolean wrap;
572 int group;
574
575 int dp;
576 void *value;
577
578 double min;
579 double max;
580
581 void *def;
582 LiVESList *list;
583
585 short multi;
586#define PVAL_MULTI_NONE 0
587#define PVAL_MULTI_ANY 1
588#define PVAL_MULTI_PER_CHANNEL 2
589
590 //--------------------------------------------------
591 // extras for LiVES
592
594 LiVESWidget *widgets[MAX_PARAM_WIDGETS];
595 boolean onchange;
596
597 boolean changed;
598 boolean edited;
599
601
602 void *source;
603
605
606 // this may change
607 lives_param_special_t special_type; // the visual modification type (see paramspecial.h)
608 int special_type_index; // index within special_type (e.g for DEMASK, 0==left, 1==top, 2==width, 3==height)
610
611typedef enum {
619
620 // these are only used when prompting for a name
622 RFX_STATUS_RENAME = 129
624
625typedef struct {
626 char *name;
627 char *menu_text;
632
633 uint32_t props;
634#define RFX_PROPS_SLOW 0x0001
635#define RFX_PROPS_MAY_RESIZE 0x0002
636#define RFX_PROPS_BATCHG 0x0004
637
638#define RFX_PROPS_RESERVED1 0x1000
639#define RFX_PROPS_RESERVED2 0x2000
640#define RFX_PROPS_RESERVED3 0x4000
641#define RFX_PROPS_AUTO_BUILT 0x8000
642
643 LiVESWidget *menuitem;
645 uint32_t flags;
646#define RFX_FLAGS_NO_SLIDERS 0x0001
647#define RFX_FLAGS_NO_RESET 0x0002
648
651 void *source;
652 char delim[2];
653 char rfx_version[64];
654 LiVESList *gui_strings;
655 LiVESList *onchange_strings;
656 boolean is_template;
659
661
663
664void render_fx_get_params(lives_rfx_t *, const char *plugin_name, short status);
665
666void sort_rfx_array(lives_rfx_t *in_array, int num_elements);
667
668int find_rfx_plugin_by_name(const char *name, short status);
669
670void rfx_copy(lives_rfx_t *dest, lives_rfx_t *src, boolean full);
671
673
674void rfx_free(lives_rfx_t *);
675
676void rfx_free_all(void);
677
678void param_copy(lives_param_t *dest, lives_param_t *src, boolean full);
679
681
682boolean set_rfx_param_by_name_string(lives_rfx_t *, const char *name, const char *value, boolean update_visual);
683
684boolean get_rfx_param_by_name_string(lives_rfx_t *rfx, const char *name, char **return_value);
685
686typedef struct {
687 LiVESList *list;
692
693// filter types which can have candidates
694#define FX_CANDIDATE_AUDIO_VOL 0
695#define FX_CANDIDATE_RESIZER 1
696#define FX_CANDIDATE_DEINTERLACE 2
697
698#define MAX_FX_CANDIDATE_TYPES 3
699
700boolean get_bool_param(void *value);
701int get_int_param(void *value);
702double get_double_param(void *value);
703void get_colRGB24_param(void *value, lives_colRGB48_t *rgb);
704void get_colRGBA32_param(void *value, lives_colRGBA64_t *rgba);
705
706void set_bool_param(void *value, boolean);
707void set_int_param(void *value, int);
708void set_double_param(void *value, double);
709void set_colRGB24_param(void *value, short red, short green, short blue);
710void set_colRGBA32_param(void *value, short red, short green, short blue, short alpha);
711
714void set_rfx_params_from_store(lives_rfx_t *rfx, void **store);
715void rfx_params_store_free(lives_rfx_t *, void **store);
716
717LiVESList *array_to_string_list(char **array, int offset, int len);
718
719lives_rfx_t *weed_to_rfx(weed_plant_t *plant, boolean show_reinits);
720lives_param_t *weed_params_to_rfx(int npar, weed_plant_t *instance, boolean show_reinits);
721
722void rfx_clean_exe(lives_rfx_t *rfx);
723
724char *plugin_run_param_window(const char *scrap_text, LiVESVBox *vbox, lives_rfx_t **ret_rfx);
725
728
729typedef struct {
731 LiVESWidget *dialog;
732 LiVESWidget *spinbuttonh;
733 LiVESWidget *spinbuttonw;
734 LiVESWidget *apply_fx;
735 LiVESWidget *fps_entry;
736 LiVESWidget *pal_entry;
738 boolean keep_rfx;
740} _vppaw;
741
742_vppaw *on_vpp_advanced_clicked(LiVESButton *, livespointer);
743
744void on_decplug_advanced_clicked(LiVESButton *button, livespointer user_data);
745
747boolean check_encoder_restrictions(boolean get_extension, boolean user_audio, boolean save_all);
748
750
751#endif
weed_plant_t weed_layer_t
Definition: colourspace.h:71
int64_t rip_audio(const lives_clip_data_t *, const char *fname, int64_t stframe, int64_t nframes, unsigned char **abuff)
void clip_data_free(lives_clip_data_t *)
free clip data - this should be called for each instance before unloading the module
boolean get_frame(const lives_clip_data_t *, int64_t frame, int *rowstrides, int height, void **pixel_data)
frame starts at 0
boolean chill_out(const lives_clip_data_t *cdata)
free buffers when we arent playing sequentially / on standby
void rip_audio_cleanup(const lives_clip_data_t *)
void *(* malloc_f)(size_t)
Definition: machinestate.h:18
void *(* memset_f)(void *, int, size_t)
Definition: machinestate.h:23
void *(* memmove_f)(void *, const void *, size_t)
Definition: machinestate.h:24
void *(* memcpy_f)(void *, const void *, size_t)
Definition: machinestate.h:21
void *(* realloc_f)(void *, size_t)
Definition: machinestate.h:25
void *(* calloc_f)(size_t, size_t)
Definition: machinestate.h:26
void(* free_f)(void *)
Definition: machinestate.h:19
_palette * palette
interface colour settings
Definition: main.c:101
capability * get_capabilities(void)
Definition: main.c:3023
#define ulong
Definition: main.h:178
char * get_extension(const char *filename)
Definition: utils.c:3217
int64_t ticks_t
Definition: main.h:97
lives_interlace_t
Definition: main.h:790
void set_colRGBA32_param(void *value, short red, short green, short blue, short alpha)
Definition: plugins.c:3166
void unload_decoder_plugins(void)
Definition: plugins.c:2411
void vid_playback_plugin_exit(void)
Definition: plugins.c:1413
LiVESList * get_external_window_hints(lives_rfx_t *rfx)
get the interface hints set by a Weed filter in the filter_class.
Definition: plugins.c:3618
LiVESList * filter_encoders_by_img_ext(LiVESList *encoders, const char *img_ext)
Definition: plugins.c:2006
boolean decoder_plugin_move_to_first(const char *name)
Definition: plugins.c:2072
#define MAX_PARAM_WIDGETS
max number of display widgets per parameter (currently 7 for transition param with mergealign - spin ...
Definition: plugins.h:488
void rfx_clean_exe(lives_rfx_t *rfx)
Definition: plugins.c:3676
boolean check_rfx_for_lives(lives_rfx_t *)
Definition: plugins.c:2661
LiVESList * array_to_string_list(char **array, int offset, int len)
Definition: plugins.c:2883
LiVESList * get_plugin_list(const char *plugin_type, boolean allow_nonex, const char *plugdir, const char *filter_ext)
Definition: plugins.c:115
void get_colRGBA32_param(void *value, lives_colRGBA64_t *rgba)
Definition: plugins.c:3098
void close_vid_playback_plugin(_vid_playback_plugin *)
Definition: plugins.c:998
void param_copy(lives_param_t *dest, lives_param_t *src, boolean full)
Definition: plugins.c:3020
void ** store_rfx_params(lives_rfx_t *)
return an array of parameter values
void sort_rfx_array(lives_rfx_t *in_array, int num_elements)
Definition: plugins.c:2909
void render_fx_get_params(lives_rfx_t *, const char *plugin_name, short status)
Definition: plugins.c:2707
boolean chill_decoder_plugin(int fileno)
Definition: plugins.c:2425
#define AUDIO_CODEC_MAX
Definition: plugins.h:250
_vid_playback_plugin * open_vid_playback_plugin(const char *name, boolean in_use)
Definition: plugins.c:1099
LiVESList * load_decoders(void)
Definition: plugins.c:2092
lives_rfx_status_t
Definition: plugins.h:611
@ RFX_STATUS_TEST
test effects in the advanced menu
Definition: plugins.h:614
@ RFX_STATUS_RENAME
indicates a copy operation to test
Definition: plugins.h:622
@ RFX_STATUS_CUSTOM
custom effects in the custom menu
Definition: plugins.h:613
@ RFX_STATUS_COPY
indicates a copy operation to test
Definition: plugins.h:621
@ RFX_STATUS_WEED
indicates an internal RFX, created from a weed instance
Definition: plugins.h:616
@ RFX_STATUS_BUILTIN
factory presets
Definition: plugins.h:612
@ RFX_STATUS_INTERNAL
used for parsing RFX scraps generated internally (will possiblky replace SCRAP)
Definition: plugins.h:618
@ RFX_STATUS_ANY
indicates free choice of statuses
Definition: plugins.h:615
@ RFX_STATUS_SCRAP
used for parsing RFX scraps from external apps
Definition: plugins.h:617
lives_param_special_t
Definition: plugins.h:518
@ LIVES_PARAM_SPECIAL_TYPE_ASPECT_RATIO
Definition: plugins.h:535
@ LIVES_PARAM_SPECIAL_TYPE_PASSWORD
Definition: plugins.h:530
@ LIVES_PARAM_SPECIAL_TYPE_RECT_MULTIRECT
type may be used in framedraw
Definition: plugins.h:523
@ LIVES_PARAM_SPECIAL_TYPE_RECT_DEMASK
type may be used in framedraw
Definition: plugins.h:522
@ LIVES_PARAM_SPECIAL_TYPE_MERGEALIGN
Definition: plugins.h:534
@ LIVES_PARAM_SPECIAL_TYPE_SCALEDPOINT
type may be used in framedraw
Definition: plugins.h:525
@ LIVES_PARAM_SPECIAL_TYPE_FILEREAD
Definition: plugins.h:528
@ LIVES_PARAM_SPECIAL_TYPE_SINGLEPOINT
type may be used in framedraw
Definition: plugins.h:524
@ LIVES_PARAM_SPECIAL_TYPE_NONE
Definition: plugins.h:519
@ LIVES_PARAM_SPECIAL_TYPE_FONT_CHOOSER
Definition: plugins.h:531
@ LIVES_PARAM_SPECIAL_TYPE_FILEWRITE
Definition: plugins.h:529
void get_colRGB24_param(void *value, lives_colRGB48_t *rgb)
Definition: plugins.c:3093
const char *const anames[AUDIO_CODEC_MAX]
Definition: plugins.c:21
const lives_clip_data_t * get_decoder_cdata(int fileno, LiVESList *disabled, const lives_clip_data_t *fake_cdata)
Definition: plugins.c:2286
void set_rfx_params_from_store(lives_rfx_t *rfx, void **store)
void set_bool_param(void *value, boolean)
Definition: plugins.c:3103
void set_double_param(void *value, double)
Definition: plugins.c:3119
LiVESList * plugin_request(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:54
void do_plugin_encoder_error(const char *plugin_name_or_null)
Definition: plugins.c:1531
LiVESList * plugin_request_by_line(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:59
double get_double_param(void *value)
Definition: plugins.c:3086
boolean get_bool_param(void *value)
Definition: plugins.c:3072
boolean get_rfx_param_by_name_string(lives_rfx_t *rfx, const char *name, char **return_value)
Definition: plugins.c:3141
lives_decoder_sys_t * open_decoder_plugin(const char *plname)
Definition: plugins.c:2438
void on_decplug_advanced_clicked(LiVESButton *button, livespointer user_data)
Definition: plugins.c:2575
int64_t get_best_audio(_vid_playback_plugin *)
Definition: plugins.c:1441
lives_param_type_t
Definition: plugins.h:500
@ LIVES_PARAM_COLRGBA32
Definition: plugins.h:507
@ LIVES_PARAM_COLRGB24
Definition: plugins.h:504
@ LIVES_PARAM_STRING
Definition: plugins.h:505
@ LIVES_PARAM_UNDISPLAYABLE
Definition: plugins.h:509
@ LIVES_PARAM_STRING_LIST
Definition: plugins.h:506
@ LIVES_PARAM_BOOL
Definition: plugins.h:503
@ LIVES_PARAM_UNKNOWN
Definition: plugins.h:501
@ LIVES_PARAM_NUM
Definition: plugins.h:502
void get_mime_type(char *text, int maxlen, const lives_clip_data_t *)
Definition: plugins.c:2513
int find_rfx_plugin_by_name(const char *name, short status)
Definition: plugins.c:3177
boolean check_encoder_restrictions(boolean get_extension, boolean user_audio, boolean save_all)
Definition: plugins.c:1557
const weed_plant_t * pp_get_param(weed_plant_t **pparams, int idx)
Definition: plugins.c:1042
void rfx_params_store_free(lives_rfx_t *, void **store)
boolean vpp_try_match_palette(_vid_playback_plugin *vpp, weed_layer_t *layer)
Definition: plugins.c:1066
_vppaw * on_vpp_advanced_clicked(LiVESButton *, livespointer)
Definition: plugins.c:727
void set_int_param(void *value, int)
Definition: plugins.c:3114
const weed_plant_t * pp_get_chan(weed_plant_t **pparams, int idx)
Definition: plugins.c:1054
lives_intention_t
Definition: plugins.h:41
@ LIVES_INTENTION_EFFECT
Definition: plugins.h:55
@ LIVES_INTENTION_RENDER
Definition: plugins.h:48
@ LIVES_INTENTION_OTHER
Definition: plugins.h:62
@ LIVES_INTENTION_STREAM
Definition: plugins.h:46
@ LIVES_INTENTION_DUPLICATE
Definition: plugins.h:61
@ LIVES_INTENTION_PLAY
Definition: plugins.h:45
@ LIVES_INTENTION_BACKUP
Definition: plugins.h:51
@ LIVES_INTENTION_UPLOAD
Definition: plugins.h:54
@ LIVES_INTENTION_MIX
Definition: plugins.h:59
@ LIVES_INTENTION_ANALYSE
Definition: plugins.h:57
@ LIVES_INTENTION_UNKNOWN
Definition: plugins.h:42
@ LIVES_INTENTION_EFFECT_REALTIME
Definition: plugins.h:56
@ LIVES_INTENTION_DOWNLOAD
Definition: plugins.h:53
@ LIVES_INTENTION_RESTORE
Definition: plugins.h:52
@ LIVES_INTENTION_CONVERT
Definition: plugins.h:58
@ LIVES_INTENTION_SPLIT
Definition: plugins.h:60
@ LIVES_INTENTION_TRANSCODE
Definition: plugins.h:47
void load_vpp_defaults(_vid_playback_plugin *, char *file)
Definition: plugins.c:265
void do_rfx_cleanup(lives_rfx_t *)
Definition: plugins.c:2671
LiVESList * plugin_request_common(const char *plugin_type, const char *plugin_name, const char *request, const char *delim, boolean allow_blanks)
Definition: plugins.c:69
void rfx_params_free(lives_rfx_t *)
Definition: plugins.c:2973
int get_int_param(void *value)
Definition: plugins.c:3079
lives_rfx_source_t
Definition: plugins.h:512
@ LIVES_RFX_SOURCE_WEED
Definition: plugins.h:514
@ LIVES_RFX_SOURCE_RFX
Definition: plugins.h:513
@ LIVES_RFX_SOURCE_NEWCLIP
Definition: plugins.h:515
void close_clip_decoder(int clipno)
Definition: plugins.c:2382
void set_colRGB24_param(void *value, short red, short green, short blue)
Definition: plugins.c:3149
boolean set_rfx_param_by_name_string(lives_rfx_t *, const char *name, const char *value, boolean update_visual)
Definition: plugins.c:3124
lives_decoder_t * clone_decoder(int fileno)
Definition: plugins.c:2181
LiVESList * plugin_request_with_blanks(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:47
char * plugin_run_param_window(const char *scrap_text, LiVESVBox *vbox, lives_rfx_t **ret_rfx)
create an interface window for a plugin; possibly run it, and return the parameters
Definition: plugins.c:3717
lives_rfx_t * weed_to_rfx(weed_plant_t *plant, boolean show_reinits)
Definition: plugins.c:3564
void close_decoder_plugin(lives_decoder_t *)
Definition: plugins.c:2361
void rfx_free_all(void)
Definition: plugins.c:3010
lives_param_t * find_rfx_param_by_name(lives_rfx_t *, const char *name)
Definition: plugins.c:3189
LiVESList * plugin_request_by_space(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:64
void rfx_copy(lives_rfx_t *dest, lives_rfx_t *src, boolean full)
Definition: plugins.c:2931
lives_param_t * weed_params_to_rfx(int npar, weed_plant_t *instance, boolean show_reinits)
Definition: plugins.c:3201
void save_vpp_defaults(_vid_playback_plugin *, char *file)
Definition: plugins.c:181
void rfx_free(lives_rfx_t *)
Definition: plugins.c:2987
LiVESList * get_plugin_result(const char *command, const char *delim, boolean allow_blanks, boolean strip)
Definition: plugins.c:30
uint32_t capabilities
Definition: plugins.h:255
uint32_t audio_codec
Definition: plugins.h:235
int of_allowed_acodecs
Definition: plugins.h:265
uint64_t capabilities
Definition: plugins.h:177
weed_plant_t ** alpha_chans
Definition: plugins.h:195
char ** extra_argv
Definition: plugins.h:191
int palette
width in pixels, but converted to macropixels for the player
Definition: plugins.h:181
uint32_t audio_codec
Definition: plugins.h:169
weed_plant_t ** play_params
Definition: plugins.h:194
const weed_plant_t ** play_paramtmpls
Definition: plugins.h:193
video playback plugin window - fixed part
Definition: plugins.h:729
LiVESWidget * spinbuttonh
Definition: plugins.h:732
LiVESWidget * fps_entry
Definition: plugins.h:735
LiVESWidget * apply_fx
Definition: plugins.h:734
lives_rfx_t * rfx
Definition: plugins.h:737
LiVESWidget * spinbuttonw
Definition: plugins.h:733
int intention
Definition: plugins.h:739
boolean keep_rfx
Definition: plugins.h:738
_vid_playback_plugin * plugin
Definition: plugins.h:730
LiVESWidget * dialog
Definition: plugins.h:731
LiVESWidget * pal_entry
Definition: plugins.h:736
double idecode_time
Definition: plugins.h:279
double kframe_kframe_time
avg extra time per iframe to arrive at following kframe
Definition: plugins.h:285
double kframe_nseek_time
time to flush buffers after a seek
Definition: plugins.h:282
double buffer_flush_time
avg time to decode keyframe
Definition: plugins.h:281
double kdecode_time
avg time to decode inter frame
Definition: plugins.h:280
double kframe_inter_time
avg time to seek from keyframe to keyframe (const) :: default == 0. (use kframe_nseek_time)
Definition: plugins.h:286
double kframe_extra_time
extra time to seek from kframe to kframe per iframe between them :: default == kframe_delay_time
Definition: plugins.h:287
double ctiming_ratio
a ctiming_ratio of 0. indicates that none of the other values are set.
Definition: plugins.h:278
double kframe_delay_time
avg time to seek to following keyframe (const)
Definition: plugins.h:283
int64_t kframe_start
Definition: plugins.h:371
boolean ainterleaf
Definition: plugins.h:393
int64_t jump_limit
for internal use
Definition: plugins.h:369
int current_palette
plugin should init this to palettes[0] if URI changes
Definition: plugins.h:378
float max_decode_fps
optional info ////////////////
Definition: plugins.h:367
malloc_f * ext_malloc
Definition: plugins.h:324
int YUV_sampling
plugin can change per frame
Definition: plugins.h:381
int seek_flag
plugin can change per frame
Definition: plugins.h:397
int nclips
number of clips (titles) in container
Definition: plugins.h:336
lives_interlace_t interlace
Definition: plugins.h:350
free_f * ext_free
Definition: plugins.h:325
boolean asigned
Definition: plugins.h:392
int * palettes
number forames from one keyframe to the next, 0 if unknown
Definition: plugins.h:375
int frame_width
frame is the surrounding part, including any black border (>=width)
Definition: plugins.h:357
memset_f * ext_memset
Definition: plugins.h:327
int current_clip
plugin should init this to 0 if URI changes
Definition: plugins.h:344
memmove_f * ext_memmove
Definition: plugins.h:328
memcpy_f * ext_memcpy
Definition: plugins.h:326
int offs_x
x and y offsets of picture within frame for primary pixel plane
Definition: plugins.h:355
int64_t nframes
Definition: plugins.h:349
int frame_gamma
values WEED_GAMMA_UNKNOWN (0), WEED_GAMMA_SRGB (1), WEED_GAMMA_LINEAR (2)
Definition: plugins.h:384
int * rec_rowstrides
if non-NULL, plugin can set recommended vals, pointer to single value set by host
Definition: plugins.h:351
realloc_f * ext_realloc
Definition: plugins.h:329
lives_struct_def_t lsd
Definition: plugins.h:321
int64_t fwd_seek_time
Definition: plugins.h:368
float video_start_time
Definition: plugins.h:362
calloc_f * ext_calloc
Definition: plugins.h:330
lives_plugin_id_t plugin_id
Definition: plugins.h:322
int64_t kframe_dist
frame number of first keyframe (usually 0)
Definition: plugins.h:372
char * URI
the URI of this cdata
Definition: plugins.h:334
float par
pixel aspect ratio (sample width / sample height)
Definition: plugins.h:360
const char * name
plugin name
Definition: plugins.h:414
void * handle
may be shared between several instances
Definition: plugins.h:415
const lives_decoder_sys_t * decoder
Definition: plugins.h:450
lives_clip_data_t * cdata
Definition: plugins.h:451
lives_rfx_t * rfx
pointer to rfx for current delegate (or NULL)
Definition: plugins.h:690
ulong func
menuitem activation function for current delegate
Definition: plugins.h:689
int delegate
offset in list of current delegate
Definition: plugins.h:688
LiVESList * list
list of filter_idx from which user can delegate
Definition: plugins.h:687
uint64_t capabilities
type specific capabilities
Definition: plugins.h:80
uint64_t intent
Definition: plugins.h:76
uint64_t out_chan_types
channel types produced
Definition: plugins.h:78
uint64_t in_chan_types
channel types accepted
Definition: plugins.h:77
uint64_t intents
Definition: plugins.h:79
lives_param_type_t type
Definition: plugins.h:573
char * name
Definition: plugins.h:540
boolean use_mnemonic
Definition: plugins.h:545
char * label
Definition: plugins.h:543
boolean changed
Definition: plugins.h:597
short multi
multivalue type - single value, multi value, or per channel
Definition: plugins.h:585
boolean onchange
is there a trigger ?
Definition: plugins.h:595
boolean wrap
Definition: plugins.h:571
void * source
Definition: plugins.h:602
int dp
decimals, 0 for int and bool
Definition: plugins.h:575
uint32_t hidden
Definition: plugins.h:546
char * desc
Definition: plugins.h:541
boolean transition
Definition: plugins.h:564
int special_type_index
Definition: plugins.h:608
void * def
default values
Definition: plugins.h:581
double min
Definition: plugins.h:578
double step_size
Definition: plugins.h:562
lives_param_special_t special_type
Definition: plugins.h:607
lives_rfx_source_t source_type
Definition: plugins.h:604
boolean edited
Definition: plugins.h:598
void * value
current value(s)
Definition: plugins.h:576
double max
for string this is max characters
Definition: plugins.h:579
boolean change_blocked
Definition: plugins.h:600
LiVESList * list
for string list (choices)
Definition: plugins.h:582
int api_version_minor
Definition: plugins.h:87
int pl_version_minor
Definition: plugins.h:90
lives_intentcaps_t * capabilities
for future use
Definition: plugins.h:91
int api_version_major
version of interface API
Definition: plugins.h:86
int pl_version_major
version of plugin
Definition: plugins.h:89
LiVESWidget * menuitem
the menu item which activates this effect
Definition: plugins.h:643
int num_params
Definition: plugins.h:644
uint32_t props
Definition: plugins.h:633
char * menu_text
for Weed, this is the filter_class "name"
Definition: plugins.h:627
char * action_desc
for Weed "Applying $s"
Definition: plugins.h:628
LiVESList * gui_strings
rfxscript for constructing the params, param window and onchange triggers
Definition: plugins.h:654
uint32_t flags
Definition: plugins.h:645
lives_param_t * params
Definition: plugins.h:649
LiVESList * onchange_strings
rfxscript for constructing the params, param window and onchange triggers
Definition: plugins.h:655
lives_rfx_status_t status
Definition: plugins.h:631
int num_in_channels
Definition: plugins.h:630
void * source
points to the source (e.g. a weed_plant_t)
Definition: plugins.h:651
boolean is_template
Definition: plugins.h:656
lives_rfx_source_t source_type
Definition: plugins.h:650
int needs_reinit
Definition: plugins.h:657
int min_frames
for Weed, 1
Definition: plugins.h:629
char * name
the name of the executable (so we can run it !)
Definition: plugins.h:626
112 bytes
Definition: lsd.h:241
boolean init_audio(int sample_rate, int nchans, int argc, char **argv)
newer style
boolean set_yuv_palette_clamping(int clamping_type)
host sets the palette sampling (optional)
void module_unload(void)
this is called when module is unloaded
boolean init_screen(int width, int height, boolean fullscreen, uint64_t window_id, int argc, char **argv)
ready the screen to play (optional)
boolean render_frame(int hsize, int vsize, int64_t timecode, void **pixel_data, void **return_data, void **play_params)
display one frame, adding effects if you like, and resizing it to screen size if possible (VPP_CAN_RE...
boolean play_frame(weed_layer_t *frame, int64_t tc, weed_layer_t *ret)
updated version of render_frame: input is a weed_layer and timecode, if ret is non NULL,...
boolean set_yuv_palette_sampling(int sampling_type)
host sets the palette sampling (optional)
int boolean
Definition: videoplugin.h:54
void exit_screen(int16_t mouse_x, int16_t mouse_y)
destroy the screen, return mouse to original posn., allow the host GUI to take over (optional)
boolean set_yuv_palette_subspace(int subspace_type)
host sets the palette subspace (optional)
boolean set_fps(double fps)
boolean render_audio_frame_float(float **audio, int nsamps)
boolean set_palette(int palette)
host sets the palette used