LiVES  3.0.2
plugins.h
Go to the documentation of this file.
1 // plugins.h
2 // LiVES
3 // (c) G. Finch 2003-2017 <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 LiVESList *get_plugin_list(const char *plugin_type, boolean allow_nonex, const char *plugdir, const char *filter_ext);
22 #define PLUGIN_ENCODERS "encoders"
23 #define PLUGIN_DECODERS "decoders"
24 #define PLUGIN_VID_PLAYBACK "playback/video"
25 #define PLUGIN_AUDIO_STREAM "playback/audiostream"
26 
27 #define AUDIO_STREAMER_NAME "audiostreamer.pl"
28 
30 #define PLUGIN_THEMES "themes"
31 #define PLUGIN_THEMES_CUSTOM "custom/themes"
32 
34 #define PLUGIN_EFFECTS_WEED "weed"
35 #define PLUGIN_WEED_FX_BUILTIN "effects/realtime/weed"
36 
37 LiVESList *plugin_request(const char *plugin_type, const char *plugin_name, const char *request);
38 LiVESList *plugin_request_with_blanks(const char *plugin_type, const char *plugin_name, const char *request);
39 LiVESList *plugin_request_by_line(const char *plugin_type, const char *plugin_name, const char *request);
40 LiVESList *plugin_request_by_space(const char *plugin_type, const char *plugin_name, const char *request);
41 LiVESList *plugin_request_common(const char *plugin_type, const char *plugin_name, const char *request, const char *delim,
42  boolean allow_blanks);
43 
44 #ifndef __WEED_EFFECTS_H__
45 typedef weed_plant_t *(*weed_bootstrap_f)(weed_default_getter_f *value, int num_versions, int *plugin_versions);
46 #endif
47 
49 typedef boolean(*plugin_keyfunc)(boolean down, uint16_t unicode, uint16_t keymod);
50 
51 typedef struct {
52  // playback
53  char name[64];
54  void *handle;
55 
56  // mandatory
57  const char *(*module_check_init)(void);
58  const char *(*version)(void);
59  const char *(*get_description)(void);
60 
61  int *(*get_palette_list)(void);
63  uint64_t (*get_capabilities)(int palette);
64 
65  boolean(*render_frame)(int hsize, int vsize, int64_t timecode, void **pixel_data, void **return_data,
66  weed_plant_t **play_params);
67 
68  // optional
69  boolean(*init_screen)(int width, int height, boolean fullscreen, uint64_t window_id, int argc, char **argv);
70  void (*exit_screen)(uint16_t mouse_x, uint16_t mouse_y);
71  void (*module_unload)(void);
72  const char *(*get_fps_list)(int palette);
73  boolean(*set_fps)(double fps);
74 
75  const char *(*get_init_rfx)(int intention);
76 
78  const weed_plant_t **(*get_play_params)(weed_bootstrap_f f);
79 
80  // optional for YUV palettes
81  int *(*get_yuv_palette_sampling)(int palette);
82  int *(*get_yuv_palette_clamping)(int palette);
83  int *(*get_yuv_palette_subspace)(int palette);
84  int (*set_yuv_palette_sampling)(int sampling_type);
85  int (*set_yuv_palette_clamping)(int clamping_type);
86  int (*set_yuv_palette_subspace)(int subspace_type);
87 
88  // audio streaming (deprecated, use init_audio(), render_audio_frame())
89  int *(*get_audio_fmts)(void);
90 
91  uint32_t audio_codec; //(deprecated, use init_audio(), render_audio_frame())
92  // must match with the "acodec" LiVESList in interface.c
93  // and bitmaps in the encder plugins
94 
95  // optional audio packeting
96  boolean(*init_audio)(int in_sample_rate, int in_nchans, int argc, char **argv);
97  boolean(*render_audio_frame_float)(float **audio, int nsamps);
98 
99  uint64_t capabilities;
100 
101 #define VPP_CAN_RESIZE (1<<0)
102 #define VPP_CAN_RETURN (1<<1)
103 #define VPP_LOCAL_DISPLAY (1<<2)
104 
105  int fwidth, fheight;
106 
107  int palette;
111 
114  double fixed_fpsd;
115 
117  char **extra_argv;
118 
119  const weed_plant_t **play_paramtmpls;
120  weed_plant_t **play_params;
121  weed_plant_t **alpha_chans;
125 
126 #define DEFAULT_VPP "openGL"
127 
128 #define MAX_VPP_HSIZE 1024.
129 #define MAX_VPP_VSIZE 576.
130 
131 _vid_playback_plugin *open_vid_playback_plugin(const char *name, boolean in_use);
132 void vid_playback_plugin_exit(void);
135 void save_vpp_defaults(_vid_playback_plugin *, char *file);
136 void load_vpp_defaults(_vid_playback_plugin *, char *file);
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 void do_plugin_encoder_error(const char *plugin_name_or_null);
152 
153 LiVESList *filter_encoders_by_img_ext(LiVESList *encoders, const char *img_ext);
154 
155 typedef struct {
156  char name[64];
157  uint32_t audio_codec;
158  // match with bitmaps in the encoder plugins
159  // and also anames array in plugins.c (see below)
160 
161 #define AUDIO_CODEC_MP3 0
162 #define AUDIO_CODEC_PCM 1
163 #define AUDIO_CODEC_MP2 2
164 #define AUDIO_CODEC_VORBIS 3
165 #define AUDIO_CODEC_AC3 4
166 #define AUDIO_CODEC_AAC 5
167 #define AUDIO_CODEC_AMR_NB 6
168 #define AUDIO_CODEC_RAW 7 // reserved
169 #define AUDIO_CODEC_WMA2 8
170 
171 #define AUDIO_CODEC_MAX 31
172  //
173 #define AUDIO_CODEC_NONE 32
174 #define AUDIO_CODEC_UNKNOWN 33
175 
176  uint32_t capabilities;
177 
178 #define HAS_RFX (1<<0)
179 
180 #define CAN_ENCODE_PNG (1<<2)
181 #define ENCODER_NON_NATIVE (1<<3)
182 
183  // current output format
184  char of_name[64];
185  char of_desc[128];
187  char of_restrict[1024];
188  char of_def_ext[16];
189  char ptext[512];
190 }
191 _encoder;
192 
193 // defined in plugins.c for the whole app
194 extern const char *anames[AUDIO_CODEC_MAX];
195 
196 // decoder plugins
197 
198 // seek_flags is a bitmap
199 
201 #define LIVES_SEEK_FAST (1<<0)
202 
204 #define LIVES_SEEK_NEEDS_CALCULATION (1<<1)
205 #define LIVES_SEEK_QUALITY_LOSS (1<<2)
206 
207 // must be exactly the same as in decplugin.h
208 
209 typedef struct {
210  char *URI;
211 
212  int nclips;
213  char container_name[512];
214 
215  char title[256];
216  char author[256];
217  char comment[256];
218 
221 
222  // video data
223  int width; // width and height of picture in frame
224  int height;
225  int64_t nframes;
227 
230  int offs_x;
231  int offs_y;
232  int frame_width; // frame width and height are the size of the outer frame
234 
235  float par;
236 
238 
239  float fps;
240 
241  int *palettes;
242 
245 
249  char video_name[512];
250 
251  /* audio data */
252  int arate;
253  int achans;
254  int asamps;
255  boolean asigned;
256  boolean ainterleaf;
257  char audio_name[512];
258 
260 
261 #define SYNC_HINT_AUDIO_TRIM_START (1<<0)
262 #define SYNC_HINT_AUDIO_PAD_START (1<<1)
263 #define SYNC_HINT_AUDIO_TRIM_END (1<<2)
264 #define SYNC_HINT_AUDIO_PAD_END (1<<3)
265 
266 #define SYNC_HINT_VIDEO_PAD_START (1<<4)
267 #define SYNC_HINT_VIDEO_PAD_END (1<<5)
268 
270 
271  void *priv;
273 
274 typedef struct {
275  // playback
276  char *name;
277  void *handle;
278 
279  // mandatory
280  const char *(*version)(void);
281 
291  lives_clip_data_t *(*get_clip_data)(char *URI, const lives_clip_data_t *cdata);
292 
294  boolean(*get_frame)(const lives_clip_data_t *, int64_t frame, int *rowstrides, int height, void **pixel_data);
295 
298 
299  // optional
300  const char *(*module_check_init)(void);
302  int64_t (*rip_audio)(const lives_clip_data_t *, const char *fname, int64_t stframe, int64_t nframes,
303  unsigned char **abuff);
304  void (*rip_audio_cleanup)(const lives_clip_data_t *cdata);
305  void (*module_unload)(void);
307 
308 typedef struct {
312 
313 const lives_clip_data_t *get_decoder_cdata(int fileno, LiVESList *disabled, const lives_clip_data_t *fake_cdata);
315 lives_decoder_sys_t *open_decoder_plugin(const char *plname);
316 void get_mime_type(char *text, int maxlen, const lives_clip_data_t *);
317 void unload_decoder_plugins(void);
318 
319 boolean decplugin_supports_palette(const lives_decoder_t *dplug, int palette);
320 
321 lives_decoder_t *clone_decoder(int fileno);
322 
323 // RFX plugins
324 
326 #define PLUGIN_RENDERED_EFFECTS_BUILTIN "effects/rendered/"
327 
329 #define PLUGIN_RENDERED_EFFECTS_CUSTOM "plugins/effects/rendered/custom/"
330 #define PLUGIN_RENDERED_EFFECTS_TEST "plugins/effects/rendered/test/"
331 
333 #define PLUGIN_RENDERED_EFFECTS_BUILTIN_SCRIPTS "effects/RFXscripts/"
334 
336 #define PLUGIN_RENDERED_EFFECTS_CUSTOM_SCRIPTS "plugins/effects/RFXscripts/custom/"
337 #define PLUGIN_RENDERED_EFFECTS_TEST_SCRIPTS "plugins/effects/RFXscripts/test/"
338 
340 #define PLUGIN_RFX_SCRAP ""
341 
343 #define MAX_PARAM_WIDGETS 5
344 
346 #define RFX_MAXSTRINGLEN (PATH_MAX - 1)
347 
348 typedef enum {
356 
359 
360 typedef enum {
364 
365 typedef enum {
366  LIVES_PARAM_SPECIAL_TYPE_NONE = 0, // normal parameter type
367 
368  // framedraw types
372 
373  // text widget types
377 
378  // misc types
382 
383 typedef struct {
384  // weed style part
385  char *name;
386  char *desc;
387 
388  char *label;
389  int flags;
390  boolean use_mnemonic;
393  int hidden;
394 
395  // reason(s) for hiding [bitmap]
396 #define HIDDEN_GUI (1<<0)
397 #define HIDDEN_MULTI (1<<1)
398 #define HIDDEN_NEEDS_REINIT (1<<2)
399 #define HIDDEN_COMPOUND_INTERNAL (1<<3)
400 
401  double step_size;
402  //int copy_to;
403  boolean transition;
404  boolean reinit;
405 
406  boolean wrap;
407  int group;
409 
410  int dp;
411  void *value;
412 
413  double min;
414  double max;
415 
416  void *def;
417  LiVESList *list;
418 
420  short multi;
421 #define PVAL_MULTI_NONE 0
422 #define PVAL_MULTI_ANY 1
423 #define PVAL_MULTI_PER_CHANNEL 2
424 
425  //--------------------------------------------------
426  // extras for LiVES
427 
429  LiVESWidget *widgets[MAX_PARAM_WIDGETS];
430  boolean onchange;
431 
432  boolean changed;
433  boolean edited;
434 
435  boolean change_blocked;
436 
437  void *source;
438 
440 
441  // this may change
442  lives_param_special_t special_type; // the visual modification type (see paramspecial.h)
443  int special_type_index; // index within special_type (e.g for DEMASK, 0==left, 1==top, 2==width, 3==height)
444 } lives_param_t;
445 
446 typedef enum {
453 
454  // these are only used when prompting for a name
458 
459 typedef struct {
460  char *name;
461  char *menu_text;
462  char *action_desc;
466 
467  uint32_t props;
468 #define RFX_PROPS_SLOW 0x0001
469 #define RFX_PROPS_MAY_RESIZE 0x0002
470 #define RFX_PROPS_BATCHG 0x0004
471 
472 #define RFX_PROPS_RESERVED1 0x1000
473 #define RFX_PROPS_RESERVED2 0x2000
474 #define RFX_PROPS_RESERVED3 0x4000
475 #define RFX_PROPS_AUTO_BUILT 0x8000
476 
477  LiVESWidget *menuitem;
479  uint32_t flags;
480 #define RFX_FLAGS_NO_SLIDERS 0x0001
481 
484  void *source;
485  void *extra;
486  char delim[2];
487  boolean is_template;
488 } lives_rfx_t;
489 
491 
493 
494 void render_fx_get_params(lives_rfx_t *, const char *plugin_name, short status);
495 
496 void sort_rfx_array(lives_rfx_t *in_array, int num_elements);
497 
498 int find_rfx_plugin_by_name(const char *name, short status);
499 
500 void rfx_copy(lives_rfx_t *src, lives_rfx_t *dest, boolean full);
501 
503 
504 void rfx_free(lives_rfx_t *);
505 
506 void rfx_free_all(void);
507 
508 void param_copy(lives_param_t *src, lives_param_t *dest, boolean full);
509 
510 lives_param_t *find_rfx_param_by_name(lives_rfx_t *, const char *name);
511 
512 boolean set_rfx_param_by_name_string(lives_rfx_t *, const char *name, const char *value, boolean update_visual);
513 
514 boolean get_rfx_param_by_name_string(lives_rfx_t *rfx, const char *name, char **return_value);
515 
516 typedef struct {
517  LiVESList *list;
518  int delegate;
522 
523 // filter types which can have candidates
524 #define FX_CANDIDATE_AUDIO_VOL 0
525 #define FX_CANDIDATE_RESIZER 1
526 #define FX_CANDIDATE_DEINTERLACE 2
527 
528 #define MAX_FX_CANDIDATE_TYPES 3
529 
530 boolean get_bool_param(void *value);
531 int get_int_param(void *value);
532 double get_double_param(void *value);
533 void get_colRGB24_param(void *value, lives_colRGB48_t *rgb);
534 void get_colRGBA32_param(void *value, lives_colRGBA64_t *rgba);
535 
536 void set_bool_param(void *value, boolean);
537 void set_int_param(void *value, int);
538 void set_double_param(void *value, double);
539 void set_colRGB24_param(void *value, short red, short green, short blue);
540 void set_colRGBA32_param(void *value, short red, short green, short blue, short alpha);
541 
543 void **store_rfx_params(lives_rfx_t *);
544 void set_rfx_params_from_store(lives_rfx_t *rfx, void **store);
545 void rfx_params_store_free(lives_rfx_t *, void **store);
546 
547 LiVESList *array_to_string_list(char **array, int offset, int len);
548 
549 lives_rfx_t *weed_to_rfx(weed_plant_t *plant, boolean show_reinits);
550 lives_param_t *weed_params_to_rfx(int npar, weed_plant_t *instance, boolean show_reinits);
551 
552 char *plugin_run_param_window(const char *get_com, const char *scrap_text, LiVESVBox *vbox, lives_rfx_t **ret_rfx);
553 
556 typedef struct {
558  LiVESWidget *dialog;
559  LiVESWidget *spinbuttonh;
560  LiVESWidget *spinbuttonw;
561  LiVESWidget *apply_fx;
562  LiVESWidget *fps_entry;
563  LiVESWidget *pal_entry;
565  boolean keep_rfx;
566 } _vppaw;
567 
568 _vppaw *on_vpp_advanced_clicked(LiVESButton *, livespointer);
569 void on_decplug_advanced_clicked(LiVESButton *button, livespointer user_data);
570 
571 LiVESList *get_external_window_hints(lives_rfx_t *rfx);
572 boolean check_encoder_restrictions(boolean get_extension, boolean user_audio, boolean save_all);
573 
575 
576 #endif
const weed_plant_t * pp_get_param(weed_plant_t **pparams, int idx)
Definition: plugins.c:1157
int fwidth
Definition: plugins.h:105
indicates an internal RFX, created from a weed instance
Definition: plugins.h:451
int sync_hint
Definition: plugins.h:269
double min
Definition: plugins.h:413
Definition: plugins.h:155
void unload_decoder_plugins(void)
Definition: plugins.c:2384
weed_plant_t *(* weed_bootstrap_f)(weed_default_getter_f *value, int num_versions, int *plugin_versions)
Definition: plugins.h:45
lives_clip_data_t * cdata
Definition: plugins.h:310
void close_decoder_plugin(lives_decoder_t *)
Definition: plugins.c:2361
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:392
video playback plugin window - fixed part
Definition: plugins.h:556
void * source
points to the source (e.g. a weed_plant_t)
Definition: plugins.h:484
Definition: plugins.h:349
void set_colRGBA32_param(void *value, short red, short green, short blue, short alpha)
Definition: plugins.c:3150
Definition: plugins.h:350
void do_rfx_cleanup(lives_rfx_t *)
Definition: plugins.c:2623
double fixed_fpsd
Definition: plugins.h:114
void * source
Definition: plugins.h:437
int boolean
Definition: videoplugin.h:50
void do_plugin_encoder_error(const char *plugin_name_or_null)
Definition: plugins.c:1597
int height
Definition: plugins.h:224
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:3076
int frame_height
Definition: plugins.h:233
Definition: plugins.h:375
void *(* fn_ptr)(void *ptr)
Definition: main.h:322
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:3185
Definition: plugins.h:274
char * action_desc
for Weed "Applying $s"
Definition: plugins.h:462
char * label
Definition: plugins.h:388
char * name
Definition: plugins.h:385
boolean check_rfx_for_lives(lives_rfx_t *)
Definition: plugins.c:2613
void rfx_params_store_free(lives_rfx_t *, void **store)
lives_rfx_source_t source_type
Definition: plugins.h:439
Definition: plugins.h:308
uint64_t capabilities
Definition: plugins.h:99
used for parsing RFX scraps from external apps
Definition: plugins.h:452
boolean changed
Definition: plugins.h:432
int offs_x
Definition: plugins.h:230
lives_rfx_t * weed_to_rfx(weed_plant_t *plant, boolean show_reinits)
Definition: plugins.c:3548
LiVESWidget * spinbuttonw
Definition: plugins.h:560
double step_size
Definition: plugins.h:401
boolean set_palette(int palette)
host sets the palette used
char * URI
the URI of this cdata
Definition: plugins.h:210
LiVESWidget * spinbuttonh
Definition: plugins.h:559
factory presets
Definition: plugins.h:447
char * name
the name of the executable (so we can run it !)
Definition: plugins.h:460
void * extra
for future use
Definition: plugins.h:485
int64_t get_best_audio(_vid_playback_plugin *)
Definition: plugins.c:1504
int nclips
number of clips (titles) in container
Definition: plugins.h:212
LiVESList * plugin_request_by_space(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:186
Definition: main.h:313
int arate
Definition: plugins.h:252
void close_vid_playback_plugin(_vid_playback_plugin *)
Definition: plugins.c:1111
void set_colRGB24_param(void *value, short red, short green, short blue)
Definition: plugins.c:3133
void * value
current value(s)
Definition: plugins.h:411
int hidden
Definition: plugins.h:393
void set_int_param(void *value, int)
Definition: plugins.c:3097
Definition: plugins.h:366
void ** store_rfx_params(lives_rfx_t *)
return an array of parameter values
type may be used in framedraw
Definition: plugins.h:369
int get_int_param(void *value)
Definition: plugins.c:3062
Definition: plugins.h:376
LiVESList * list
list of filter_idx from which user can delegate
Definition: plugins.h:517
LiVESWidget * dialog
Definition: plugins.h:558
float fps
Definition: plugins.h:239
void param_copy(lives_param_t *src, lives_param_t *dest, boolean full)
Definition: plugins.c:3003
boolean init_audio(int sample_rate, int nchans, int argc, char **argv)
boolean set_fps(double fps)
lives_param_special_t
Definition: plugins.h:365
boolean change_blocked
Definition: plugins.h:435
Definition: plugins.h:380
void load_vpp_defaults(_vid_playback_plugin *, char *file)
Definition: plugins.c:419
int width
Definition: plugins.h:223
char * name
plugin name
Definition: plugins.h:276
int64_t nframes
Definition: plugins.h:225
void get_colRGBA32_param(void *value, lives_colRGBA64_t *rgba)
Definition: plugins.c:3081
boolean wrap
Definition: plugins.h:406
_palette * palette
Definition: main.c:108
boolean check_encoder_restrictions(boolean get_extension, boolean user_audio, boolean save_all)
Definition: plugins.c:1622
weed_plant_t ** alpha_chans
Definition: plugins.h:121
lives_rfx_t * rfx
pointer to rfx for current delegate (or NULL)
Definition: plugins.h:520
boolean set_yuv_palette_sampling(int sampling_type)
host sets the palette sampling (optional)
int offs_y
Definition: plugins.h:231
lives_param_t * find_rfx_param_by_name(lives_rfx_t *, const char *name)
Definition: plugins.c:3173
boolean keep_rfx
Definition: plugins.h:565
test effects in the advanced menu
Definition: plugins.h:449
int delegate
offset in list of current delegate
Definition: plugins.h:518
lives_param_type_t type
Definition: plugins.h:408
void rfx_free_all(void)
Definition: plugins.c:2994
char * desc
Definition: plugins.h:386
_vid_playback_plugin * open_vid_playback_plugin(const char *name, boolean in_use)
Definition: plugins.c:1181
Definition: plugins.h:361
int flags
Definition: plugins.h:389
int frame_width
frame is the surrounding part, including any black border (>=width)
Definition: plugins.h:232
int current_clip
plugin should init this to 0 if URI changes
Definition: plugins.h:220
const lives_decoder_sys_t * decoder
Definition: plugins.h:309
lives_decoder_t * clone_decoder(int fileno)
Definition: plugins.c:2213
void * def
default values
Definition: plugins.h:416
type may be used in framedraw
Definition: plugins.h:370
lives_param_special_t special_type
Definition: plugins.h:442
boolean reinit
Definition: plugins.h:404
int group
Definition: plugins.h:407
lives_decoder_sys_t * open_decoder_plugin(const char *plname)
Definition: plugins.c:2398
lives_rfx_status_t
Definition: plugins.h:446
lives_rfx_t * rfx
Definition: plugins.h:564
char * get_extension(const char *filename)
Definition: utils.c:2365
boolean use_mnemonic
Definition: plugins.h:390
double get_double_param(void *value)
Definition: plugins.c:3069
void rfx_copy(lives_rfx_t *src, lives_rfx_t *dest, boolean full)
Definition: plugins.c:2937
uint32_t audio_codec
Definition: plugins.h:91
void render_fx_get_params(lives_rfx_t *, const char *plugin_name, short status)
Definition: plugins.c:2661
lives_interlace_t interlace
Definition: plugins.h:226
Definition: plugins.h:352
boolean is_template
Definition: plugins.h:487
void set_rfx_params_from_store(lives_rfx_t *rfx, void **store)
Definition: plugins.h:362
float par
pixel aspect ratio
Definition: plugins.h:235
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:33
Definition: plugins.h:374
int YUV_sampling
Definition: plugins.h:108
void rip_audio_cleanup(const lives_clip_data_t *)
lives_param_type_t
Definition: plugins.h:348
#define AUDIO_CODEC_MAX
Definition: plugins.h:171
Definition: plugins.h:383
int seek_flag
bitmap of seek properties
Definition: plugins.h:259
capability * get_capabilities(void)
Definition: main.c:2265
lives_interlace_t
Definition: main.h:497
int num_params
Definition: plugins.h:478
Definition: plugins.h:353
LiVESList * get_plugin_list(const char *plugin_type, boolean allow_nonex, const char *plugdir, const char *filter_ext)
Definition: plugins.c:273
boolean transition
Definition: plugins.h:403
int asamps
Definition: plugins.h:254
custom effects in the custom menu
Definition: plugins.h:448
boolean set_yuv_palette_clamping(int clamping_type)
host sets the palette sampling (optional)
void rfx_params_free(lives_rfx_t *)
Definition: plugins.c:2958
LiVESList * plugin_request_common(const char *plugin_type, const char *plugin_name, const char *request, const char *delim, boolean allow_blanks)
Definition: plugins.c:191
lives_rfx_status_t status
Definition: plugins.h:465
void get_mime_type(char *text, int maxlen, const lives_clip_data_t *)
Definition: plugins.c:2466
type may be used in framedraw
Definition: plugins.h:371
int num_play_params
Definition: plugins.h:122
int find_rfx_plugin_by_name(const char *name, short status)
Definition: plugins.c:3161
LiVESWidget * pal_entry
Definition: plugins.h:563
#define ulong
Definition: main.h:137
LiVESList * array_to_string_list(char **array, int offset, int len)
Definition: plugins.c:2836
boolean render_audio_frame_float(float **audio, int nsamps)
int special_type_index
Definition: plugins.h:443
LiVESList * filter_encoders_by_img_ext(LiVESList *encoders, const char *img_ext)
Definition: plugins.c:2070
char * plugin_run_param_window(const char *get_com, const char *scrap_text, LiVESVBox *vbox, lives_rfx_t **ret_rfx)
Definition: plugins.c:3655
boolean onchange
is there a trigger ?
Definition: plugins.h:430
Definition: plugins.h:379
const weed_plant_t * pp_get_chan(weed_plant_t **pparams, int idx)
Definition: plugins.c:1169
Definition: plugins.h:354
_vid_playback_plugin * plugin
Definition: plugins.h:557
void set_bool_param(void *value, boolean)
Definition: plugins.c:3086
int YUV_clamping
Definition: plugins.h:109
int min_frames
for Weed, 1
Definition: plugins.h:463
LiVESList * plugin_request(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:176
int extra_argc
Definition: plugins.h:116
lives_rfx_source_t
Definition: plugins.h:360
int YUV_clamping
Definition: plugins.h:247
void sort_rfx_array(lives_rfx_t *in_array, int num_elements)
Definition: plugins.c:2857
int num_in_channels
Definition: plugins.h:464
uint32_t flags
Definition: plugins.h:479
Definition: plugins.h:209
char ** extra_argv
Definition: plugins.h:117
uint32_t props
Definition: plugins.h:467
void clip_data_free(lives_clip_data_t *)
free clip data - this should be called for each instance before unloading the module ...
boolean set_rfx_param_by_name_string(lives_rfx_t *, const char *name, const char *value, boolean update_visual)
Definition: plugins.c:3107
const lives_clip_data_t * get_decoder_cdata(int fileno, LiVESList *disabled, const lives_clip_data_t *fake_cdata)
Definition: plugins.c:2283
void * handle
Definition: plugins.h:54
void rfx_free(lives_rfx_t *)
Definition: plugins.c:2972
int achans
Definition: plugins.h:253
LiVESWidget * apply_fx
Definition: plugins.h:561
boolean get_rfx_param_by_name_string(lives_rfx_t *rfx, const char *name, char **return_value)
Definition: plugins.c:3125
indicates a copy operation to test
Definition: plugins.h:456
int fixed_fps_denom
Definition: plugins.h:113
boolean edited
Definition: plugins.h:433
Definition: main.h:307
LiVESList * plugin_request_with_blanks(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:170
LiVESList * plugin_request_by_line(const char *plugin_type, const char *plugin_name, const char *request)
Definition: plugins.c:181
indicates free choice of statuses
Definition: plugins.h:450
weed_plant_t ** play_params
Definition: plugins.h:120
lives_param_t * params
Definition: plugins.h:482
#define MAX_PARAM_WIDGETS
max number of display widgets per parameter (currently 5 for RGBA spinbuttons + colorbutton) ...
Definition: plugins.h:343
void vid_playback_plugin_exit(void)
Definition: plugins.c:1476
int of_allowed_acodecs
Definition: plugins.h:186
uint32_t audio_codec
Definition: plugins.h:157
int YUV_subspace
Definition: plugins.h:110
void on_decplug_advanced_clicked(LiVESButton *button, livespointer user_data)
Definition: plugins.c:2528
int current_palette
plugin should init this to palettes[0] if URI changes
Definition: plugins.h:244
lives_rfx_source_t source_type
Definition: plugins.h:483
uint32_t capabilities
Definition: plugins.h:176
double max
for string this is max characters
Definition: plugins.h:414
Definition: plugins.h:459
int YUV_subspace
Definition: plugins.h:248
int num_alpha_chans
Definition: plugins.h:123
ulong func
menuitem activation function for current delegate
Definition: plugins.h:519
void * priv
private data for demuxer/decoder - host should not touch this
Definition: plugins.h:271
boolean get_bool_param(void *value)
Definition: plugins.c:3055
int dp
decimals, 0 for int and bool
Definition: plugins.h:410
void * handle
may be shared between several instances
Definition: plugins.h:277
Definition: plugins.h:516
boolean ainterleaf
Definition: plugins.h:256
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:455
void set_double_param(void *value, double)
Definition: plugins.c:3102
short multi
multivalue type - single value, multi value, or per channel
Definition: plugins.h:420
LiVESWidget * menuitem
the menu item which activates this effect
Definition: plugins.h:477
Definition: plugins.h:351
boolean(* plugin_keyfunc)(boolean down, uint16_t unicode, uint16_t keymod)
video playback plugins
Definition: plugins.h:49
int fixed_fps_numer
Definition: plugins.h:112
Definition: plugins.h:51
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:119
char * menu_text
for Weed, this is the filter_class "name"
Definition: plugins.h:461
_vppaw * on_vpp_advanced_clicked(LiVESButton *, livespointer)
Definition: plugins.c:867
fn_ptr interp_func
Definition: plugins.h:391
int palette
Definition: plugins.h:107
void save_vpp_defaults(_vid_playback_plugin *, char *file)
Definition: plugins.c:334
LiVESWidget * fps_entry
Definition: plugins.h:562
void module_unload(void)
this is called when module is unloaded
LiVESList * list
for string list (choices)
Definition: plugins.h:417
int * palettes
list of palettes which the format supports, terminated with WEED_PALETTE_END
Definition: plugins.h:241
boolean asigned
Definition: plugins.h:255
LiVESList * get_external_window_hints(lives_rfx_t *rfx)
Definition: plugins.c:3591
Definition: plugins.h:357
float video_start_time
Definition: plugins.h:237
boolean decplugin_supports_palette(const lives_decoder_t *dplug, int palette)
Definition: plugins.c:2136
int YUV_sampling
Definition: plugins.h:246
Definition: plugins.h:355