LiVES  2.8.4
events.h
Go to the documentation of this file.
1 // events.h
2 // LiVES
3 // (c) G. Finch 2005 - 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 
8 // functions/structs for event_lists and events
9 
10 #ifndef HAS_LIVES_EVENTS_H
11 #define HAS_LIVES_EVENTS_H
12 
13 // event_list
14 #define WEED_LEAF_WEED_EVENT_API_VERSION "weed_event_api_version"
15 #define WEED_LEAF_AUDIO_SIGNED "audio_signed"
16 #define WEED_LEAF_AUDIO_ENDIAN "audio_endian"
17 #define WEED_LEAF_AUDIO_SAMPLE_SIZE "audio_sample_size"
18 #define WEED_LEAF_AUDIO_VOLUME_TRACKS "audio_volume_tracks"
19 #define WEED_LEAF_AUDIO_VOLUME_VALUES "audio_volume_values"
20 #define WEED_LEAF_TRACK_LABEL_TRACKS "track_label_tracks"
21 #define WEED_LEAF_TRACK_LABEL_VALUES "track_label_values"
22 
23 
24 // frame event
25 #define WEED_LEAF_FRAMES "frames"
26 #define WEED_LEAF_CLIPS "clips"
27 #define WEED_LEAF_AUDIO_CLIPS "audio_clips"
28 #define WEED_LEAF_AUDIO_SEEKS "audio_seeks"
29 
30 // init_event
31 #define WEED_LEAF_FILTER "filter"
32 #define WEED_LEAF_IN_COUNT "in_count"
33 #define WEED_LEAF_OUT_COUNT "out_count"
34 #define WEED_LEAF_IN_TRACKS "in_tracks"
35 #define WEED_LEAF_OUT_TRACKS "out_tracks"
36 #define WEED_LEAF_EVENT_ID "event_id"
37 
38 // deinit
39 #define WEED_LEAF_INIT_EVENT "init_event"
40 
41 
42 // filter map
43 #define WEED_LEAF_INIT_EVENTS "init_events"
44 
45 // param change
46 #define WEED_LEAF_INDEX "index"
47 
48 
49 
50 // internal
51 // event_list
52 #define WEED_LEAF_NEXT "next"
53 #define WEED_LEAF_PREVIOUS "previous"
54 #define WEED_LEAF_FIRST "first"
55 #define WEED_LEAF_LAST "last"
56 #define WEED_LEAF_NEEDS_SET "needs_set"
57 
58 // param change
59 #define WEED_LEAF_NEXT_CHANGE "next_change"
60 #define WEED_LEAF_PREV_CHANGE "prev_change"
61 
62 // init_event
63 #define WEED_LEAF_DEINIT_EVENT "deinit_event"
64 
65 // marker
66 #define WEED_LEAF_LIVES_TYPE "lives_type"
67 #define WEED_LEAF_TRACKS "tracks"
68 
69 // misc
70 #define WEED_LEAF_PTRSIZE "ptrsize"
71 
72 #define WEED_LEAF_HOST_AUDIO_TRANSITION "host_audio_transition"
73 
74 
75 
76 #define LIVES_TRACK_ANY -1000000
77 
78 weed_plant_t *append_frame_event(weed_plant_t *event_list, weed_timecode_t tc, int numframes,
79  int *clips, int *frames) WARN_UNUSED;
80 weed_plant_t *append_filter_init_event(weed_plant_t *event_list, weed_timecode_t tc,
81  int filter_idx, int num_in_tracks, int key, weed_plant_t *inst) WARN_UNUSED;
82 weed_plant_t *append_filter_deinit_event(weed_plant_t *event_list, weed_timecode_t tc,
83  void *init_event, void **pchain) WARN_UNUSED;
84 weed_plant_t *append_filter_map_event(weed_plant_t *event_list, weed_timecode_t tc, void **init_events) WARN_UNUSED;
85 weed_plant_t *append_param_change_event(weed_plant_t *event_list, weed_timecode_t tc, int pnum,
86  weed_plant_t *param, void *init_event, void **pchain) WARN_UNUSED;
87 weed_plant_t *append_marker_event(weed_plant_t *event_list, weed_timecode_t tc, int marker_type) WARN_UNUSED;
88 
90 weed_plant_t *insert_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, int numframes,
91  int *clips, int *frames, weed_plant_t **shortcut) WARN_UNUSED;
92 void insert_audio_event_at(weed_plant_t *event_list,weed_plant_t *event, int track, int clipnum,
93  double time, double vel);
94 void remove_audio_for_track(weed_plant_t *event, int track);
95 weed_plant_t *insert_blank_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc,
96  weed_plant_t **shortcut) WARN_UNUSED;
97 
98 void remove_frame_from_event(weed_plant_t *event_list, weed_plant_t *event, int track);
99 void remove_end_blank_frames(weed_plant_t *event_list, boolean remove_filter_inits);
100 void remove_filter_from_event_list(weed_plant_t *event_list, weed_plant_t *init_event);
101 
102 weed_plant_t *process_events(weed_plant_t *next_event, boolean process_audio, weed_timecode_t curr_tc);
103 void event_list_close_start_gap(weed_plant_t *event_list);
104 void event_list_add_track(weed_plant_t *event_list, int layer);
105 void add_track_to_avol_init(weed_plant_t *filter, weed_plant_t *event, int nbtracks, boolean behind);
106 void event_list_free(weed_plant_t *event_list);
107 
109 void event_list_replace_events(weed_plant_t *event_list, weed_plant_t *new_event_list);
110 
112 weed_plant_t *event_copy_and_insert(weed_plant_t *in_event, weed_plant_t *event_list);
113 
115 int count_events(weed_plant_t *event_list, boolean all_events, weed_timecode_t start_tc, weed_timecode_t end_tc);
116 
117 int count_resampled_events(weed_plant_t *event_list, double fps);
118 
119 boolean event_list_to_block(weed_plant_t *event_list, int num_events);
120 double event_list_get_end_secs(weed_plant_t *event_list);
121 double event_list_get_start_secs(weed_plant_t *event_list);
122 weed_timecode_t event_list_get_end_tc(weed_plant_t *event_list);
123 weed_timecode_t event_list_get_start_tc(weed_plant_t *event_list);
124 
125 weed_plant_t *get_last_frame_event(weed_plant_t *event_list);
126 weed_plant_t *get_first_frame_event(weed_plant_t *event_list);
127 
128 weed_plant_t *get_next_frame_event(weed_plant_t *event);
129 weed_plant_t *get_prev_frame_event(weed_plant_t *event);
130 
131 weed_plant_t *get_next_audio_frame_event(weed_plant_t *event);
132 weed_plant_t *get_prev_audio_frame_event(weed_plant_t *event);
133 
134 weed_plant_t *get_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut, boolean exact);
135 weed_plant_t *get_frame_event_at_or_before(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut);
136 
137 weed_plant_t *get_audio_block_start(weed_plant_t *event_list, int track, weed_timecode_t tc, boolean seek_back);
138 
139 boolean filter_map_after_frame(weed_plant_t *fmap);
140 boolean init_event_is_relevant(weed_plant_t *init_event, int ctrack);
141 
142 
143 // definitions in events.c
144 weed_plant_t *get_first_event(weed_plant_t *event_list);
145 weed_plant_t *get_last_event(weed_plant_t *event_list);
146 weed_plant_t *get_prev_event(weed_plant_t *event);
147 weed_plant_t *get_next_event(weed_plant_t *event);
148 
149 
150 
151 
153 #if HAVE_SYSTEM_WEED
154 #include <weed/weed-utils.h>
155 #else
156 #include "../libweed/weed-utils.h"
157 #endif
158 
159 weed_timecode_t get_event_timecode(weed_plant_t *);
160 int get_event_hint(weed_plant_t *);
161 boolean is_blank_frame(weed_plant_t *, boolean count_audio);
162 boolean has_audio_frame(weed_plant_t *event_list);
163 int get_frame_event_clip(weed_plant_t *, int layer);
164 int get_frame_event_frame(weed_plant_t *, int layer);
165 boolean frame_event_has_frame_for_track(weed_plant_t *event, int track);
166 double *get_track_visibility_at_tc(weed_plant_t *event_list, int ntracks, int n_back_tracks,
167  weed_timecode_t tc, weed_plant_t **shortcut, boolean bleedthru);
168 void get_active_track_list(int *clip_index, int num_tracks, weed_plant_t *filter_map);
169 
172 
173 typedef struct {
174  int width;
175  int height;
176  double fps;
177  boolean ratio_fps;
178  LiVESWidget *dialog;
179  LiVESWidget *okbutton;
180  LiVESWidget *usecur_button;
181  LiVESWidget *encoder_combo;
182  LiVESWidget *ofmt_combo;
183  LiVESWidget *acodec_combo;
184  LiVESWidget *acodec_entry;
185  LiVESWidget *spinbutton_width;
186  LiVESWidget *spinbutton_height;
187  LiVESWidget *spinbutton_fps;
188  LiVESWidget *pertrack_checkbutton;
189  LiVESWidget *backaudio_checkbutton;
190  LiVESWidget *always_checkbutton;
191  LiVESWidget *always_hbox;
194  boolean enc_changed;
197 
198  boolean is_encoding;
199 
200  int arate;
201  int achans;
202  int asamps;
203  int aendian;
204 
206 
207 
209 
212 
213 
214 LiVESWidget *events_rec_dialog(boolean allow_mt);
215 int get_render_choice(void);
216 boolean deal_with_render_choice(boolean add_deinit);
217 
218 #define RENDER_CHOICE_DISCARD 0
219 #define RENDER_CHOICE_PREVIEW 1
220 #define RENDER_CHOICE_SAME_CLIP 2
221 #define RENDER_CHOICE_NEW_CLIP 3
222 #define RENDER_CHOICE_MULTITRACK 4
223 #define RENDER_CHOICE_EVENT_LIST 5
224 
225 LiVESWidget *create_event_list_dialog(weed_plant_t *event_list, weed_timecode_t start_tc, weed_timecode_t end_tc);
227 
228 LiVESWidget *add_video_options(LiVESWidget **spwidth, int defwidth, LiVESWidget **spheight, int defheight,
229  LiVESWidget **spfps, double deffps, boolean add_aspect);
230 
231 LiVESWidget *add_audio_options(LiVESWidget **cbbackaudio, LiVESWidget **cbpertrack);
232 
233 
236 
237 boolean render_to_clip(boolean new_clip);
238 boolean start_render_effect_events(weed_plant_t *event_list);
239 
240 
241 // effect insertion/updating
242 void insert_filter_init_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
243 void **filter_init_add_pchanges(weed_plant_t *event_list, weed_plant_t *filter, weed_plant_t *init_event, int ntracks, int leave);
244 void insert_filter_deinit_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
245 boolean insert_filter_map_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event,
246  boolean before_frames);
247 weed_plant_t *get_filter_map_before(weed_plant_t *event, int ctrack, weed_plant_t *stop_event);
248 weed_plant_t *get_filter_map_after(weed_plant_t *event, int ctrack);
249 void **get_init_events_before(weed_plant_t *event, weed_plant_t *init_event, boolean add);
250 void update_filter_maps(weed_plant_t *event, weed_plant_t *end_event, weed_plant_t *init_event);
251 void insert_param_change_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
252 weed_plant_t *insert_marker_event_at(weed_plant_t *event_list, weed_plant_t *at_event, int marker_type, livespointer data);
253 
254 void add_init_event_to_filter_map(weed_plant_t *fmap, weed_plant_t *event, void **hints);
255 boolean init_event_in_list(void **init_events, int num_inits, weed_plant_t *event);
256 boolean filter_init_has_owner(weed_plant_t *init_event, int track);
257 boolean init_event_is_process_last(weed_plant_t *event);
258 
259 // effect deletion/moving
260 boolean move_event_right(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps);
261 boolean move_event_left(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps);
262 
263 void move_filter_init_event(weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *init_event, double fps);
264 void move_filter_deinit_event(weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *deinit_event,
265  double fps, boolean rescale_pchanges);
266 
267 // event deletion
268 void unlink_event(weed_plant_t *event_list, weed_plant_t *event);
269 void delete_event(weed_plant_t *event_list, weed_plant_t *event);
270 
271 // event replacement
272 void replace_event(weed_plant_t *event_list, weed_plant_t *at_event,weed_plant_t *event);
273 
274 // event insertion
275 boolean insert_event_before(weed_plant_t *at_event,weed_plant_t *event);
276 boolean insert_event_after(weed_plant_t *at_event,weed_plant_t *event);
277 
278 // param changes
279 void ** *get_event_pchains(void);
280 weed_timecode_t get_next_paramchange(void **pchange_next,weed_timecode_t end_tc);
281 weed_timecode_t get_prev_paramchange(void **pchange_next,weed_timecode_t start_tc);
282 boolean is_init_pchange(weed_plant_t *init_event, weed_plant_t *pchange_event);
283 void free_pchains(int key);
284 
285 // audio
287 int get_audio_frame_clip(weed_plant_t *event, int track);
288 
290 double get_audio_frame_vel(weed_plant_t *event, int track);
291 
293 double get_audio_frame_seek(weed_plant_t *event, int track);
294 
295 
296 // playback
297 
298 void backup_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc);
299 void restore_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc);
300 
301 boolean has_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut);
302 
303 
304 #define EVENT_MARKER_BLOCK_START 1
305 #define EVENT_MARKER_BLOCK_UNORDERED 512
306 #define EVENT_MARKER_RECORD_START 1024
307 #define EVENT_MARKER_RECORD_END 1025
308 
309 #define WEED_PLANT_IS_EVENT(plant) ((plant!=NULL&&weed_get_plant_type(plant)==WEED_PLANT_EVENT)?1:0)
310 #define WEED_PLANT_IS_EVENT_LIST(plant) ((plant!=NULL&&weed_get_plant_type(plant)==WEED_PLANT_EVENT_LIST)?1:0)
311 
312 #define WEED_EVENT_IS_FRAME(event) (get_event_hint(event)==WEED_EVENT_HINT_FRAME?1:0)
313 #define WEED_EVENT_IS_AUDIO_FRAME(event) ((get_event_hint(event)==WEED_EVENT_HINT_FRAME&&weed_plant_has_leaf(event,"audio_clips"))?1:0)
314 #define WEED_EVENT_IS_FILTER_INIT(event) (get_event_hint(event)==WEED_EVENT_HINT_FILTER_INIT?1:0)
315 #define WEED_EVENT_IS_FILTER_DEINIT(event) (get_event_hint(event)==WEED_EVENT_HINT_FILTER_DEINIT?1:0)
316 #define WEED_EVENT_IS_FILTER_MAP(event) (get_event_hint(event)==WEED_EVENT_HINT_FILTER_MAP?1:0)
317 #define WEED_EVENT_IS_PARAM_CHANGE(event) (get_event_hint(event)==WEED_EVENT_HINT_PARAM_CHANGE?1:0)
318 #define WEED_EVENT_IS_MARKER(event) (get_event_hint(event)==WEED_EVENT_HINT_MARKER?1:0)
319 
320 #endif // HAS_LIVES_EVENTS_H
LiVESWidget * spinbutton_width
Definition: events.h:185
weed_timecode_t event_list_get_end_tc(weed_plant_t *event_list)
Definition: events.c:4208
void remove_end_blank_frames(weed_plant_t *event_list, boolean remove_filter_inits)
Definition: events.c:437
boolean has_audio_frame(weed_plant_t *event_list)
Definition: events.c:4229
void remove_audio_for_track(weed_plant_t *event, int track)
Definition: events.c:1251
void *** get_event_pchains(void)
int achans
Definition: events.h:201
void replace_event(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:261
weed_plant_t * get_filter_map_after(weed_plant_t *event, int ctrack)
Definition: events.c:704
void get_active_track_list(int *clip_index, int num_tracks, weed_plant_t *filter_map)
Definition: events.c:2960
LiVESWidget * spinbutton_fps
Definition: events.h:187
weed_plant_t * get_last_frame_event(weed_plant_t *event_list)
Definition: events.c:331
int asamps
Definition: events.h:202
boolean start_render_effect_events(weed_plant_t *event_list)
render to clip
Definition: events.c:4063
Definition: events.h:173
void remove_frame_from_event(weed_plant_t *event_list, weed_plant_t *event, int track)
Definition: events.c:380
weed_plant_t * get_first_frame_event(weed_plant_t *event_list)
Definition: events.c:317
void event_list_replace_events(weed_plant_t *event_list, weed_plant_t *new_event_list)
replace events in event_list with events in new_event_list
Definition: events.c:2285
void backup_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc)
Definition: events.c:1508
LiVESWidget * dialog
Definition: events.h:178
int get_frame_event_frame(weed_plant_t *, int layer)
Definition: events.c:199
LiVESWidget * usecur_button
Definition: events.h:180
weed_plant_t * event_copy_and_insert(weed_plant_t *in_event, weed_plant_t *event_list)
called during quantisation
Definition: events.c:494
boolean init_event_is_process_last(weed_plant_t *event)
Definition: events.c:1651
void insert_filter_init_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:919
void event_list_add_track(weed_plant_t *event_list, int layer)
Definition: events.c:2424
char * encoder_name
Definition: events.h:195
LiVESWidget * pertrack_checkbutton
Definition: events.h:188
double event_list_get_end_secs(weed_plant_t *event_list)
Definition: events.c:4213
void move_filter_init_event(weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *init_event, double fps)
Definition: events.c:1728
boolean insert_filter_map_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event, boolean before_frames)
Definition: events.c:967
boolean filter_map_after_frame(weed_plant_t *fmap)
Definition: events.c:681
void unlink_event(weed_plant_t *event_list, weed_plant_t *event)
Definition: events.c:211
weed_plant_t * insert_marker_event_at(weed_plant_t *event_list, weed_plant_t *at_event, int marker_type, livespointer data)
Definition: events.c:1326
boolean move_event_left(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps)
Definition: events.c:2059
LiVESWidget * add_video_options(LiVESWidget **spwidth, int defwidth, LiVESWidget **spheight, int defheight, LiVESWidget **spfps, double deffps, boolean add_aspect)
Definition: events.c:5211
LiVESWidget * always_hbox
Definition: events.h:191
boolean event_list_to_block(weed_plant_t *event_list, int num_events)
Definition: events.c:2295
boolean frame_event_has_frame_for_track(weed_plant_t *event, int track)
Definition: events.c:638
void add_init_event_to_filter_map(weed_plant_t *fmap, weed_plant_t *event, void **hints)
Definition: events.c:1675
weed_timecode_t get_event_timecode(weed_plant_t *)
Definition: events.c:50
weed_plant_t * append_filter_map_event(weed_plant_t *event_list, weed_timecode_t tc, void **init_events) WARN_UNUSED
Definition: events.c:2917
int get_audio_frame_clip(weed_plant_t *event, int track)
returns clip number for track (track==-1 is backing audio)
Definition: events.c:114
Definition: main.h:334
weed_plant_t * get_next_frame_event(weed_plant_t *event)
Definition: events.c:269
double event_list_get_start_secs(weed_plant_t *event_list)
Definition: events.c:4223
weed_plant_t * get_prev_audio_frame_event(weed_plant_t *event)
Definition: events.c:305
boolean is_encoding
Definition: events.h:198
boolean init_event_is_relevant(weed_plant_t *init_event, int ctrack)
Definition: events.c:746
double fps
Definition: events.h:176
weed_plant_t * get_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut, boolean exact)
Definition: events.c:661
void insert_filter_deinit_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:943
LiVESWidget * backaudio_checkbutton
Definition: events.h:189
boolean ratio_fps
Definition: events.h:177
LiVESWidget * events_rec_dialog(boolean allow_mt)
Definition: events.c:2151
weed_timecode_t get_next_paramchange(void **pchange_next, weed_timecode_t end_tc)
Definition: events.c:457
int count_resampled_events(weed_plant_t *event_list, double fps)
Definition: events.c:4168
void insert_param_change_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:1019
boolean insert_event_before(weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:235
int width
Definition: events.h:174
boolean filter_init_has_owner(weed_plant_t *init_event, int track)
Definition: events.c:1485
render_details * rdet
Definition: events.h:208
LiVESWidget * spinbutton_height
Definition: events.h:186
weed_plant_t * insert_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, int numframes, int *clips, int *frames, weed_plant_t **shortcut) WARN_UNUSED
Definition: events.c:1050
weed_timecode_t event_list_get_start_tc(weed_plant_t *event_list)
Definition: events.c:4218
double get_audio_frame_seek(weed_plant_t *event, int track)
returns velocity for track (track==-1 is backing audio)
Definition: events.c:161
LiVESWidget * acodec_combo
Definition: events.h:183
void restore_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc)
Definition: events.c:1523
LiVESWidget * add_audio_options(LiVESWidget **cbbackaudio, LiVESWidget **cbpertrack)
Definition: events.c:5259
weed_plant_t * get_next_audio_frame_event(weed_plant_t *event)
Definition: events.c:293
boolean has_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut)
Definition: events.c:96
int get_event_hint(weed_plant_t *)
Definition: events.c:58
int get_frame_event_clip(weed_plant_t *, int layer)
Definition: events.c:187
boolean init_event_in_list(void **init_events, int num_inits, weed_plant_t *event)
Definition: events.c:1463
void move_filter_deinit_event(weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *deinit_event, double fps, boolean rescale_pchanges)
Definition: events.c:1838
void remove_filter_from_event_list(weed_plant_t *event_list, weed_plant_t *init_event)
Definition: events.c:1391
render_details * create_render_details(int type)
Definition: events.c:5318
weed_plant_t * append_param_change_event(weed_plant_t *event_list, weed_timecode_t tc, int pnum, weed_plant_t *param, void *init_event, void **pchain) WARN_UNUSED
Definition: events.c:2868
boolean enc_changed
Definition: events.h:194
void event_list_free(weed_plant_t *event_list)
Definition: events.c:2279
weed_plant_t * process_events(weed_plant_t *next_event, boolean process_audio, weed_timecode_t curr_tc)
RT playback.
Definition: events.c:3016
weed_timecode_t get_prev_paramchange(void **pchange_next, weed_timecode_t start_tc)
Definition: events.c:467
boolean deal_with_render_choice(boolean add_deinit)
Definition: events.c:4466
LiVESWidget * create_event_list_dialog(weed_plant_t *event_list, weed_timecode_t start_tc, weed_timecode_t end_tc)
Definition: events.c:4804
void event_list_close_start_gap(weed_plant_t *event_list)
int count_events(weed_plant_t *event_list, boolean all_events, weed_timecode_t start_tc, weed_timecode_t end_tc)
if all_events is FALSE we only count FRAME events
Definition: events.c:4149
ulong encoder_name_fn
Definition: events.h:192
LiVESWidget * ofmt_combo
Definition: events.h:182
#define ulong
Definition: main.h:150
void delete_event(weed_plant_t *event_list, weed_plant_t *event)
Definition: events.c:225
void insert_audio_event_at(weed_plant_t *event_list, weed_plant_t *event, int track, int clipnum, double time, double vel)
Definition: events.c:1153
void free_pchains(int key)
void ** filter_init_add_pchanges(weed_plant_t *event_list, weed_plant_t *filter, weed_plant_t *init_event, int ntracks, int leave)
Definition: events.c:2574
weed_plant_t * get_prev_frame_event(weed_plant_t *event)
Definition: events.c:281
void add_track_to_avol_init(weed_plant_t *filter, weed_plant_t *event, int nbtracks, boolean behind)
Definition: events.c:2357
weed_plant_t * get_filter_map_before(weed_plant_t *event, int ctrack, weed_plant_t *stop_event)
Definition: events.c:788
weed_plant_t * append_filter_deinit_event(weed_plant_t *event_list, weed_timecode_t tc, void *init_event, void **pchain) WARN_UNUSED
Definition: events.c:2822
boolean move_event_right(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps)
Definition: events.c:1980
boolean is_blank_frame(weed_plant_t *, boolean count_audio)
Definition: events.c:416
int get_render_choice(void)
Definition: events.c:2144
LiVESWidget * encoder_combo
Definition: events.h:181
weed_plant_t * get_prev_event(weed_plant_t *event)
Definition: events.c:67
void ** get_init_events_before(weed_plant_t *event, weed_plant_t *init_event, boolean add)
Definition: events.c:831
LiVESWidget * always_checkbutton
Definition: events.h:190
boolean insert_event_after(weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:248
int height
Definition: events.h:175
weed_plant_t * get_last_event(weed_plant_t *event_list)
Definition: events.c:88
weed_plant_t * append_frame_event(weed_plant_t *event_list, weed_timecode_t tc, int numframes, int *clips, int *frames) WARN_UNUSED
Definition: events.c:2529
weed_plant_t * get_frame_event_at_or_before(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut)
Definition: events.c:694
LiVESWidget * okbutton
Definition: events.h:179
int arate
Definition: events.h:200
boolean render_to_clip(boolean new_clip)
rendering
Definition: events.c:4242
double get_audio_frame_vel(weed_plant_t *event, int track)
returns velocity for track (track==-1 is backing audio)
Definition: events.c:133
weed_plant_t * append_filter_init_event(weed_plant_t *event_list, weed_timecode_t tc, int filter_idx, int num_in_tracks, int key, weed_plant_t *inst) WARN_UNUSED
Definition: events.c:2654
double * get_track_visibility_at_tc(weed_plant_t *event_list, int ntracks, int n_back_tracks, weed_timecode_t tc, weed_plant_t **shortcut, boolean bleedthru)
Definition: events.c:4625
weed_plant_t * get_audio_block_start(weed_plant_t *event_list, int track, weed_timecode_t tc, boolean seek_back)
Definition: events.c:346
int aendian
Definition: events.h:203
weed_plant_t * insert_blank_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut) WARN_UNUSED
Definition: events.c:1383
boolean suggestion_followed
Definition: events.h:196
LiVESWidget * acodec_entry
Definition: events.h:184
weed_plant_t * get_next_event(weed_plant_t *event)
Definition: events.c:74
ulong encoder_ofmt_fn
Definition: events.h:193
#define WARN_UNUSED
Definition: main.h:298
weed_plant_t * get_first_event(weed_plant_t *event_list)
Definition: events.c:81
void update_filter_maps(weed_plant_t *event, weed_plant_t *end_event, weed_plant_t *init_event)
Definition: events.c:906
boolean is_init_pchange(weed_plant_t *init_event, weed_plant_t *pchange_event)
Definition: events.c:477
weed_plant_t * append_marker_event(weed_plant_t *event_list, weed_timecode_t tc, int marker_type) WARN_UNUSED
Definition: events.c:1286