LiVES  2.8.1
plugins.h
Go to the documentation of this file.
1 // plugins.h
2 // LiVES
3 // (c) G. Finch 2003-2016 <salsaman@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 
20 // generic plugins
21 
22 LiVESList *get_plugin_list(const char *plugin_type, boolean allow_nonex, const char *plugdir, const char *filter_ext);
23 #define PLUGIN_ENCODERS "encoders"
24 #define PLUGIN_DECODERS "decoders"
25 #define PLUGIN_VID_PLAYBACK "playback/video"
26 #define PLUGIN_AUDIO_STREAM "playback/audiostream"
27 
28 #define AUDIO_STREAMER_NAME "audiostreamer.pl"
29 
31 #define PLUGIN_THEMES "themes"
32 #define PLUGIN_THEMES_CUSTOM "custom/themes"
33 
35 #define PLUGIN_EFFECTS_WEED "weed"
36 #define PLUGIN_WEED_FX_BUILTIN "effects/realtime/weed"
37 
38 
39 LiVESList *plugin_request(const char *plugin_type, const char *plugin_name, const char *request);
40 LiVESList *plugin_request_with_blanks(const char *plugin_type, const char *plugin_name, const char *request);
41 LiVESList *plugin_request_by_line(const char *plugin_type, const char *plugin_name, const char *request);
42 LiVESList *plugin_request_by_space(const char *plugin_type, const char *plugin_name, const char *request);
43 LiVESList *plugin_request_common(const char *plugin_type, const char *plugin_name, const char *request, const char *delim,
44  boolean allow_blanks);
45 
46 #ifndef __WEED_EFFECTS_H__
47 typedef weed_plant_t *(*weed_bootstrap_f)(weed_default_getter_f *value, int num_versions, int *plugin_versions);
48 #endif
49 
51 typedef boolean(*plugin_keyfunc)(boolean down, uint16_t unicode, uint16_t keymod);
52 
53 
54 typedef struct {
55  // playback
56  char name[64];
57  void *handle;
58 
59  // mandatory
60  const char *(*module_check_init)(void);
61  const char *(*version)(void);
62  const char *(*get_description)(void);
63 
64  int *(*get_palette_list)(void);
66  uint64_t (*get_capabilities)(int palette);
67 
68  boolean(*render_frame)(int hsize, int vsize, int64_t timecode, void **pixel_data, void **return_data,
69  weed_plant_t **play_params);
70 
71  // optional
72  boolean(*init_screen)(int width, int height, boolean fullscreen, uint64_t window_id, int argc, char **argv);
73  void (*exit_screen)(uint16_t mouse_x, uint16_t mouse_y);
74  void (*module_unload)(void);
75  const char *(*get_fps_list)(int palette);
76  boolean(*set_fps)(double fps);
77 
78  const char *(*get_init_rfx)(void);
79 
81  const weed_plant_t **(*get_play_params)(weed_bootstrap_f f);
82 
83  // optional for YUV palettes
84  int *(*get_yuv_palette_sampling)(int palette);
85  int *(*get_yuv_palette_clamping)(int palette);
86  int *(*get_yuv_palette_subspace)(int palette);
90 
91  // audio streaming
92  int *(*get_audio_fmts)(void);
93 
94  uint32_t audio_codec;
95  // must match with the "acodec" LiVESList in interface.c
96  // and bitmaps in the encder plugins, with this one addition:
97 
98  uint64_t capabilities;
99 
100 #define VPP_CAN_RESIZE (1<<0)
101 #define VPP_CAN_RETURN (1<<1)
102 #define VPP_LOCAL_DISPLAY (1<<2)
103 
104  int fwidth,fheight;
105 
106  int palette;
110 
113  double fixed_fpsd;
114 
116  char **extra_argv;
117 
118  const weed_plant_t **play_paramtmpls;
119  weed_plant_t **play_params;
120  weed_plant_t **alpha_chans;
123 
125 
126 
127 #define DEF_VPP_HSIZE 320.
128 #define DEF_VPP_VSIZE 240.
129 
130 _vid_playback_plugin *open_vid_playback_plugin(const char *name, boolean in_use);
131 void vid_playback_plugin_exit(void);
134 void save_vpp_defaults(_vid_playback_plugin *, char *file);
135 void load_vpp_defaults(_vid_playback_plugin *, char *file);
136 
137 
138 const weed_plant_t *pp_get_param(weed_plant_t **pparams, int idx);
139 const weed_plant_t *pp_get_chan(weed_plant_t **pparams, int idx);
140 
141 // encoder plugins
142 
143 #define MULTI_ENCODER_NAME "multi_encoder"
144 #define MULTI_ENCODER3_NAME "multi_encoder3"
145 
146 #define HI_THEORA_FORMAT "hi-theora"
147 #define HI_MPEG_FORMAT "hi-mpg"
148 #define HI_H_MKV_FORMAT "hi_h-mkv"
149 #define HI_H_AVI_FORMAT "hi_h-avi"
150 
151 
152 void do_plugin_encoder_error(const char *plugin_name_or_null);
153 
154 LiVESList *filter_encoders_by_img_ext(LiVESList *encoders, const char *img_ext);
155 
156 typedef struct {
157  char name[64];
158  uint32_t audio_codec;
159  // match with bitmaps in the encoder plugins
160  // and also anames array in plugins.c (see below)
161 
162 #define AUDIO_CODEC_MP3 0
163 #define AUDIO_CODEC_PCM 1
164 #define AUDIO_CODEC_MP2 2
165 #define AUDIO_CODEC_VORBIS 3
166 #define AUDIO_CODEC_AC3 4
167 #define AUDIO_CODEC_AAC 5
168 #define AUDIO_CODEC_AMR_NB 6
169 #define AUDIO_CODEC_RAW 7 // reserved
170 #define AUDIO_CODEC_WMA2 8
171 
172 
173 #define AUDIO_CODEC_MAX 31
174  //
175 #define AUDIO_CODEC_NONE 32
176 #define AUDIO_CODEC_UNKNOWN 33
177 
178  uint32_t capabilities;
179 
180 
181 #define HAS_RFX (1<<0)
182 
183 #define CAN_ENCODE_PNG (1<<2)
184 #define ENCODER_NON_NATIVE (1<<3)
185 
186  // current output format
187  char of_name[64];
188  char of_desc[128];
190  char of_restrict[1024];
191  char of_def_ext[16];
192  char ptext[512];
193 }
194 _encoder;
195 
196 
197 // defined in plugins.c for the whole app
198 extern const char *anames[AUDIO_CODEC_MAX];
199 
200 
201 // decoder plugins
202 
203 // seek_flags is a bitmap
204 
206 #define LIVES_SEEK_FAST (1<<0)
207 
209 #define LIVES_SEEK_NEEDS_CALCULATION (1<<1)
210 #define LIVES_SEEK_QUALITY_LOSS (1<<2)
211 
212 
213 // must be exactly the same as in decplugin.h
214 
215 typedef struct {
216  char *URI;
217 
218  int nclips;
219  char container_name[512];
220 
221  char title[256];
222  char author[256];
223  char comment[256];
224 
227 
228  // video data
229  int width; // width and height of picture in frame
230  int height;
231  int64_t nframes;
233 
236  int offs_x;
237  int offs_y;
238  int frame_width; // frame width and height are the size of the outer frame
240 
241  float par;
242 
244 
245  float fps;
246 
247  int *palettes;
248 
251 
255  char video_name[512];
256 
257  /* audio data */
258  int arate;
259  int achans;
260  int asamps;
261  boolean asigned;
262  boolean ainterleaf;
263  char audio_name[512];
264 
266 
267 #define SYNC_HINT_AUDIO_TRIM_START (1<<0)
268 #define SYNC_HINT_AUDIO_PAD_START (1<<1)
269 #define SYNC_HINT_AUDIO_TRIM_END (1<<2)
270 #define SYNC_HINT_AUDIO_PAD_END (1<<3)
271 
272 #define SYNC_HINT_VIDEO_PAD_START (1<<4)
273 #define SYNC_HINT_VIDEO_PAD_END (1<<5)
274 
276 
277 
278  void *priv;
279 
281 
282 
283 
284 typedef struct {
285  // playback
286  char *name;
287  void *handle;
288 
289  // mandatory
290  const char *(*version)(void);
291 
301  lives_clip_data_t *(*get_clip_data)(char *URI, const lives_clip_data_t *cdata);
302 
304  boolean(*get_frame)(const lives_clip_data_t *, int64_t frame, int *rowstrides, int height, void **pixel_data);
305 
308 
309  // optional
310  const char *(*module_check_init)(void);
312  int64_t (*rip_audio)(const lives_clip_data_t *, const char *fname, int64_t stframe, int64_t nframes,
313  unsigned char **abuff);
314  void (*rip_audio_cleanup)(const lives_clip_data_t *cdata);
315  void (*module_unload)(void);
316 
318 
319 
320 
321 
322 typedef struct {
326 
327 
328 
329 
330 
331 const lives_clip_data_t *get_decoder_cdata(int fileno, LiVESList *disabled, const lives_clip_data_t *fake_cdata);
333 lives_decoder_sys_t *open_decoder_plugin(const char *plname);
334 void get_mime_type(char *text, int maxlen, const lives_clip_data_t *);
335 void unload_decoder_plugins(void);
336 
337 boolean decplugin_supports_palette(const lives_decoder_t *dplug, int palette);
338 
339 lives_decoder_t *clone_decoder(int fileno);
340 
341 
342 // RFX plugins
343 
344 
346 #define PLUGIN_RENDERED_EFFECTS_BUILTIN "effects/rendered/"
347 
349 #define PLUGIN_RENDERED_EFFECTS_CUSTOM "plugins/effects/rendered/custom/"
350 #define PLUGIN_RENDERED_EFFECTS_TEST "plugins/effects/rendered/test/"
351 
353 #define PLUGIN_RENDERED_EFFECTS_BUILTIN_SCRIPTS "effects/RFXscripts/"
354 
356 #define PLUGIN_RENDERED_EFFECTS_CUSTOM_SCRIPTS "plugins/effects/RFXscripts/custom/"
357 #define PLUGIN_RENDERED_EFFECTS_TEST_SCRIPTS "plugins/effects/RFXscripts/test/"
358 
360 #define PLUGIN_RFX_SCRAP ""
361 
362 
364 #define MAX_PARAM_WIDGETS 5
365 
367 #define RFX_MAXSTRINGLEN 1024
368 
369 
370 typedef enum {
371 
379 
381 
383 
384 
385 typedef enum {
389 
390 
391 typedef enum {
392  LIVES_PARAM_SPECIAL_TYPE_NONE=0, // normal parameter type
393 
394  // framedraw types
399 
400  // text widget types
403 
404  // misc types
407 
409 
410 
411 typedef struct {
412  // weed style part
413  char *name;
414  char *desc;
415 
416  char *label;
417  int flags;
418  boolean use_mnemonic;
421  int hidden;
422 
423  // reason(s) for hiding [bitmap]
424 #define HIDDEN_GUI (1<<0)
425 #define HIDDEN_MULTI (1<<1)
426 #define HIDDEN_NEEDS_REINIT (1<<2)
427 #define HIDDEN_COMPOUND_INTERNAL (1<<3)
428 
429  double step_size;
430  //int copy_to;
431  boolean transition;
432  boolean reinit;
433 
434  boolean wrap;
435  int group;
437 
438  int dp;
439  void *value;
440 
441  double min;
442  double max;
443 
444  void *def;
445  LiVESList *list;
446 
448  short multi;
449 #define PVAL_MULTI_NONE 0
450 #define PVAL_MULTI_ANY 1
451 #define PVAL_MULTI_PER_CHANNEL 2
452 
453  //--------------------------------------------------
454  // extras for LiVES
455 
457  LiVESWidget *widgets[MAX_PARAM_WIDGETS];
458  boolean onchange;
459 
460  boolean changed;
461 
462  boolean change_blocked;
463 
464  void *source;
465 
467 
468  // this may change
469  lives_param_special_t special_type; // the visual modification type (see paramspecial.h)
470  int special_type_index; // index within special_type (e.g for DEMASK, 0==left, 1==top, 2==width, 3==height)
471 
472 } lives_param_t;
473 
474 
475 typedef enum {
482 
483  // these are only used when prompting for a name
487 
488 
489 
490 
491 typedef struct {
492  char *name;
493  char *menu_text;
494  char *action_desc;
498 
499 
500  uint32_t props;
501 #define RFX_PROPS_SLOW 0x0001
502 #define RFX_PROPS_MAY_RESIZE 0x0002
503 #define RFX_PROPS_BATCHG 0x0004
504 
505 
506 #define RFX_PROPS_RESERVED1 0x1000
507 #define RFX_PROPS_RESERVED2 0x2000
508 #define RFX_PROPS_RESERVED3 0x4000
509 #define RFX_PROPS_AUTO_BUILT 0x8000
510 
511  LiVESWidget *menuitem;
513  uint32_t flags;
514 #define RFX_FLAGS_NO_SLIDERS 0x0001
515 
516 
519  void *source;
520  void *extra;
521  char delim[2];
522  boolean is_template;
523 
524 } lives_rfx_t;
525 
526 
528 
530 
531 void render_fx_get_params(lives_rfx_t *, const char *plugin_name, short status);
532 
533 void sort_rfx_array(lives_rfx_t *in_array, int num_elements);
534 
535 int find_rfx_plugin_by_name(const char *name, short status);
536 
537 void rfx_copy(lives_rfx_t *src, lives_rfx_t *dest, boolean full);
538 
539 void rfx_params_free(lives_rfx_t *rfx);
540 
541 void rfx_free(lives_rfx_t *rfx);
542 
543 void rfx_free_all(void);
544 
545 void param_copy(lives_param_t *src, lives_param_t *dest, boolean full);
546 
547 
548 typedef struct {
549  LiVESList *list;
550  int delegate;
554 
555 // filter types which can have candidates
556 #define FX_CANDIDATE_AUDIO_VOL 0
557 #define FX_CANDIDATE_RESIZER 1
558 #define FX_CANDIDATE_DEINTERLACE 2
559 
560 #define MAX_FX_CANDIDATE_TYPES 3
561 
562 
563 
564 
565 
566 boolean get_bool_param(void *value);
567 int get_int_param(void *value);
568 double get_double_param(void *value);
569 void get_colRGB24_param(void *value, lives_colRGB48_t *rgb);
570 void get_colRGBA32_param(void *value, lives_colRGBA64_t *rgba);
571 
572 void set_bool_param(void *value, boolean);
573 void set_int_param(void *value, int);
574 void set_double_param(void *value, double);
575 void set_colRGB24_param(void *value, short red, short green, short blue);
576 void set_colRGBA32_param(void *value, short red, short green, short blue, short alpha);
577 
579 void **store_rfx_params(lives_rfx_t *);
580 void set_rfx_params_from_store(lives_rfx_t *rfx, void **store);
581 void rfx_params_store_free(lives_rfx_t *, void **store);
582 
583 LiVESList *array_to_string_list(char **array, int offset, int len);
584 
585 lives_rfx_t *weed_to_rfx(weed_plant_t *plant, boolean show_reinits);
586 lives_param_t *weed_params_to_rfx(int npar, weed_plant_t *instance, boolean show_reinits);
587 
588 char *plugin_run_param_window(const char *get_com, LiVESVBox *vbox, lives_rfx_t **ret_rfx);
589 
592 typedef struct {
594  LiVESWidget *dialog;
595  LiVESWidget *spinbuttonh;
596  LiVESWidget *spinbuttonw;
597  LiVESWidget *fps_entry;
598  LiVESWidget *pal_entry;
600 } _vppaw;
601 
602 _vppaw *on_vpp_advanced_clicked(LiVESButton *, livespointer);
603 void on_decplug_advanced_clicked(LiVESButton *button, livespointer user_data);
604 
605 LiVESList *get_external_window_hints(lives_rfx_t *rfx);
606 boolean check_encoder_restrictions(boolean get_extension, boolean user_audio, boolean save_all);
607 
608 
609 
611 
612 #endif
const weed_plant_t * pp_get_param(weed_plant_t **pparams, int idx)
Definition: plugins.c:1120
int fwidth
Definition: plugins.h:104
indicates an internal RFX, created from a weed instance
Definition: plugins.h:480
int sync_hint
Definition: plugins.h:275
double min
Definition: plugins.h:441
Definition: plugins.h:156
void unload_decoder_plugins(void)
Definition: plugins.c:2378
weed_plant_t *(* weed_bootstrap_f)(weed_default_getter_f *value, int num_versions, int *plugin_versions)
Definition: plugins.h:47
lives_clip_data_t * cdata
Definition: plugins.h:324
void close_decoder_plugin(lives_decoder_t *)
Definition: plugins.c:2354
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) ...
fn_ptr display_func
Definition: plugins.h:420
video playback plugin window - fixed part
Definition: plugins.h:592
void * source
points to the source (e.g. a weed_plant_t)
Definition: plugins.h:519
Definition: plugins.h:372
void set_colRGBA32_param(void *value, short red, short green, short blue, short alpha)
Definition: plugins.c:3115
Definition: plugins.h:373
void do_rfx_cleanup(lives_rfx_t *)
Definition: plugins.c:2636
double fixed_fpsd
Definition: plugins.h:113
void * source
Definition: plugins.h:464
int boolean
Definition: videoplugin.h:50
void do_plugin_encoder_error(const char *plugin_name_or_null)
Definition: plugins.c:1554
int height
Definition: plugins.h:230
boolean set_yuv_palette_subspace(int subspace_type)
host sets the palette subspace (optional)
void get_colRGB24_param(void *value, lives_colRGB48_t *rgb)
Definition: plugins.c:3079
int frame_height
Definition: plugins.h:239
void *(* fn_ptr)(void *ptr)
Definition: main.h:327
boolean get_frame(const lives_clip_data_t *, int64_t frame, int *rowstrides, int height, void **pixel_data)
frame starts at 0
lives_param_t * weed_params_to_rfx(int npar, weed_plant_t *instance, boolean show_reinits)
Definition: plugins.c:3143
Definition: plugins.h:284
char * action_desc
for Weed "Applying $s"
Definition: plugins.h:494
char * label
Definition: plugins.h:416
char * name
Definition: plugins.h:413
boolean check_rfx_for_lives(lives_rfx_t *)
Definition: plugins.c:2627
void rfx_params_store_free(lives_rfx_t *, void **store)
lives_rfx_source_t source_type
Definition: plugins.h:466
Definition: plugins.h:322
uint64_t capabilities
Definition: plugins.h:98
used for parsing RFX scraps from external apps
Definition: plugins.h:481
boolean changed
Definition: plugins.h:460
int offs_x
Definition: plugins.h:236
lives_rfx_t * weed_to_rfx(weed_plant_t *plant, boolean show_reinits)
Definition: plugins.c:3508
LiVESWidget * spinbuttonw
Definition: plugins.h:596
double step_size
Definition: plugins.h:429
boolean set_palette(int palette)
host sets the palette used
char * URI
the URI of this cdata
Definition: plugins.h:216
LiVESWidget * spinbuttonh
Definition: plugins.h:595
factory presets
Definition: plugins.h:476
char * name
the name of the executable (so we can run it !)
Definition: plugins.h:492
void * extra
for future use
Definition: plugins.h:520
int64_t get_best_audio(_vid_playback_plugin *)
Definition: plugins.c:1452
int nclips
number of clips (titles) in container
Definition: plugins.h:218
LiVESList * plugin_request_by_space(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:186
Definition: main.h:317
int arate
Definition: plugins.h:258
void close_vid_playback_plugin(_vid_playback_plugin *)
Definition: plugins.c:1079
void set_colRGB24_param(void *value, short red, short green, short blue)
Definition: plugins.c:3099
void * value
current value(s)
Definition: plugins.h:439
int hidden
Definition: plugins.h:421
void set_int_param(void *value, int)
Definition: plugins.c:3091
Definition: plugins.h:392
void ** store_rfx_params(lives_rfx_t *)
return an array of parameter values
type may be used in framedraw
Definition: plugins.h:395
int get_int_param(void *value)
Definition: plugins.c:3067
Definition: plugins.h:402
LiVESList * list
list of filter_idx from which user can delegate
Definition: plugins.h:549
LiVESWidget * dialog
Definition: plugins.h:594
float fps
Definition: plugins.h:245
void param_copy(lives_param_t *src, lives_param_t *dest, boolean full)
Definition: plugins.c:3011
boolean set_fps(double fps)
lives_param_special_t
Definition: plugins.h:391
boolean change_blocked
Definition: plugins.h:462
Definition: plugins.h:406
void load_vpp_defaults(_vid_playback_plugin *, char *file)
Definition: plugins.c:422
void rfx_free(lives_rfx_t *rfx)
Definition: plugins.c:2980
int width
Definition: plugins.h:229
char * name
plugin name
Definition: plugins.h:286
int64_t nframes
Definition: plugins.h:231
void get_colRGBA32_param(void *value, lives_colRGBA64_t *rgba)
Definition: plugins.c:3083
boolean wrap
Definition: plugins.h:434
_palette * palette
Definition: main.c:89
boolean check_encoder_restrictions(boolean get_extension, boolean user_audio, boolean save_all)
Definition: plugins.c:1579
weed_plant_t ** alpha_chans
Definition: plugins.h:120
lives_rfx_t * rfx
pointer to rfx for current delegate (or NULL)
Definition: plugins.h:552
boolean set_yuv_palette_sampling(int sampling_type)
host sets the palette sampling (optional)
int offs_y
Definition: plugins.h:237
test effects in the advanced menu
Definition: plugins.h:478
int delegate
offset in list of current delegate
Definition: plugins.h:550
lives_param_type_t type
Definition: plugins.h:436
void rfx_free_all(void)
Definition: plugins.c:3002
char * desc
Definition: plugins.h:414
_vid_playback_plugin * open_vid_playback_plugin(const char *name, boolean in_use)
Definition: plugins.c:1145
Definition: plugins.h:386
int flags
Definition: plugins.h:417
int frame_width
frame is the surrounding part, including any black border (>=width)
Definition: plugins.h:238
int current_clip
plugin should init this to 0 if URI changes
Definition: plugins.h:226
const lives_decoder_sys_t * decoder
Definition: plugins.h:323
lives_decoder_t * clone_decoder(int fileno)
Definition: plugins.c:2187
void * def
default values
Definition: plugins.h:444
type may be used in framedraw
Definition: plugins.h:397
lives_param_special_t special_type
Definition: plugins.h:469
boolean reinit
Definition: plugins.h:432
int group
Definition: plugins.h:435
lives_decoder_sys_t * open_decoder_plugin(const char *plname)
Definition: plugins.c:2393
lives_rfx_status_t
Definition: plugins.h:475
lives_rfx_t * rfx
Definition: plugins.h:599
char * get_extension(const char *filename)
Definition: utils.c:2458
boolean use_mnemonic
Definition: plugins.h:418
double get_double_param(void *value)
Definition: plugins.c:3073
void rfx_copy(lives_rfx_t *src, lives_rfx_t *dest, boolean full)
Definition: plugins.c:2948
uint32_t audio_codec
Definition: plugins.h:94
void render_fx_get_params(lives_rfx_t *, const char *plugin_name, short status)
Definition: plugins.c:2676
lives_interlace_t interlace
Definition: plugins.h:232
Definition: plugins.h:375
boolean is_template
Definition: plugins.h:522
void set_rfx_params_from_store(lives_rfx_t *rfx, void **store)
Definition: plugins.h:387
float par
pixel aspect ratio
Definition: plugins.h:241
boolean render_frame(int hsize, int vsize, int64_t timecode, void **pixel_data, void **return_data, void **play_params)
const char * anames[AUDIO_CODEC_MAX]
Definition: plugins.c:34
Definition: plugins.h:401
int YUV_sampling
Definition: plugins.h:107
void rip_audio_cleanup(const lives_clip_data_t *)
lives_param_type_t
Definition: plugins.h:370
#define AUDIO_CODEC_MAX
Definition: plugins.h:173
Definition: plugins.h:411
int seek_flag
bitmap of seek properties
Definition: plugins.h:265
capability * get_capabilities(void)
Definition: main.c:2223
lives_interlace_t
Definition: main.h:508
int num_params
Definition: plugins.h:512
Definition: plugins.h:376
LiVESList * get_plugin_list(const char *plugin_type, boolean allow_nonex, const char *plugdir, const char *filter_ext)
Definition: plugins.c:274
boolean transition
Definition: plugins.h:431
int asamps
Definition: plugins.h:260
custom effects in the custom menu
Definition: plugins.h:477
boolean set_yuv_palette_clamping(int clamping_type)
host sets the palette sampling (optional)
LiVESList * plugin_request_common(const char *plugin_type, const char *plugin_name, const char *request, const char *delim, boolean allow_blanks)
Definition: plugins.c:192
lives_rfx_status_t status
Definition: plugins.h:497
void get_mime_type(char *text, int maxlen, const lives_clip_data_t *)
Definition: plugins.c:2468
type may be used in framedraw
Definition: plugins.h:398
int num_play_params
Definition: plugins.h:121
int find_rfx_plugin_by_name(const char *name, short status)
Definition: plugins.c:3130
LiVESWidget * pal_entry
Definition: plugins.h:598
#define ulong
Definition: main.h:150
LiVESList * array_to_string_list(char **array, int offset, int len)
Definition: plugins.c:2846
int special_type_index
Definition: plugins.h:470
LiVESList * filter_encoders_by_img_ext(LiVESList *encoders, const char *img_ext)
Definition: plugins.c:2038
boolean onchange
is there a trigger ?
Definition: plugins.h:458
Definition: plugins.h:405
const weed_plant_t * pp_get_chan(weed_plant_t **pparams, int idx)
Definition: plugins.c:1132
Definition: plugins.h:377
_vid_playback_plugin * plugin
Definition: plugins.h:593
void set_bool_param(void *value, boolean)
Definition: plugins.c:3087
int YUV_clamping
Definition: plugins.h:108
int min_frames
for Weed, 1
Definition: plugins.h:495
LiVESList * plugin_request(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:178
int extra_argc
Definition: plugins.h:115
lives_rfx_source_t
Definition: plugins.h:385
int YUV_clamping
Definition: plugins.h:253
void sort_rfx_array(lives_rfx_t *in_array, int num_elements)
Definition: plugins.c:2868
int num_in_channels
Definition: plugins.h:496
uint32_t flags
Definition: plugins.h:513
Definition: plugins.h:215
char ** extra_argv
Definition: plugins.h:116
uint32_t props
Definition: plugins.h:500
void clip_data_free(lives_clip_data_t *)
free clip data - this should be called for each instance before unloading the module ...
const lives_clip_data_t * get_decoder_cdata(int fileno, LiVESList *disabled, const lives_clip_data_t *fake_cdata)
Definition: plugins.c:2260
void * handle
Definition: plugins.h:57
int achans
Definition: plugins.h:259
indicates a copy operation to test
Definition: plugins.h:485
int fixed_fps_denom
Definition: plugins.h:112
Definition: main.h:311
LiVESList * plugin_request_with_blanks(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:173
LiVESList * plugin_request_by_line(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:182
indicates free choice of statuses
Definition: plugins.h:479
weed_plant_t ** play_params
Definition: plugins.h:119
lives_param_t * params
Definition: plugins.h:517
#define MAX_PARAM_WIDGETS
max number of display widgets per parameter (currently 5 for RGBA spinbuttons + colorbutton) ...
Definition: plugins.h:364
void vid_playback_plugin_exit(void)
Definition: plugins.c:1429
int of_allowed_acodecs
Definition: plugins.h:189
uint32_t audio_codec
Definition: plugins.h:158
int YUV_subspace
Definition: plugins.h:109
void on_decplug_advanced_clicked(LiVESButton *button, livespointer user_data)
Definition: plugins.c:2533
int current_palette
plugin should init this to palettes[0] if URI changes
Definition: plugins.h:250
lives_rfx_source_t source_type
Definition: plugins.h:518
void rfx_params_free(lives_rfx_t *rfx)
Definition: plugins.c:2965
uint32_t capabilities
Definition: plugins.h:178
double max
for string this is max characters
Definition: plugins.h:442
Definition: plugins.h:491
int YUV_subspace
Definition: plugins.h:254
int num_alpha_chans
Definition: plugins.h:122
ulong func
menuitem activation function for current delegate
Definition: plugins.h:551
void * priv
private data for demuxer/decoder - host should not touch this
Definition: plugins.h:278
boolean get_bool_param(void *value)
Definition: plugins.c:3061
int dp
decimals, 0 for int and bool
Definition: plugins.h:438
void * handle
may be shared between several instances
Definition: plugins.h:287
Definition: plugins.h:548
boolean ainterleaf
Definition: plugins.h:262
int64_t rip_audio(const lives_clip_data_t *, const char *fname, int64_t stframe, int64_t nframes, unsigned char **abuff)
indicates a copy operation to test
Definition: plugins.h:484
void set_double_param(void *value, double)
Definition: plugins.c:3094
short multi
multivalue type - single value, multi value, or per channel
Definition: plugins.h:448
LiVESWidget * menuitem
the menu item which activates this effect
Definition: plugins.h:511
Definition: plugins.h:374
boolean(* plugin_keyfunc)(boolean down, uint16_t unicode, uint16_t keymod)
video playback plugins
Definition: plugins.h:51
type may be used in framedraw
Definition: plugins.h:396
int fixed_fps_numer
Definition: plugins.h:111
Definition: plugins.h:54
boolean init_screen(int width, int height, boolean fullscreen, uint64_t window_id, int argc, char **argv)
ready the screen to play (optional)
const weed_plant_t ** play_paramtmpls
Definition: plugins.h:118
char * menu_text
for Weed, this is the filter_class "name"
Definition: plugins.h:493
_vppaw * on_vpp_advanced_clicked(LiVESButton *, livespointer)
Definition: plugins.c:842
fn_ptr interp_func
Definition: plugins.h:419
int palette
Definition: plugins.h:106
void save_vpp_defaults(_vid_playback_plugin *, char *file)
Definition: plugins.c:337
LiVESWidget * fps_entry
Definition: plugins.h:597
void module_unload(void)
this is called when module is unloaded
LiVESList * list
for string list (choices)
Definition: plugins.h:445
int * palettes
list of palettes which the format supports, terminated with WEED_PALETTE_END
Definition: plugins.h:247
boolean asigned
Definition: plugins.h:261
LiVESList * get_external_window_hints(lives_rfx_t *rfx)
Definition: plugins.c:3551
char * plugin_run_param_window(const char *get_com, LiVESVBox *vbox, lives_rfx_t **ret_rfx)
Definition: plugins.c:3622
Definition: plugins.h:380
float video_start_time
Definition: plugins.h:243
boolean decplugin_supports_palette(const lives_decoder_t *dplug, int palette)
Definition: plugins.c:2107
int YUV_sampling
Definition: plugins.h:252
Definition: plugins.h:378