LiVES  3.0.2
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 // functions/structs for event_lists and events
8 
9 #ifndef HAS_LIVES_EVENTS_H
10 #define HAS_LIVES_EVENTS_H
11 
12 // event_list
13 #define WEED_LEAF_WEED_EVENT_API_VERSION "weed_event_api_version"
14 #define WEED_LEAF_AUDIO_SIGNED "audio_signed"
15 #define WEED_LEAF_AUDIO_ENDIAN "audio_endian"
16 #define WEED_LEAF_AUDIO_SAMPLE_SIZE "audio_sample_size"
17 #define WEED_LEAF_AUDIO_VOLUME_TRACKS "audio_volume_tracks"
18 #define WEED_LEAF_AUDIO_VOLUME_VALUES "audio_volume_values"
19 #define WEED_LEAF_TRACK_LABEL_TRACKS "track_label_tracks"
20 #define WEED_LEAF_TRACK_LABEL_VALUES "track_label_values"
21 
22 // frame event
23 #define WEED_LEAF_FRAMES "frames"
24 #define WEED_LEAF_CLIPS "clips"
25 #define WEED_LEAF_AUDIO_CLIPS "audio_clips"
26 #define WEED_LEAF_AUDIO_SEEKS "audio_seeks"
27 
28 // init_event
29 #define WEED_LEAF_FILTER "filter"
30 #define WEED_LEAF_IN_COUNT "in_count"
31 #define WEED_LEAF_OUT_COUNT "out_count"
32 #define WEED_LEAF_IN_TRACKS "in_tracks"
33 #define WEED_LEAF_OUT_TRACKS "out_tracks"
34 #define WEED_LEAF_EVENT_ID "event_id"
35 
36 // deinit
37 #define WEED_LEAF_INIT_EVENT "init_event"
38 
39 // filter map
40 #define WEED_LEAF_INIT_EVENTS "init_events"
41 
42 // param change
43 #define WEED_LEAF_INDEX "index"
44 
45 // internal
46 // event_list
47 #define WEED_LEAF_NEXT "next"
48 #define WEED_LEAF_PREVIOUS "previous"
49 #define WEED_LEAF_FIRST "first"
50 #define WEED_LEAF_LAST "last"
51 #define WEED_LEAF_NEEDS_SET "needs_set"
52 
53 // param change
54 #define WEED_LEAF_NEXT_CHANGE "next_change"
55 #define WEED_LEAF_PREV_CHANGE "prev_change"
56 
57 // init_event
58 #define WEED_LEAF_DEINIT_EVENT "deinit_event"
59 
60 // marker
61 #define WEED_LEAF_LIVES_TYPE "lives_type"
62 #define WEED_LEAF_TRACKS "tracks"
63 
64 // misc
65 #define WEED_LEAF_PTRSIZE "ptrsize"
66 
67 #define WEED_LEAF_HOST_AUDIO_TRANSITION "host_audio_transition"
68 
69 #define WEED_LEAF_HOST_TAG_COPY "host_tag_copy"
70 
71 #define LIVES_TRACK_ANY -1000000
72 
73 weed_plant_t *append_frame_event(weed_plant_t *event_list, weed_timecode_t tc, int numframes,
74  int *clips, int *frames) WARN_UNUSED;
75 weed_plant_t *append_filter_init_event(weed_plant_t *event_list, weed_timecode_t tc,
76  int filter_idx, int num_in_tracks, int key, weed_plant_t *inst) WARN_UNUSED;
77 weed_plant_t *append_filter_deinit_event(weed_plant_t *event_list, weed_timecode_t tc,
78  void *init_event, void **pchain) WARN_UNUSED;
79 weed_plant_t *append_filter_map_event(weed_plant_t *event_list, weed_timecode_t tc, void **init_events) WARN_UNUSED;
80 weed_plant_t *append_param_change_event(weed_plant_t *event_list, weed_timecode_t tc, int pnum,
81  weed_plant_t *param, void *init_event, void **pchain) WARN_UNUSED;
82 weed_plant_t *append_marker_event(weed_plant_t *event_list, weed_timecode_t tc, int marker_type) WARN_UNUSED;
83 
85 weed_plant_t *insert_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, int numframes,
86  int *clips, int *frames, weed_plant_t **shortcut) WARN_UNUSED;
87 void insert_audio_event_at(weed_plant_t *event_list, weed_plant_t *event, int track, int clipnum,
88  double time, double vel);
89 void remove_audio_for_track(weed_plant_t *event, int track);
90 weed_plant_t *insert_blank_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc,
91  weed_plant_t **shortcut) WARN_UNUSED;
92 
93 void remove_frame_from_event(weed_plant_t *event_list, weed_plant_t *event, int track);
94 void remove_end_blank_frames(weed_plant_t *event_list, boolean remove_filter_inits);
95 void remove_filter_from_event_list(weed_plant_t *event_list, weed_plant_t *init_event);
96 
97 weed_plant_t *process_events(weed_plant_t *next_event, boolean process_audio, weed_timecode_t curr_tc);
98 void event_list_close_start_gap(weed_plant_t *event_list);
99 void event_list_add_track(weed_plant_t *event_list, int layer);
100 void add_track_to_avol_init(weed_plant_t *filter, weed_plant_t *event, int nbtracks, boolean behind);
101 void event_list_free(weed_plant_t *event_list);
102 
104 void event_list_replace_events(weed_plant_t *event_list, weed_plant_t *new_event_list);
105 
107 weed_plant_t *event_copy_and_insert(weed_plant_t *in_event, weed_plant_t *event_list);
108 
110 int count_events(weed_plant_t *event_list, boolean all_events, weed_timecode_t start_tc, weed_timecode_t end_tc);
111 
112 int count_resampled_events(weed_plant_t *event_list, double fps);
113 
114 boolean event_list_to_block(weed_plant_t *event_list, int num_events);
115 double event_list_get_end_secs(weed_plant_t *event_list);
116 double event_list_get_start_secs(weed_plant_t *event_list);
117 weed_timecode_t event_list_get_end_tc(weed_plant_t *event_list);
118 weed_timecode_t event_list_get_start_tc(weed_plant_t *event_list);
119 
120 weed_plant_t *get_last_frame_event(weed_plant_t *event_list);
121 weed_plant_t *get_first_frame_event(weed_plant_t *event_list);
122 
123 weed_plant_t *get_next_frame_event(weed_plant_t *event);
124 weed_plant_t *get_prev_frame_event(weed_plant_t *event);
125 
126 weed_plant_t *get_next_audio_frame_event(weed_plant_t *event);
127 weed_plant_t *get_prev_audio_frame_event(weed_plant_t *event);
128 
129 weed_plant_t *get_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut, boolean exact);
130 weed_plant_t *get_frame_event_at_or_before(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut);
131 
132 weed_plant_t *get_audio_block_start(weed_plant_t *event_list, int track, weed_timecode_t tc, boolean seek_back);
133 
134 boolean filter_map_after_frame(weed_plant_t *fmap);
135 boolean init_event_is_relevant(weed_plant_t *init_event, int ctrack);
136 
137 // definitions in events.c
138 weed_plant_t *get_first_event(weed_plant_t *event_list);
139 weed_plant_t *get_last_event(weed_plant_t *event_list);
140 weed_plant_t *get_prev_event(weed_plant_t *event);
141 weed_plant_t *get_next_event(weed_plant_t *event);
142 
144 #if HAVE_SYSTEM_WEED
145 #include <weed/weed-utils.h>
146 #else
147 #include "../libweed/weed-utils.h"
148 #endif
149 
150 weed_timecode_t get_event_timecode(weed_plant_t *);
151 int get_event_hint(weed_plant_t *);
152 boolean is_blank_frame(weed_plant_t *, boolean count_audio);
153 boolean has_audio_frame(weed_plant_t *event_list);
154 int get_frame_event_clip(weed_plant_t *, int layer);
155 int get_frame_event_frame(weed_plant_t *, int layer);
156 boolean frame_event_has_frame_for_track(weed_plant_t *event, int track);
157 double *get_track_visibility_at_tc(weed_plant_t *event_list, int ntracks, int n_back_tracks,
158  weed_timecode_t tc, weed_plant_t **shortcut, boolean bleedthru);
159 void get_active_track_list(int *clip_index, int num_tracks, weed_plant_t *filter_map);
160 
163 
164 typedef struct {
165  int width;
166  int height;
167  double fps;
168  boolean ratio_fps;
169  LiVESWidget *dialog;
170  LiVESWidget *okbutton;
171  LiVESWidget *usecur_button;
172  LiVESWidget *clipname_entry;
173  LiVESWidget *encoder_combo;
174  LiVESWidget *ofmt_combo;
175  LiVESWidget *acodec_combo;
176  LiVESWidget *acodec_entry;
177  LiVESWidget *spinbutton_width;
178  LiVESWidget *spinbutton_height;
179  LiVESWidget *spinbutton_fps;
180  LiVESWidget *pertrack_checkbutton;
181  LiVESWidget *backaudio_checkbutton;
182  LiVESWidget *always_checkbutton;
183  LiVESWidget *always_hbox;
186  boolean enc_changed;
189 
190  boolean is_encoding;
191 
192  int arate;
193  int achans;
194  int asamps;
195  int aendian;
197 
199 
202 
203 LiVESWidget *events_rec_dialog(boolean allow_mt);
204 boolean deal_with_render_choice(boolean add_deinit);
205 
206 #define RENDER_CHOICE_DISCARD 0
207 #define RENDER_CHOICE_PREVIEW 1
208 #define RENDER_CHOICE_SAME_CLIP 2
209 #define RENDER_CHOICE_NEW_CLIP 3
210 #define RENDER_CHOICE_MULTITRACK 4
211 #define RENDER_CHOICE_EVENT_LIST 5
212 
213 LiVESWidget *create_event_list_dialog(weed_plant_t *event_list, weed_timecode_t start_tc, weed_timecode_t end_tc);
215 
216 LiVESWidget *add_video_options(LiVESWidget **spwidth, int defwidth, LiVESWidget **spheight, int defheight,
217  LiVESWidget **spfps, double deffps, boolean add_aspect, LiVESWidget *extra);
218 
219 LiVESWidget *add_audio_options(LiVESWidget **cbbackaudio, LiVESWidget **cbpertrack);
220 
223 
224 boolean render_to_clip(boolean new_clip);
225 boolean start_render_effect_events(weed_plant_t *event_list);
226 
227 // effect insertion/updating
228 void insert_filter_init_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
229 void **filter_init_add_pchanges(weed_plant_t *event_list, weed_plant_t *filter, weed_plant_t *init_event, int ntracks, int leave);
230 void insert_filter_deinit_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
231 boolean insert_filter_map_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event,
232  boolean before_frames);
233 weed_plant_t *get_filter_map_before(weed_plant_t *event, int ctrack, weed_plant_t *stop_event);
234 weed_plant_t *get_filter_map_after(weed_plant_t *event, int ctrack);
235 void **get_init_events_before(weed_plant_t *event, weed_plant_t *init_event, boolean add);
236 void update_filter_maps(weed_plant_t *event, weed_plant_t *end_event, weed_plant_t *init_event);
237 void insert_param_change_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
238 weed_plant_t *insert_marker_event_at(weed_plant_t *event_list, weed_plant_t *at_event, int marker_type, livespointer data);
239 
240 void add_init_event_to_filter_map(weed_plant_t *fmap, weed_plant_t *event, void **hints);
241 boolean init_event_in_list(void **init_events, int num_inits, weed_plant_t *event);
242 boolean filter_init_has_owner(weed_plant_t *init_event, int track);
243 boolean init_event_is_process_last(weed_plant_t *event);
244 
245 // effect deletion/moving
246 boolean move_event_right(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps);
247 boolean move_event_left(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps);
248 
249 void move_filter_init_event(weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *init_event, double fps);
250 void move_filter_deinit_event(weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *deinit_event,
251  double fps, boolean rescale_pchanges);
252 
253 // event deletion
254 void unlink_event(weed_plant_t *event_list, weed_plant_t *event);
255 void delete_event(weed_plant_t *event_list, weed_plant_t *event);
256 
257 // event replacement
258 void replace_event(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event);
259 
260 // event insertion
261 boolean insert_event_before(weed_plant_t *at_event, weed_plant_t *event);
262 boolean insert_event_after(weed_plant_t *at_event, weed_plant_t *event);
263 
264 // param changes
265 void ** *get_event_pchains(void);
266 weed_timecode_t get_next_paramchange(void **pchange_next, weed_timecode_t end_tc);
267 weed_timecode_t get_prev_paramchange(void **pchange_next, weed_timecode_t start_tc);
268 boolean is_init_pchange(weed_plant_t *init_event, weed_plant_t *pchange_event);
269 void free_pchains(int key);
270 
271 // audio
273 int get_audio_frame_clip(weed_plant_t *event, int track);
274 
276 double get_audio_frame_vel(weed_plant_t *event, int track);
277 
279 double get_audio_frame_seek(weed_plant_t *event, int track);
280 
281 // playback
282 
283 void backup_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc);
284 void restore_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc);
285 
286 boolean has_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut);
287 
288 #define EVENT_MARKER_BLOCK_START 1
289 #define EVENT_MARKER_BLOCK_UNORDERED 512
290 #define EVENT_MARKER_RECORD_START 1024
291 #define EVENT_MARKER_RECORD_END 1025
292 
293 #define WEED_PLANT_IS_EVENT(plant) ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT) ? 1 : 0)
294 #define WEED_PLANT_IS_EVENT_LIST(plant) ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT_LIST) ? 1 : 0)
295 
296 #define WEED_EVENT_IS_FRAME(event) (get_event_hint(event) == WEED_EVENT_HINT_FRAME ? 1 : 0)
297 #define WEED_EVENT_IS_AUDIO_FRAME(event) ((get_event_hint(event) == WEED_EVENT_HINT_FRAME && weed_plant_has_leaf(event, "audio_clips")) ? 1 : 0)
298 #define WEED_EVENT_IS_FILTER_INIT(event) (get_event_hint(event) == WEED_EVENT_HINT_FILTER_INIT ? 1 : 0)
299 #define WEED_EVENT_IS_FILTER_DEINIT(event) (get_event_hint(event) == WEED_EVENT_HINT_FILTER_DEINIT ? 1 : 0)
300 #define WEED_EVENT_IS_FILTER_MAP(event) (get_event_hint(event) == WEED_EVENT_HINT_FILTER_MAP ? 1 : 0)
301 #define WEED_EVENT_IS_PARAM_CHANGE(event) (get_event_hint(event) == WEED_EVENT_HINT_PARAM_CHANGE ? 1 : 0)
302 #define WEED_EVENT_IS_MARKER(event) (get_event_hint(event) == WEED_EVENT_HINT_MARKER ? 1 : 0)
303 
304 #endif // HAS_LIVES_EVENTS_H
LiVESWidget * spinbutton_width
Definition: events.h:177
weed_timecode_t event_list_get_end_tc(weed_plant_t *event_list)
Definition: events.c:4179
void remove_end_blank_frames(weed_plant_t *event_list, boolean remove_filter_inits)
Definition: events.c:439
boolean has_audio_frame(weed_plant_t *event_list)
Definition: events.c:4201
void remove_audio_for_track(weed_plant_t *event, int track)
Definition: events.c:1243
void *** get_event_pchains(void)
Definition: events.c:42
int achans
Definition: events.h:193
void replace_event(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:264
weed_plant_t * get_filter_map_after(weed_plant_t *event, int ctrack)
Definition: events.c:716
void get_active_track_list(int *clip_index, int num_tracks, weed_plant_t *filter_map)
Definition: events.c:2891
LiVESWidget * spinbutton_fps
Definition: events.h:179
weed_plant_t * get_last_frame_event(weed_plant_t *event_list)
Definition: events.c:336
int asamps
Definition: events.h:194
boolean start_render_effect_events(weed_plant_t *event_list)
render to clip
Definition: events.c:4032
Definition: events.h:164
void remove_frame_from_event(weed_plant_t *event_list, weed_plant_t *event, int track)
Definition: events.c:383
weed_plant_t * get_first_frame_event(weed_plant_t *event_list)
Definition: events.c:321
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:2233
void backup_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc)
Definition: events.c:1495
LiVESWidget * dialog
Definition: events.h:169
int get_frame_event_frame(weed_plant_t *, int layer)
Definition: events.c:201
LiVESWidget * usecur_button
Definition: events.h:171
weed_plant_t * event_copy_and_insert(weed_plant_t *in_event, weed_plant_t *event_list)
called during quantisation
Definition: events.c:492
boolean init_event_is_process_last(weed_plant_t *event)
Definition: events.c:1633
void insert_filter_init_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:922
void event_list_add_track(weed_plant_t *event_list, int layer)
Definition: events.c:2367
char * encoder_name
Definition: events.h:187
LiVESWidget * pertrack_checkbutton
Definition: events.h:180
double event_list_get_end_secs(weed_plant_t *event_list)
Definition: events.c:4185
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:1704
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:698
void unlink_event(weed_plant_t *event_list, weed_plant_t *event)
Definition: events.c:214
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:1317
boolean move_event_left(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps)
Definition: events.c:2028
LiVESWidget * always_hbox
Definition: events.h:183
boolean event_list_to_block(weed_plant_t *event_list, int num_events)
Definition: events.c:2241
boolean frame_event_has_frame_for_track(weed_plant_t *event, int track)
Definition: events.c:657
void add_init_event_to_filter_map(weed_plant_t *fmap, weed_plant_t *event, void **hints)
Definition: events.c:1655
weed_timecode_t get_event_timecode(weed_plant_t *)
Definition: events.c:47
weed_plant_t * append_filter_map_event(weed_plant_t *event_list, weed_timecode_t tc, void **init_events) WARN_UNUSED
Definition: events.c:2848
int get_audio_frame_clip(weed_plant_t *event, int track)
returns clip number for track (track==-1 is backing audio)
Definition: events.c:115
Definition: main.h:329
weed_plant_t * get_next_frame_event(weed_plant_t *event)
Definition: events.c:273
double event_list_get_start_secs(weed_plant_t *event_list)
Definition: events.c:4196
weed_plant_t * get_prev_audio_frame_event(weed_plant_t *event)
Definition: events.c:309
boolean is_encoding
Definition: events.h:190
boolean init_event_is_relevant(weed_plant_t *init_event, int ctrack)
Definition: events.c:755
double fps
Definition: events.h:167
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:678
void insert_filter_deinit_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:944
LiVESWidget * backaudio_checkbutton
Definition: events.h:181
boolean ratio_fps
Definition: events.h:168
LiVESWidget * events_rec_dialog(boolean allow_mt)
Definition: events.c:2114
weed_timecode_t get_next_paramchange(void **pchange_next, weed_timecode_t end_tc)
Definition: events.c:458
int count_resampled_events(weed_plant_t *event_list, double fps)
Definition: events.c:4139
void insert_param_change_event_at(weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:1017
boolean insert_event_before(weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:238
int width
Definition: events.h:165
boolean filter_init_has_owner(weed_plant_t *init_event, int track)
Definition: events.c:1473
LiVESWidget * add_video_options(LiVESWidget **spwidth, int defwidth, LiVESWidget **spheight, int defheight, LiVESWidget **spfps, double deffps, boolean add_aspect, LiVESWidget *extra)
Definition: events.c:5246
render_details * rdet
Definition: events.h:198
LiVESWidget * spinbutton_height
Definition: events.h:178
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:1045
weed_timecode_t event_list_get_start_tc(weed_plant_t *event_list)
Definition: events.c:4190
double get_audio_frame_seek(weed_plant_t *event, int track)
returns velocity for track (track==-1 is backing audio)
Definition: events.c:162
LiVESWidget * acodec_combo
Definition: events.h:175
void restore_host_tags(weed_plant_t *event_list, weed_timecode_t curr_tc)
Definition: events.c:1510
LiVESWidget * add_audio_options(LiVESWidget **cbbackaudio, LiVESWidget **cbpertrack)
Definition: events.c:5289
weed_plant_t * get_next_audio_frame_event(weed_plant_t *event)
Definition: events.c:297
boolean has_frame_event_at(weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut)
Definition: events.c:97
int get_event_hint(weed_plant_t *)
Definition: events.c:56
int get_frame_event_clip(weed_plant_t *, int layer)
Definition: events.c:188
boolean init_event_in_list(void **init_events, int num_inits, weed_plant_t *event)
Definition: events.c:1452
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:1812
void remove_filter_from_event_list(weed_plant_t *event_list, weed_plant_t *init_event)
Definition: events.c:1381
render_details * create_render_details(int type)
Definition: events.c:5358
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:2801
boolean enc_changed
Definition: events.h:186
void event_list_free(weed_plant_t *event_list)
Definition: events.c:2226
weed_plant_t * process_events(weed_plant_t *next_event, boolean process_audio, weed_timecode_t curr_tc)
RT playback.
Definition: events.c:2946
weed_timecode_t get_prev_paramchange(void **pchange_next, weed_timecode_t start_tc)
Definition: events.c:468
boolean deal_with_render_choice(boolean add_deinit)
Definition: events.c:4460
LiVESWidget * create_event_list_dialog(weed_plant_t *event_list, weed_timecode_t start_tc, weed_timecode_t end_tc)
Definition: events.c:4819
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:4121
ulong encoder_name_fn
Definition: events.h:184
LiVESWidget * ofmt_combo
Definition: events.h:174
#define ulong
Definition: main.h:137
void delete_event(weed_plant_t *event_list, weed_plant_t *event)
Definition: events.c:228
LiVESWidget * clipname_entry
Definition: events.h:172
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:1146
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:2514
weed_plant_t * get_prev_frame_event(weed_plant_t *event)
Definition: events.c:285
void add_track_to_avol_init(weed_plant_t *filter, weed_plant_t *event, int nbtracks, boolean behind)
Definition: events.c:2301
weed_plant_t * get_filter_map_before(weed_plant_t *event, int ctrack, weed_plant_t *stop_event)
Definition: events.c:793
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:2761
boolean move_event_right(weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps)
Definition: events.c:1950
boolean is_blank_frame(weed_plant_t *, boolean count_audio)
Definition: events.c:418
LiVESWidget * encoder_combo
Definition: events.h:173
weed_plant_t * get_prev_event(weed_plant_t *event)
Definition: events.c:65
void ** get_init_events_before(weed_plant_t *event, weed_plant_t *init_event, boolean add)
Definition: events.c:835
LiVESWidget * always_checkbutton
Definition: events.h:182
boolean insert_event_after(weed_plant_t *at_event, weed_plant_t *event)
Definition: events.c:251
int height
Definition: events.h:166
weed_plant_t * get_last_event(weed_plant_t *event_list)
Definition: events.c:89
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:2469
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:707
LiVESWidget * okbutton
Definition: events.h:170
int arate
Definition: events.h:192
boolean render_to_clip(boolean new_clip)
rendering
Definition: events.c:4213
double get_audio_frame_vel(weed_plant_t *event, int track)
returns velocity for track (track==-1 is backing audio)
Definition: events.c:134
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:2598
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:4645
weed_plant_t * get_audio_block_start(weed_plant_t *event_list, int track, weed_timecode_t tc, boolean seek_back)
Definition: events.c:351
int aendian
Definition: events.h:195
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:1373
boolean suggestion_followed
Definition: events.h:188
LiVESWidget * acodec_entry
Definition: events.h:176
weed_plant_t * get_next_event(weed_plant_t *event)
Definition: events.c:73
ulong encoder_ofmt_fn
Definition: events.h:185
#define WARN_UNUSED
Definition: main.h:262
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:910
boolean is_init_pchange(weed_plant_t *init_event, weed_plant_t *pchange_event)
Definition: events.c:478
weed_plant_t * append_marker_event(weed_plant_t *event_list, weed_timecode_t tc, int marker_type) WARN_UNUSED
Definition: events.c:1278