LiVES 2.4.6

- Main Page
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
multitrack.h
Go to the documentation of this file.
1 // multitrack.h
2 // LiVES
3 // (c) G. Finch 2005 - 2014 <salsaman@gmail.com>
4 // released under the GNU GPL 3 or later
5 // see file ../COPYING for licensing details
6
7 // multitrack window
8
9 #ifndef HAS_LIVES_MULTITRACK_H
10 #define HAS_LIVES_MULTITRACK_H
11
12
14
15
16 #define CLIP_THUMB_WIDTH ((int)(72.*widget_opts.scale))
17 #define CLIP_THUMB_HEIGHT ((int)(72.*widget_opts.scale))
18
19 #define CLIP_LABEL_LENGTH ((int)(20.*widget_opts.scale))
20
21 #define BLOCK_THUMB_WIDTH ((int)(40.*widget_opts.scale))
22
23 #define MT_PLAY_WIDTH_SMALL ((int)(320.*widget_opts.scale))
24 #define MT_PLAY_HEIGHT_SMALL ((int)(216.*widget_opts.scale))
25
26 #define MT_PLAY_WIDTH_EXP ((int)(432.*widget_opts.scale))
27 #define MT_PLAY_HEIGHT_EXP ((int)(324.*widget_opts.scale))
28
29 #define MT_CTX_WIDTH ((int)(320.*widget_opts.scale))
30 #define MT_CTX_HEIGHT ((int)(220.*widget_opts.scale))
31
32 #define FX_BLOCK_WIDTH ((int)(80.*widget_opts.scale))
33 #define FX_BLOCK_HEIGHT ((int)(20.*widget_opts.scale))
34
35 #define MT_TRACK_HEIGHT ((int)(25.*widget_opts.scale))
36
37 #define TIMECODE_LENGTH 14
38
39 #define TIMELINE_TABLE_COLUMNS 40
40
42
43 #define BLOCK_DRAW_SIMPLE 1
44 #define BLOCK_DRAW_THUMB 2
45 #define BLOCK_DRAW_TYPE BLOCK_DRAW_THUMB
46
47 #define DEF_TIME 120
48
49 typedef struct _mt lives_mt;
50
51 typedef struct _track_rect track_rect;
52
53 typedef struct _mt_opts mt_opts;
54
55 typedef struct _lives_amixer_t lives_amixer_t;
56
57 typedef enum {
58 MOUSE_MODE_MOVE,
59 MOUSE_MODE_SELECT,
60 MOUSE_MODE_COPY
61 } lives_mt_mouse_mode_t;
62
63
64 typedef enum {
65 INSERT_MODE_NORMAL,
66
67 // not implemented yet
68 INSERT_MODE_OVERWRITE,
69 INSERT_MODE_FLEX,
70 INSERT_MODE_FILL,
71 } lives_mt_insert_mode_t;
72
73
74 typedef enum {
75 GRAV_MODE_NORMAL,
76 GRAV_MODE_LEFT,
77 GRAV_MODE_RIGHT
78 } lives_mt_grav_mode_t;
79
80
81 typedef enum {
82 // undo actions
84 MT_UNDO_NONE=0,
85 MT_UNDO_INSERT_BLOCK=1,
86 MT_UNDO_INSERT_AUDIO_BLOCK=2,
87
88 // minimal event_list
89 MT_UNDO_APPLY_FILTER=512,
90 MT_UNDO_DELETE_FILTER=513,
91 MT_UNDO_SPLIT=514,
92 MT_UNDO_SPLIT_MULTI=515,
93 MT_UNDO_FILTER_MAP_CHANGE=516,
94
95 // full backups of event_list
96 MT_UNDO_DELETE_BLOCK=1024,
97 MT_UNDO_MOVE_BLOCK=1025,
98 MT_UNDO_REMOVE_GAPS=1026,
99 MT_UNDO_DELETE_AUDIO_BLOCK=1027,
100 MT_UNDO_MOVE_AUDIO_BLOCK=1028,
101 MT_UNDO_INSERT_GAP=1029
102 } lives_mt_undo_t;
103
104
105
106 typedef enum {
107 NB_ERROR_SEL,
108 NB_ERROR_NOEFFECT,
109 NB_ERROR_NOTRANS,
110 NB_ERROR_NOCOMP,
111 NB_ERROR_NOCLIP
112 } lives_mt_nb_error_t;
113
114
115
116 typedef enum {
117 POLY_NONE=0,
118 POLY_CLIPS,
119 POLY_IN_OUT,
120 POLY_FX_STACK,
121 POLY_EFFECTS,
122 POLY_TRANS,
123 POLY_COMP,
124 POLY_PARAMS
125 } lives_mt_poly_state_t;
126
127
128
129 typedef enum {
130 DIRECTION_NEGATIVE,
131 DIRECTION_POSITIVE
132 } lives_direction_t;
133
134
135 typedef enum {
136 MT_LAST_FX_NONE=0,
137 MT_LAST_FX_BLOCK,
138 MT_LAST_FX_REGION
139 } lives_mt_last_fx_type_t;
140
141
142 typedef enum {
143 FX_ORD_NONE=0,
144 FX_ORD_BEFORE,
145 FX_ORD_AFTER
146 } lives_mt_fx_order_t;
147
148
149 typedef enum {
150 // block state
151 BLOCK_UNSELECTED=0,
152 BLOCK_SELECTED
153 } lives_mt_block_state_t;
154
155
156
157 struct _mt_opts {
158 boolean set;
159 boolean move_effects;
160 boolean fx_auto_preview;
161 boolean snap_over;
162 lives_mt_grav_mode_t grav_mode;
163 lives_mt_mouse_mode_t mouse_mode;
164 lives_mt_insert_mode_t insert_mode;
165 boolean show_audio;
166 boolean show_ctx;
167 boolean ign_ins_sel;
168 boolean follow_playback;
169 boolean insert_audio;
170 boolean pertrack_audio;
171 boolean audio_bleedthru;
172 boolean gang_audio;
173 boolean autocross_audio;
174 int back_audio_tracks;
175 boolean render_vidp;
176 boolean render_audp;
177 boolean normalise_audp;
178 LiVESList *aparam_view_list;
179 };
180
181
182 struct _mt {
183 // widgets
184 LiVESWidget *window;
185 LiVESWidget *menubar;
186 LiVESWidget *top_vbox;
187 LiVESWidget *hbox;
188 LiVESWidget *play_blank;
189 LiVESWidget *play_box;
190 LiVESWidget *poly_box;
191 LiVESWidget *clip_scroll;
192 LiVESWidget *clip_inner_box;
193 LiVESWidget *in_out_box;
194 LiVESWidget *in_hbox;
195 LiVESWidget *out_hbox;
196 LiVESWidget *in_image;
197 LiVESWidget *out_image;
198 LiVESWidget *context_box;
199 LiVESWidget *context_scroll;
200 LiVESWidget *sep_image;
201 LiVESWidget *timeline_table_header;
202 LiVESWidget *tl_eventbox;
203 LiVESWidget *timeline_table;
204 LiVESWidget *timeline;
205 LiVESWidget *timeline_eb;
206 LiVESWidget *timeline_reg;
207 LiVESWidget *infobar;
208 LiVESWidget *stop;
209 LiVESWidget *rewind;
210 LiVESWidget *sepwin;
211 LiVESWidget *mute_audio;
212 LiVESWidget *loop_continue;
213 LiVESWidget *insert;
214 LiVESWidget *audio_insert;
215 LiVESWidget *delblock;
216 LiVESWidget *clipedit;
217 LiVESWidget *vpaned;
218 LiVESWidget *hpaned;
219 LiVESWidget *scrollbar;
220 LiVESWidget *playall;
221 LiVESWidget *playsel;
222 LiVESWidget *jumpnext;
223 LiVESWidget *jumpback;
224 LiVESWidget *render;
225 LiVESWidget *prerender_aud;
226 LiVESWidget *fx_block;
227 LiVESWidget *fx_blockv;
228 LiVESWidget *fx_blocka;
229 LiVESWidget *fx_delete;
230 LiVESWidget *fx_edit;
231 LiVESWidget *fx_region;
232 LiVESWidget *fx_region_1;
233 LiVESWidget *fx_region_1v;
234 LiVESWidget *fx_region_1a;
235 LiVESWidget *fx_region_2;
236 LiVESWidget *fx_region_2av;
237 LiVESWidget *fx_region_2v;
238 LiVESWidget *fx_region_2a;
239 LiVESWidget *fx_region_3;
240 LiVESWidget *atrans_menuitem;
241 LiVESWidget *submenu_atransfx;
242 LiVESWidget *move_fx;
243 LiVESWidget *mm_menuitem;
244 LiVESWidget *mm_move;
245 LiVESWidget *mm_select;
246 LiVESWidget *ins_menuitem;
247 LiVESWidget *ins_normal;
248 LiVESToolItem *grav_menuitem;
249 LiVESWidget *grav_label;
250 LiVESWidget *grav_normal;
251 LiVESWidget *grav_left;
252 LiVESWidget *grav_right;
253 LiVESWidget *select_track;
254 LiVESWidget *seldesel_menuitem;
255 LiVESWidget *view_events;
256 LiVESWidget *view_clips;
257 LiVESWidget *view_in_out;
258 LiVESWidget *view_effects;
259 LiVESWidget *avel_box;
260 LiVESWidget *checkbutton_avel_reverse;
261 LiVESWidget *spinbutton_avel;
262 LiVESWidget *avel_scale;
263 LiVESWidget *spinbutton_in;
264 LiVESWidget *spinbutton_out;
265 LiVESWidget *checkbutton_start_anchored;
266 LiVESWidget *checkbutton_end_anchored;
267 LiVESWidget *timecode;
268 LiVESWidget *spinbutton_start;
269 LiVESWidget *spinbutton_end;
270 LiVESWidget *tl_hbox;
271 LiVESWidget *fx_base_box;
272 LiVESWidget *fx_contents_box;
273 LiVESWidget *fx_box;
274 LiVESWidget *fx_label;
275 LiVESWidget *param_inner_box;
276 LiVESWidget *param_box;
277 LiVESWidget *next_node_button;
278 LiVESWidget *prev_node_button;
279 LiVESWidget *del_node_button;
280 LiVESWidget *node_spinbutton;
281 LiVESWidget *node_scale;
282 LiVESWidget *sel_label;
283 LiVESWidget *l_sel_arrow;
284 LiVESWidget *r_sel_arrow;
285 LiVESWidget *save_event_list;
286 LiVESWidget *load_event_list;
287 LiVESWidget *clear_event_list;
288 LiVESWidget *tc_to_rs;
289 LiVESWidget *tc_to_re;
290 LiVESWidget *rs_to_tc;
291 LiVESWidget *re_to_tc;
292 LiVESWidget *undo;
293 LiVESWidget *redo;
294 LiVESWidget *ac_audio_check;
295 LiVESWidget *remove_gaps;
296 LiVESWidget *remove_first_gaps;
297 LiVESWidget *split_sel;
298 LiVESWidget *ins_gap_sel;
299 LiVESWidget *ins_gap_cur;
300 LiVESWidget *last_filter_map;
301 LiVESWidget *next_filter_map;
302 LiVESWidget *fx_list_box;
303 LiVESWidget *fx_list_scroll;
304 LiVESWidget *fx_list_vbox;
305 LiVESWidget *next_fm_button;
306 LiVESWidget *prev_fm_button;
307 LiVESWidget *fx_ibefore_button;
308 LiVESWidget *fx_iafter_button;
309 LiVESWidget *rename_track;
310 LiVESWidget *cback_audio;
311 LiVESWidget *aload_subs;
312 LiVESWidget *load_vals;
313 LiVESWidget *change_vals;
314 LiVESWidget *aparam_separator;
315 LiVESWidget *aparam_menuitem;
316 LiVESWidget *aparam_submenu;
317 LiVESWidget *render_sep;
318 LiVESWidget *render_vid;
319 LiVESWidget *render_aud;
320 LiVESWidget *normalise_aud;
321 LiVESWidget *view_audio;
322 LiVESWidget *clear_marks;
323 LiVESWidget *fd_frame;
324 LiVESWidget *apply_fx_button;
325 LiVESToolItem *eview_button;
326 LiVESWidget *eview_label;
327 LiVESWidget *follow_play;
328 LiVESWidget *change_max_disp;
329 LiVESWidget *add_vid_behind;
330 LiVESWidget *add_vid_front;
331 LiVESWidget *quit;
332 LiVESWidget *troubleshoot;
333 LiVESWidget *fx_params_label;
334 LiVESWidget *amixer_button;
335 LiVESWidget *view_sel_events;
336 LiVESWidget *adjust_start_end;
337 LiVESWidget *context_frame;
338 LiVESWidget *nb;
339 LiVESWidget *nb_label;
340
341 LiVESWidget *btoolbar;
342 LiVESWidget *btoolbar2;
343 LiVESWidget *btoolbar3;
344
345 LiVESWidget *menu_hbox;
346
347 LiVESWidget *open_menu;
348 #ifdef HAVE_WEBM
349 LiVESWidget *open_loc_menu;
350 #endif
351 #ifdef ENABLE_DVD_GRAB
352 LiVESWidget *vcd_dvd_menu;
353 #endif
354 #ifdef HAVE_LDVGRAB
355 LiVESWidget *device_menu;
356 #endif
357 LiVESWidget *recent_menu;
358 LiVESWidget *recent1;
359 LiVESWidget *recent2;
360 LiVESWidget *recent3;
361 LiVESWidget *recent4;
362
363 LiVESWidget *time_scrollbar;
364 LiVESWidget *show_layout_errors;
365
366 LiVESWidget *load_set;
367 LiVESWidget *save_set;
368
369 LiVESWidget *close;
370
371 LiVESWidget *clear_ds;
372
373 LiVESWidget *gens_submenu;
374 LiVESWidget *capture;
375
376 LiVESWidget *insa_checkbutton;
377 LiVESWidget *snapo_checkbutton;
378
379 LiVESObject *spinbutton_in_adj;
380 LiVESObject *spinbutton_out_adj;
381
382 LiVESObject *hadjustment;
383 LiVESObject *node_adj;
384
385 LiVESList *audio_draws;
386
387 LiVESList *audio_vols;
388 LiVESList *audio_vols_back;
389
390 LiVESAccelGroup *accel_group;
391 LiVESList *video_draws;
392 LiVESObject *vadjustment;
393
394 LiVESXDisplay *display;
395
396 LiVESPixbuf *frame_pixbuf;
397
398 LiVESList *cb_list;
399
400 ulong spin_in_func;
401 ulong spin_out_func;
402 ulong spin_avel_func;
403 ulong check_start_func;
404 ulong check_end_func;
405 ulong check_avel_rev_func;
406
407 ulong mm_move_func;
408 ulong mm_select_func;
409
410 ulong ins_normal_func;
411
412 ulong grav_normal_func;
413 ulong grav_left_func;
414 ulong grav_right_func;
415
416 ulong sepwin_func;
417 ulong mute_audio_func;
418 ulong loop_cont_func;
419
420 ulong seltrack_func;
421
422 ulong tc_func;
423
424 weed_plant_t *event_list;
425
426 weed_plant_t *init_event;
427 weed_plant_t *selected_init_event;
428 int num_video_tracks;
430 double end_secs;
431
432 // timeline min and max display values
433 double tl_min;
434 double tl_max;
435
436 int clip_selected;
437 int file_selected;
438 int current_track;
439
440 LiVESList *selected_tracks;
441
442 lives_mt_poly_state_t poly_state;
443
444 int render_file;
445
446 lives_direction_t last_direction;
447
448 track_rect *block_selected;
449 track_rect *putative_block;
450
451 double ptr_time;
452
453 double tl_fixed_length;
454
455 double fps;
456
457 double region_start;
458 double region_end;
459 double region_init;
460 boolean region_updating;
461
462 boolean is_rendering;
463 boolean pr_audio;
464
465 int current_fx;
466
467 boolean mt_frame_preview;
468
469 lives_rfx_t *current_rfx;
470
471 char layout_name[PATH_MAX];
472
473 // cursor warping for mouse move mode
474 double hotspot_x;
475 int hotspot_y;
476
477 boolean moving_block;
478
479 double pb_start_time;
480
482
483 int sel_x;
484 int sel_y;
485
486 ulong mouse_mot1;
487 ulong mouse_mot2;
488
489 boolean tl_selecting;
490
491 /* start and end offset overrides for inserting (used during block move) */
492 weed_timecode_t insert_start;
493 weed_timecode_t insert_end;
494
496 double insert_avel;
497
498 LiVESList *undos;
499 size_t undo_buffer_used;
500 uint8_t *undo_mem;
501 int undo_offset;
502 boolean did_backup;
503
504 char undo_text[32];
505 char redo_text[32];
506
507 boolean undoable;
508 boolean redoable;
509
510 boolean changed;
511 boolean auto_changed;
512
513 int64_t auto_back_time;
514
515 // stuff to do with framedraw "special" widgets
516 int inwidth;
517 int inheight;
518 int outwidth;
519 int outheight;
520 lives_special_framedraw_rect_t *framedraw;
521 int track_index;
522
523 lives_mt_last_fx_type_t last_fx_type;
524
525 lives_mt_fx_order_t fx_order;
526
527 mt_opts opts;
528
529 boolean auto_reloading;
530
531 weed_plant_t *fm_edit_event;
532 weed_plant_t *moving_fx;
533
534 int avol_fx;
535 weed_plant_t *avol_init_event;
536
537 ulong spin_start_func;
538 ulong spin_end_func;
539
540 boolean layout_prompt;
541 boolean layout_set_properties;
542 boolean ignore_load_vals;
543
544 double user_fps;
545 int user_width;
546 int user_height;
547 int user_arate;
548 int user_achans;
549 int user_asamps;
550 int user_signed_endian;
551
552 int exact_preview;
553
554
555 LiVESList *tl_marks;
556
557 weed_plant_t *pb_start_event;
558 weed_plant_t *pb_loop_event;
559
560 weed_plant_t *specific_event;
561
562 double context_time;
563 boolean use_context;
564
565 lives_cursor_t cursor_style;
566
567 boolean is_paused;
568
569 /* current size of frame inside playback/preview area */
570 int play_width;
571 int play_height;
572
573 /* current size of playback/preview area */
574 int play_window_width;
575 int play_window_height;
576
577 int selected_filter;
578
579 int top_track;
580
581 boolean redraw_block;
582
583 boolean was_undo_redo;
584
585 boolean no_expose;
586
587 boolean is_ready;
588
589 boolean aud_track_selected;
590
591 boolean has_audio_file;
592
593 boolean tl_mouse;
594
595 boolean playing_sel;
596
597 uint32_t idlefunc;
598
599 LiVESList *clip_labels;
600
601 lives_amixer_t *amixer;
602
603 double prev_fx_time;
604
605 boolean block_tl_move;
606 boolean block_node_spin;
607
608 boolean is_atrans;
609
610 char *force_load_name;
611
613 }; // lives_mt
614
615
616
617
618 typedef struct {
619 lives_mt_undo_t action;
620 weed_timecode_t tc;
621 void *extra;
622 size_t data_len;
623 } mt_undo;
624
625
626 struct _lives_amixer_t {
627 LiVESWidget *main_hbox;
628 LiVESWidget **ch_sliders;
629 LiVESWidget *gang_checkbutton;
630 LiVESWidget *inv_checkbutton;
631 ulong *ch_slider_fns;
632 int nchans;
633 lives_mt *mt;
634 };
635
636
637 // reasons for track invisibility (bitmap)
638 #define TRACK_I_HIDDEN_USER (1<<0)
639 #define TRACK_I_HIDDEN_SCROLLED (1<<1)
640
645 struct _track_rect {
646 ulong uid;
647
648 track_rect *next;
649 track_rect *prev;
650 weed_plant_t *start_event;
651 weed_plant_t *end_event;
652
653 weed_timecode_t offset_start;
654
655 lives_mt_block_state_t state;
656 boolean start_anchored;
657 boolean end_anchored;
658 boolean ordered;
659
660 LiVESWidget
661 *eventbox;
662
663 };
664
665
666 /* translation table for matching event_id to init_event */
667 typedef struct {
668 uint64_t in;
669 void *out;
670 } ttable;
671
672
673 /* clip->layout use mapping, from layout.map lives_clip_t */
674 typedef struct {
675 char *handle;
676 int64_t unique_id;
677 char *name;
678 LiVESList *list;
679 } layout_map;
680
681
682
683
684
686
687 // setup functions
688
689 lives_mt *multitrack(weed_plant_t *, int orig_file, double fps);
690 void mt_init_tracks(lives_mt *, boolean set_min_max);
691 boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list);
692
693 // delete function
694 boolean multitrack_delete(lives_mt *, boolean save);
695
696 // morph the poly window
697 void polymorph(lives_mt *, lives_mt_poly_state_t poly);
698
699 // sens/desens
700 void mt_desensitise(lives_mt *);
701 void mt_sensitise(lives_mt *);
702
703 void add_aparam_menuitems(lives_mt *);
704
705 // external control callbacks
706 void insert_here_cb(LiVESMenuItem *, livespointer mt);
707 void insert_audio_here_cb(LiVESMenuItem *, livespointer mt);
708 void insert_at_ctx_cb(LiVESMenuItem *, livespointer mt);
709 void insert_audio_at_ctx_cb(LiVESMenuItem *, livespointer mt);
710 void multitrack_end_cb(LiVESMenuItem *, livespointer mt);
711 void delete_block_cb(LiVESMenuItem *, livespointer mt);
712 void selblock_cb(LiVESMenuItem *, livespointer mt);
713 void list_fx_here_cb(LiVESMenuItem *, livespointer mt);
714 void edit_start_end_cb(LiVESMenuItem *, livespointer mt);
715 void close_clip_cb(LiVESMenuItem *, livespointer mt);
716 void show_clipinfo_cb(LiVESMenuItem *, livespointer mt);
717
718 boolean multitrack_insert(LiVESMenuItem *, livespointer mt);
719 track_rect *move_block(lives_mt *, track_rect *block, double timesecs, int old_track, int new_track);
720
721 void update_grav_mode(lives_mt *);
722 void update_insert_mode(lives_mt *);
723
724
725 boolean on_render_activate(LiVESMenuItem *, livespointer mt);
726
727 void mt_set_autotrans(int idx);
728
729
730 // event_list functions
731 weed_plant_t *add_blank_frames_up_to(weed_plant_t *event_list, weed_plant_t *start_event, weed_timecode_t end_tc, double fps);
732
733 // track functions
734 void on_cback_audio_activate(LiVESMenuItem *, livespointer mt);
735 LiVESWidget *add_audio_track(lives_mt *, int trackno, boolean behind);
736 int add_video_track_behind(LiVESMenuItem *, livespointer mt);
737 int add_video_track_front(LiVESMenuItem *, livespointer mt);
738 void delete_video_track(lives_mt *, int layer, boolean full);
739 void delete_audio_track(lives_mt *, LiVESWidget *eventbox, boolean full);
740 void delete_audio_tracks(lives_mt *, LiVESList *list, boolean full);
741 void remove_gaps(LiVESMenuItem *, livespointer mt);
742 void remove_first_gaps(LiVESMenuItem *, livespointer mt);
743 void on_insgap_sel_activate(LiVESMenuItem *, livespointer mt);
744 void on_insgap_cur_activate(LiVESMenuItem *, livespointer mt);
745 void on_split_activate(LiVESMenuItem *, livespointer mt);
746 void scroll_tracks(lives_mt *, int top_track, boolean set_value);
747 boolean track_arrow_pressed(LiVESWidget *ahbox, LiVESXEventButton *, livespointer mt);
748 void track_select(lives_mt *);
749 boolean mt_track_is_audio(lives_mt *, int ntrack);
750 boolean mt_track_is_video(lives_mt *, int ntrack);
751 char *get_track_name(lives_mt *mt, int track_num, boolean is_audio);
752
753 void mt_do_autotransition(lives_mt *, track_rect *block);
754
755 void set_track_label_string(lives_mt *mt, int track, const char *label);
756
757 LiVESWidget *get_eventbox_for_track(lives_mt *mt, int ntrack);
758 void on_rename_track_activate(LiVESMenuItem *menuitem, livespointer mt);
759
760
761 // track mouse movement
762 boolean on_track_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
763 boolean on_atrack_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
764 boolean on_track_header_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
765 boolean on_track_between_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
766 boolean on_track_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt);
767 boolean on_atrack_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt);
768 boolean on_track_header_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
769 boolean on_track_between_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
770 boolean on_track_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt);
771 boolean on_track_header_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt);
772
773 void unselect_all(lives_mt *);
774 void insert_frames(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc,
775 lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block);
776 void insert_audio(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc,
777 double avel, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block);
778 void on_seltrack_toggled(LiVESWidget *, livespointer mt);
779 void scroll_track_by_scrollbar(LiVESScrollbar *sbar, livespointer mt);
780
781 // block functions
782 void in_out_start_changed(LiVESWidget *, livespointer mt);
783 void in_out_end_changed(LiVESWidget *, livespointer mt);
784 void in_anchor_toggled(LiVESToggleButton *, livespointer mt);
785 void out_anchor_toggled(LiVESToggleButton *, livespointer mt);
786 void avel_reverse_toggled(LiVESToggleButton *, livespointer mt);
787 void avel_spin_changed(LiVESSpinButton *, livespointer mt);
788
789 // block API functions
790 track_rect *find_block_by_uid(lives_mt *mt, ulong uid);
791 ulong mt_get_last_block_uid(lives_mt *mt);
792 int mt_get_block_count(lives_mt *, int ntrack);
793 double mt_get_block_sttime(lives_mt *, int ntrack, int iblock);
794 double mt_get_block_entime(lives_mt *, int ntrack, int iblock);
795
796 track_rect *get_block_from_track_and_time(lives_mt *mt, int track, double time);
797
798 int get_track_for_block(track_rect *block);
799 int get_clip_for_block(track_rect *block);
800
801
802 // timeline functions
803 void mt_tl_move_relative(lives_mt *, double pos_rel);
804 void mt_tl_move(lives_mt *, double pos_abs);
805 void set_timeline_end_secs(lives_mt *, double secs);
806 boolean on_timeline_press(LiVESWidget *, LiVESXEventButton *, livespointer mt);
807 boolean on_timeline_release(LiVESWidget *, LiVESXEventButton *, livespointer mt);
808 boolean on_timeline_update(LiVESWidget *, LiVESXEventMotion *, livespointer mt);
809 void draw_region(lives_mt *mt);
810 void tc_to_rs(LiVESMenuItem *, livespointer mt);
811 void tc_to_re(LiVESMenuItem *, livespointer mt);
812 void rs_to_tc(LiVESMenuItem *, livespointer mt);
813 void re_to_tc(LiVESMenuItem *, livespointer mt);
814
815 boolean mt_mark_callback(LiVESAccelGroup *group, LiVESObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data);
816
817 void multitrack_clear_marks(LiVESMenuItem *, livespointer mt);
818 void mt_show_current_frame(lives_mt *, boolean return_layer);
819 void mt_clear_timeline(lives_mt *mt);
820
821
822 // context box text
823 void clear_context(lives_mt *);
824 void add_context_label(lives_mt *, const char *text);
825 void mouse_mode_context(lives_mt *);
826 void do_sel_context(lives_mt *);
827 void do_fx_list_context(lives_mt *, int fxcount);
828 void do_fx_move_context(lives_mt *mt);
829
830 // playback / animation
831 void multitrack_playall(lives_mt *);
832 void multitrack_play_sel(LiVESMenuItem *, livespointer mt);
833 void animate_multitrack(lives_mt *);
834 void unpaint_line(lives_mt *, LiVESWidget *eventbox);
835 void unpaint_lines(lives_mt *);
836
837 void mt_prepare_for_playback(lives_mt *);
838 void mt_post_playback(lives_mt *);
839
840
841 // effect node controls
842 void on_next_node_clicked(LiVESWidget *, livespointer mt);
843 void on_prev_node_clicked(LiVESWidget *, livespointer mt);
844 void on_del_node_clicked(LiVESWidget *, livespointer mt);
845 void on_node_spin_value_changed(LiVESSpinButton *, livespointer mt);
846 double mt_get_effect_time(lives_mt *);
847
848 void on_frame_preview_clicked(LiVESButton *, livespointer mt);
849 void show_preview(lives_mt *, weed_timecode_t tc);
850
851 boolean add_mt_param_box(lives_mt *);
852
853 // filter list controls
854 weed_plant_t *get_prev_fm(lives_mt *, int current_track, weed_plant_t *frame);
855 weed_plant_t *get_next_fm(lives_mt *, int current_track, weed_plant_t *frame);
856
857 void on_prev_fm_clicked(LiVESWidget *button, livespointer mt);
858 void on_next_fm_clicked(LiVESWidget *button, livespointer mt);
859 void on_fx_insb_clicked(LiVESWidget *button, livespointer mt);
860 void on_fx_insa_clicked(LiVESWidget *button, livespointer mt);
861
862 // utils
863 uint32_t event_list_get_byte_size(lives_mt *, weed_plant_t *event_list, int *num_events);
864 boolean event_list_rectify(lives_mt *, weed_plant_t *event_listy);
865 boolean make_backup_space(lives_mt *, size_t space_needed);
866 void activate_mt_preview(lives_mt *);
867 void **mt_get_pchain(void);
868 void event_list_free_undos(lives_mt *);
869 boolean used_in_current_layout(lives_mt *, int file);
870
871 boolean set_new_set_name(lives_mt *);
872
873 LiVESPixbuf *make_thumb(lives_mt *, int file, int width, int height, int frame, boolean noblanks);
874
875
876
877 // event_list utilities
878 boolean compare_filter_maps(weed_plant_t *fm1, weed_plant_t *fm2,
879 int ctrack);
880 void move_init_in_filter_map(lives_mt *, weed_plant_t *event_list, weed_plant_t *fmap, weed_plant_t *ifrom,
881 weed_plant_t *ito, int track, boolean after);
882 void update_filter_events(lives_mt *, weed_plant_t *first_event, weed_timecode_t start_tc, weed_timecode_t end_tc,
883 int track, weed_timecode_t new_start_tc, int new_track);
884 void mt_fixup_events(lives_mt *, weed_plant_t *old_event, weed_plant_t *new_event);
885
886 // event_list load/save
887 char *get_eload_filename(lives_mt *mt, boolean allow_auto_reload);
888 weed_plant_t *load_event_list(lives_mt *, char *eload_file);
889 boolean on_save_event_list_activate(LiVESMenuItem *, livespointer mt);
890
891
892 // layouts and layout maps
893 LiVESList *load_layout_map(void);
894 void add_markers(lives_mt *, weed_plant_t *event_list, boolean add_block_ids);
895 void remove_markers(weed_plant_t *event_list);
896 void save_layout_map(int *lmap, double *lmap_audio, const char *file, const char *dir);
897
898 void wipe_layout(lives_mt *);
899
900 void migrate_layouts(const char *old_set_name, const char *new_set_name);
901
902 LiVESList *layout_frame_is_affected(int clipno, int frame);
903 LiVESList *layout_audio_is_affected(int clipno, double time);
904
905 boolean check_for_layout_del(lives_mt *, boolean exiting);
906
907 boolean on_load_event_list_activate(LiVESMenuItem *, livespointer mt);
908
909 void stored_event_list_free_all(boolean wiped);
910 void stored_event_list_free_undos(void);
911 void remove_current_from_affected_layouts(lives_mt *);
912
913
914 // auto backup
915 uint32_t mt_idle_add(lives_mt *);
916 void recover_layout(void);
917 void recover_layout_cancelled(boolean is_startup);
918 boolean write_backup_layout_numbering(lives_mt *);
919
920
921 // amixer funcs
922 void amixer_show(LiVESButton *, livespointer mt);
923 void on_amixer_close_clicked(LiVESButton *, lives_mt *mt);
924 LiVESWidget *amixer_add_channel_slider(lives_mt *, int i);
925
926
927 // misc
928 void mt_change_disp_tracks_ok(LiVESButton *, livespointer mt);
929 void mt_swap_play_pause(lives_mt *, boolean put_pause);
930 char *set_values_from_defs(lives_mt *, boolean from_prefs);
931
932
933 // clip boxes
934 void mt_clip_select(lives_mt *, boolean scroll);
935 void mt_delete_clips(lives_mt *, int file);
936 void mt_init_clips(lives_mt *, int orig_file, boolean add);
937
938 // key shortcuts
939 boolean mt_prevclip(LiVESAccelGroup *, LiVESObject *, uint32_t keyval, LiVESXModifierType mod, livespointer);
940 boolean mt_nextclip(LiVESAccelGroup *, LiVESObject *, uint32_t keyval, LiVESXModifierType mod, livespointer);
941
942 typedef enum {
943 /* default to warn about */
944 LMAP_ERROR_MISSING_CLIP=1,
945 LMAP_ERROR_CLOSE_FILE=2,
946 LMAP_ERROR_DELETE_FRAMES=3,
947 LMAP_ERROR_DELETE_AUDIO=4,
948
949 /*non-default*/
950 LMAP_ERROR_SHIFT_FRAMES=65,
951 LMAP_ERROR_ALTER_FRAMES=66,
952 LMAP_ERROR_SHIFT_AUDIO=67,
953 LMAP_ERROR_ALTER_AUDIO=68,
954
955 /* info */
956 LMAP_INFO_SETNAME_CHANGED=1024
957 } lives_lmap_error_t;
958
959
960
961 // array max: TODO - use dynamic arrays to bypass track limits
962
963 #ifdef IS_MINGW
964 #define MAX_TRACKS 32768
965 #define MAX_VIDEO_TRACKS 32768
966 #define MAX_AUDIO_TRACKS 32768
967 #else
968 #define MAX_TRACKS 65536
969 #define MAX_VIDEO_TRACKS 65536
970 #define MAX_AUDIO_TRACKS 65536
971 #endif
972
973 #endif
BLOCK_UNSELECTED
Definition: multitrack.h:151
MT_UNDO_INSERT_BLOCK
Definition: multitrack.h:85
get_track_for_block
int get_track_for_block(track_rect *block)
return track number for a given block
Definition: multitrack.c:192
_mt::grav_right_func
ulong grav_right_func
Definition: multitrack.h:414
insert_audio_at_ctx_cb
void insert_audio_at_ctx_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14246
_mt::param_box
LiVESWidget * param_box
Definition: multitrack.h:276
_mt::fx_region_2
LiVESWidget * fx_region_2
Definition: multitrack.h:235
_mt_opts::move_effects
boolean move_effects
should we move effects attached to a block ?
Definition: multitrack.h:159
_mt::fx_blocka
LiVESWidget * fx_blocka
Definition: multitrack.h:228
_mt::view_effects
LiVESWidget * view_effects
Definition: multitrack.h:258
mt_get_block_count
int mt_get_block_count(lives_mt *mt, int ntrack)
count blocks in track
Definition: multitrack.c:22795
_mt::view_events
LiVESWidget * view_events
Definition: multitrack.h:255
check_for_layout_del
boolean check_for_layout_del(lives_mt *mt, boolean exiting)
Definition: multitrack.c:5571
_mt::loop_continue
LiVESWidget * loop_continue
Definition: multitrack.h:212
mt_post_playback
void mt_post_playback(lives_mt *mt)
Definition: multitrack.c:17168
add_audio_track
LiVESWidget * add_audio_track(lives_mt *mt, int track, boolean behind)
Definition: multitrack.c:10271
write_backup_layout_numbering
boolean write_backup_layout_numbering(lives_mt *mt)
Definition: multitrack.c:614
_mt::save_event_list
LiVESWidget * save_event_list
menuitem
Definition: multitrack.h:285
add_video_track_behind
int add_video_track_behind(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:10606
get_block_from_track_and_time
track_rect * get_block_from_track_and_time(lives_mt *mt, int track, double time)
get timeline end time of block
Definition: multitrack.c:22830
_mt_opts::insert_audio
boolean insert_audio
do we insert audio with video ?
Definition: multitrack.h:169
_mt::fd_frame
LiVESWidget * fd_frame
Definition: multitrack.h:323
_mt::fx_region_1v
LiVESWidget * fx_region_1v
Definition: multitrack.h:233
_mt::sel_label
LiVESWidget * sel_label
Definition: multitrack.h:282
MT_LAST_FX_REGION
Definition: multitrack.h:138
_mt::current_track
int current_track
starts at 0
Definition: multitrack.h:438
_mt_opts::audio_bleedthru
boolean audio_bleedthru
should we allow all audio to bleed thru ?
Definition: multitrack.h:171
_mt::amixer_button
LiVESWidget * amixer_button
Definition: multitrack.h:334
_mt::seldesel_menuitem
LiVESWidget * seldesel_menuitem
Definition: multitrack.h:254
FX_ORD_BEFORE
Definition: multitrack.h:144
LMAP_ERROR_ALTER_FRAMES
Definition: multitrack.h:951
LMAP_ERROR_DELETE_FRAMES
Definition: multitrack.h:946
_mt::load_set
LiVESWidget * load_set
Definition: multitrack.h:366
MT_UNDO_SPLIT
Definition: multitrack.h:91
set_track_label_string
void set_track_label_string(lives_mt *mt, int track, const char *label)
Definition: multitrack.c:10454
on_prev_fm_clicked
void on_prev_fm_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18766
_mt_opts::follow_playback
boolean follow_playback
Definition: multitrack.h:168
recover_layout_cancelled
void recover_layout_cancelled(boolean is_startup)
Definition: multitrack.c:882
mt_delete_clips
void mt_delete_clips(lives_mt *mt, int file)
Definition: multitrack.c:10876
_mt::region_updating
boolean region_updating
Definition: multitrack.h:460
_mt::time_scrollbar
LiVESWidget * time_scrollbar
Definition: multitrack.h:363
mouse_mode_context
void mouse_mode_context(lives_mt *mt)
Definition: multitrack.c:4585
_mt::use_context
boolean use_context
Definition: multitrack.h:563
lives_mt_fx_order_t
lives_mt_fx_order_t
Definition: multitrack.h:142
_mt::context_frame
LiVESWidget * context_frame
Definition: multitrack.h:337
_mt::add_vid_front
LiVESWidget * add_vid_front
Definition: multitrack.h:330
_mt::in_image
LiVESWidget * in_image
Definition: multitrack.h:196
on_cback_audio_activate
void on_cback_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:16018
_mt::current_fx
int current_fx
Definition: multitrack.h:465
POLY_PARAMS
Definition: multitrack.h:124
PATH_MAX
#define PATH_MAX
Definition: main.h:264
_mt::region_init
double region_init
point where user pressed the mouse
Definition: multitrack.h:459
_mt::force_load_name
char * force_load_name
&lt; force some visual changes when applying autotrans
Definition: multitrack.h:610
mt_tl_move_relative
LIVES_INLINE void mt_tl_move_relative(lives_mt *mt, double pos_rel)
Definition: multitrack.c:3334
MT_UNDO_MOVE_BLOCK
Definition: multitrack.h:97
_mt::clip_scroll
LiVESWidget * clip_scroll
Definition: multitrack.h:191
_mt::last_direction
lives_direction_t last_direction
last direction timeline cursor was moved in
Definition: multitrack.h:446
_mt::del_node_button
LiVESWidget * del_node_button
Definition: multitrack.h:279
lives_mt_mouse_mode_t
lives_mt_mouse_mode_t
Definition: multitrack.h:57
_mt::ins_normal
LiVESWidget * ins_normal
Definition: multitrack.h:247
POLY_NONE
Definition: multitrack.h:117
_mt::fx_delete
LiVESWidget * fx_delete
Definition: multitrack.h:229
_mt::fx_contents_box
LiVESWidget * fx_contents_box
Definition: multitrack.h:272
amixer_add_channel_slider
LiVESWidget * amixer_add_channel_slider(lives_mt *mt, int i)
Definition: multitrack.c:22397
FX_ORD_NONE
Definition: multitrack.h:143
_mt::fx_order
lives_mt_fx_order_t fx_order
Definition: multitrack.h:525
_mt::context_scroll
LiVESWidget * context_scroll
Definition: multitrack.h:199
POLY_TRANS
Definition: multitrack.h:122
on_track_header_click
boolean on_track_header_click(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:13753
DIRECTION_POSITIVE
Definition: multitrack.h:131
_mt::fx_region_2av
LiVESWidget * fx_region_2av
Definition: multitrack.h:236
_mt::render_sep
LiVESWidget * render_sep
Definition: multitrack.h:317
_mt::timeline_eb
LiVESWidget * timeline_eb
Definition: multitrack.h:205
_mt::inheight
int inheight
Definition: multitrack.h:517
_mt::pb_loop_event
weed_plant_t * pb_loop_event
FRAME event to loop back to (can be different from pb_start_event if we are paused) ...
Definition: multitrack.h:558
mt_undo
Definition: multitrack.h:618
_mt::mouse_mot2
ulong mouse_mot2
Definition: multitrack.h:487
MT_LAST_FX_NONE
Definition: multitrack.h:136
_mt::load_vals
LiVESWidget * load_vals
Definition: multitrack.h:312
_mt::specific_event
weed_plant_t * specific_event
a pointer to some generally interesting event
Definition: multitrack.h:560
_mt::no_expose
boolean no_expose
block timeline expose while we are exiting
Definition: multitrack.h:585
_mt::user_height
int user_height
Definition: multitrack.h:546
on_track_between_release
boolean on_track_between_release(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:13783
_mt::btoolbar
LiVESWidget * btoolbar
Definition: multitrack.h:341
_mt_opts::autocross_audio
boolean autocross_audio
crossfade audio with autotransitions
Definition: multitrack.h:173
_mt::node_adj
LiVESObject * node_adj
Definition: multitrack.h:383
on_atrack_release
boolean on_atrack_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt)
update_grav_mode
void update_grav_mode(lives_mt *mt)
Definition: multitrack.c:4660
_mt::selected_tracks
LiVESList * selected_tracks
Definition: multitrack.h:440
remove_current_from_affected_layouts
void remove_current_from_affected_layouts(lives_mt *mt)
Definition: multitrack.c:5496
_mt::audio_vols_back
LiVESList * audio_vols_back
layer volume levels (coarse control) - reset levels
Definition: multitrack.h:388
_mt::fx_box
LiVESWidget * fx_box
Definition: multitrack.h:273
_mt::fx_block
LiVESWidget * fx_block
Definition: multitrack.h:226
_mt::clear_ds
LiVESWidget * clear_ds
Definition: multitrack.h:371
_mt::jumpnext
LiVESWidget * jumpnext
Definition: multitrack.h:222
mt_undo::extra
void * extra
Definition: multitrack.h:621
_mt::render_vid
LiVESWidget * render_vid
Definition: multitrack.h:318
_mt::vpaned
LiVESWidget * vpaned
Definition: multitrack.h:217
_mt::auto_reloading
boolean auto_reloading
Definition: multitrack.h:529
mt_undo::data_len
size_t data_len
including this mt_undo
Definition: multitrack.h:622
_mt::play_blank
LiVESWidget * play_blank
Definition: multitrack.h:188
compare_filter_maps
boolean compare_filter_maps(weed_plant_t *fm1, weed_plant_t *fm2, int ctrack)
ctrack can be -1 to compare all events, else we cf for ctrack
Definition: multitrack.c:20059
_mt::atrans_menuitem
LiVESWidget * atrans_menuitem
Definition: multitrack.h:240
lives_mt_insert_mode_t
lives_mt_insert_mode_t
Definition: multitrack.h:64
_mt::changed
boolean changed
changed since last saved
Definition: multitrack.h:510
_mt::tl_mouse
boolean tl_mouse
Definition: multitrack.h:593
_mt::timecode
LiVESWidget * timecode
Definition: multitrack.h:267
_mt::next_node_button
LiVESWidget * next_node_button
Definition: multitrack.h:277
INSERT_MODE_NORMAL
the default (only insert if it fits)
Definition: multitrack.h:65
_mt::render_aud
LiVESWidget * render_aud
Definition: multitrack.h:319
_mt::is_atrans
boolean is_atrans
Definition: multitrack.h:608
delete_video_track
void delete_video_track(lives_mt *mt, int layer, boolean full)
Definition: multitrack.c:10225
scroll_tracks
void scroll_tracks(lives_mt *mt, int top_track, boolean set_value)
Definition: multitrack.c:2106
_mt::l_sel_arrow
LiVESWidget * l_sel_arrow
Definition: multitrack.h:283
_mt::tl_min
double tl_min
Definition: multitrack.h:433
ttable::out
void * out
Definition: multitrack.h:669
_mt::last_fx_type
lives_mt_last_fx_type_t last_fx_type
Definition: multitrack.h:523
_mt_opts::render_vidp
boolean render_vidp
render video
Definition: multitrack.h:175
_mt_opts::grav_mode
lives_mt_grav_mode_t grav_mode
Definition: multitrack.h:162
add_aparam_menuitems
void add_aparam_menuitems(lives_mt *mt)
Definition: multitrack.c:4958
_mt::recent3
LiVESWidget * recent3
Definition: multitrack.h:360
add_markers
void add_markers(lives_mt *mt, weed_plant_t *event_list, boolean add_block_ids)
Definition: multitrack.c:19548
layout_map
Definition: multitrack.h:674
_mt::checkbutton_start_anchored
LiVESWidget * checkbutton_start_anchored
Definition: multitrack.h:265
lives_cursor_t
lives_cursor_t
Definition: widget-helper.h:809
on_amixer_close_clicked
void on_amixer_close_clicked(LiVESButton *button, lives_mt *mt)
Definition: multitrack.c:22223
_mt::auto_back_time
int64_t auto_back_time
Definition: multitrack.h:513
_mt::outwidth
int outwidth
Definition: multitrack.h:518
_mt::stop
LiVESWidget * stop
Definition: multitrack.h:208
_mt::vadjustment
LiVESObject * vadjustment
Definition: multitrack.h:392
layout_map::unique_id
int64_t unique_id
Definition: multitrack.h:676
_mt::audio_vols
LiVESList * audio_vols
layer volume levels (coarse control) - set in mixer
Definition: multitrack.h:387
mt_prepare_for_playback
void mt_prepare_for_playback(lives_mt *mt)
Definition: multitrack.c:17126
_mt::redraw_block
boolean redraw_block
block drawing of playback cursor during track redraws
Definition: multitrack.h:581
_mt::undo
LiVESWidget * undo
Definition: multitrack.h:292
_mt::cback_audio
LiVESWidget * cback_audio
Definition: multitrack.h:310
_mt::timeline_table
LiVESWidget * timeline_table
Definition: multitrack.h:203
_mt::close
LiVESWidget * close
Definition: multitrack.h:369
_lives_amixer_t::nchans
int nchans
Definition: multitrack.h:632
_mt::insert_end
weed_timecode_t insert_end
Definition: multitrack.h:493
_mt::grav_left_func
ulong grav_left_func
Definition: multitrack.h:413
_mt::mm_select
LiVESWidget * mm_select
Definition: multitrack.h:245
do_sel_context
void do_sel_context(lives_mt *mt)
Definition: multitrack.c:18422
_mt::spin_start_func
ulong spin_start_func
Definition: multitrack.h:537
_mt::grav_normal
LiVESWidget * grav_normal
Definition: multitrack.h:250
_track_rect::state
lives_mt_block_state_t state
Definition: multitrack.h:655
_mt::eview_label
LiVESWidget * eview_label
Definition: multitrack.h:326
activate_mt_preview
void activate_mt_preview(lives_mt *mt)
sensitize Show Preview and Apply buttons
Definition: multitrack.c:19093
remove_gaps
void remove_gaps(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14696
_lives_amixer_t::ch_slider_fns
ulong * ch_slider_fns
Definition: multitrack.h:631
_mt::clear_event_list
LiVESWidget * clear_event_list
menuitem
Definition: multitrack.h:287
_mt::sep_image
LiVESWidget * sep_image
Definition: multitrack.h:200
_lives_amixer_t::mt
lives_mt * mt
Definition: multitrack.h:633
_mt::moving_block
boolean moving_block
moving block flag
Definition: multitrack.h:477
on_node_spin_value_changed
void on_node_spin_value_changed(LiVESSpinButton *spinbutton, livespointer user_data)
Definition: multitrack.c:18861
_mt::fx_blockv
LiVESWidget * fx_blockv
Definition: multitrack.h:227
on_track_click
boolean on_track_click(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:13795
_mt::frame_pixbuf
LiVESPixbuf * frame_pixbuf
Definition: multitrack.h:396
_mt::tc_func
ulong tc_func
Definition: multitrack.h:422
event
Definition: main.h:287
on_frame_preview_clicked
void on_frame_preview_clicked(LiVESButton *, livespointer mt)
_mt::aparam_menuitem
LiVESWidget * aparam_menuitem
Definition: multitrack.h:315
_mt::fx_region_1a
LiVESWidget * fx_region_1a
Definition: multitrack.h:234
LMAP_INFO_SETNAME_CHANGED
Definition: multitrack.h:956
_mt::sel_y
int sel_y
Definition: multitrack.h:484
get_prev_fm
weed_plant_t * get_prev_fm(lives_mt *mt, int current_track, weed_plant_t *event)
Definition: multitrack.c:18613
mt_swap_play_pause
void mt_swap_play_pause(lives_mt *mt, boolean put_pause)
Definition: multitrack.c:17089
_mt::select_track
LiVESWidget * select_track
Definition: multitrack.h:253
_mt::block_tl_move
boolean block_tl_move
set to TRUE to block moving timeline (prevents loops with the node spinbutton)
Definition: multitrack.h:605
_mt::event_list
weed_plant_t * event_list
Definition: multitrack.h:424
_mt::spin_end_func
ulong spin_end_func
Definition: multitrack.h:538
_mt::file_selected
int file_selected
actual LiVES file struct number which clip_selected matches
Definition: multitrack.h:437
mt_get_effect_time
double mt_get_effect_time(lives_mt *mt)
Definition: multitrack.c:1564
_mt::ac_audio_check
LiVESWidget * ac_audio_check
Definition: multitrack.h:294
_mt::rs_to_tc
LiVESWidget * rs_to_tc
Definition: multitrack.h:290
_mt_opts::normalise_audp
boolean normalise_audp
normalise audio
Definition: multitrack.h:177
show_preview
void show_preview(lives_mt *, weed_timecode_t tc)
_mt::spin_avel_func
ulong spin_avel_func
Definition: multitrack.h:402
_mt::user_signed_endian
int user_signed_endian
Definition: multitrack.h:550
_mt::save_set
LiVESWidget * save_set
Definition: multitrack.h:367
_track_rect::eventbox
LiVESWidget * eventbox
pointer to eventbox widget which contains this block; we can use its &quot;layer_number&quot; to get the track/...
Definition: multitrack.h:661
LMAP_ERROR_CLOSE_FILE
Definition: multitrack.h:945
get_clip_for_block
int get_clip_for_block(track_rect *block)
Definition: multitrack.c:22838
NB_ERROR_NOCOMP
Definition: multitrack.h:110
_mt::render
LiVESWidget * render
Definition: multitrack.h:224
_mt::check_avel_rev_func
ulong check_avel_rev_func
Definition: multitrack.h:405
_track_rect::end_anchored
boolean end_anchored
Definition: multitrack.h:657
_mt::redo_text
char redo_text[32]
Definition: multitrack.h:505
_mt::block_node_spin
boolean block_node_spin
set to TRUE to block moving node spinner (prevents loops with the timeline)
Definition: multitrack.h:606
on_prev_node_clicked
void on_prev_node_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18926
_mt::aload_subs
LiVESWidget * aload_subs
Definition: multitrack.h:311
_mt::undoable
boolean undoable
Definition: multitrack.h:507
POLY_EFFECTS
Definition: multitrack.h:121
_mt::ins_normal_func
ulong ins_normal_func
Definition: multitrack.h:410
lives_mt_block_state_t
lives_mt_block_state_t
Definition: multitrack.h:149
_mt::user_width
int user_width
Definition: multitrack.h:545
_mt::selected_filter
int selected_filter
filter selected in poly window tab
Definition: multitrack.h:577
_mt::hpaned
LiVESWidget * hpaned
Definition: multitrack.h:218
_mt::apply_fx_button
LiVESWidget * apply_fx_button
Definition: multitrack.h:324
_mt::fx_params_label
LiVESWidget * fx_params_label
Definition: multitrack.h:333
_mt::spin_in_func
ulong spin_in_func
Definition: multitrack.h:400
_mt::tc_to_re
LiVESWidget * tc_to_re
Definition: multitrack.h:289
_mt::spinbutton_out_adj
LiVESObject * spinbutton_out_adj
Definition: multitrack.h:380
on_atrack_click
boolean on_atrack_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
MT_UNDO_FILTER_MAP_CHANGE
Definition: multitrack.h:93
_mt::aparam_submenu
LiVESWidget * aparam_submenu
Definition: multitrack.h:316
_mt::spinbutton_end
LiVESWidget * spinbutton_end
Definition: multitrack.h:269
DIRECTION_NEGATIVE
Definition: multitrack.h:130
move_block
track_rect * move_block(lives_mt *mt, track_rect *block, double timesecs, int old_track, int new_track)
Definition: multitrack.c:11451
delete_audio_track
void delete_audio_track(lives_mt *mt, LiVESWidget *eventbox, boolean full)
Definition: multitrack.c:9114
_mt::mute_audio_func
ulong mute_audio_func
Definition: multitrack.h:417
_mt::fx_region
LiVESWidget * fx_region
Definition: multitrack.h:231
_mt::poly_state
lives_mt_poly_state_t poly_state
state of polymorph window
Definition: multitrack.h:442
_mt::hbox
LiVESWidget * hbox
Definition: multitrack.h:187
LMAP_ERROR_ALTER_AUDIO
Definition: multitrack.h:953
_mt::user_fps
double user_fps
Definition: multitrack.h:544
_mt::ignore_load_vals
boolean ignore_load_vals
Definition: multitrack.h:542
_mt::gens_submenu
LiVESWidget * gens_submenu
Definition: multitrack.h:373
_mt::check_start_func
ulong check_start_func
Definition: multitrack.h:403
_track_rect::next
track_rect * next
Definition: multitrack.h:648
mt_undo::action
lives_mt_undo_t action
Definition: multitrack.h:619
find_block_by_uid
track_rect * find_block_by_uid(lives_mt *mt, ulong uid)
Definition: multitrack.c:22740
_mt::mute_audio
LiVESWidget * mute_audio
Definition: multitrack.h:211
out_anchor_toggled
void out_anchor_toggled(LiVESToggleButton *togglebutton, livespointer user_data)
Definition: multitrack.c:12597
_mt::capture
LiVESWidget * capture
Definition: multitrack.h:374
_mt::split_sel
LiVESWidget * split_sel
Definition: multitrack.h:297
_mt::sepwin_func
ulong sepwin_func
Definition: multitrack.h:416
_mt::insa_checkbutton
LiVESWidget * insa_checkbutton
Definition: multitrack.h:376
_mt::fx_list_vbox
LiVESWidget * fx_list_vbox
Definition: multitrack.h:304
_lives_amixer_t::ch_sliders
LiVESWidget ** ch_sliders
Definition: multitrack.h:628
_mt::btoolbar3
LiVESWidget * btoolbar3
Definition: multitrack.h:343
layout_map::name
char * name
Definition: multitrack.h:677
_mt::follow_play
LiVESWidget * follow_play
Definition: multitrack.h:327
mt_change_disp_tracks_ok
void mt_change_disp_tracks_ok(LiVESButton *, livespointer user_data)
Definition: multitrack.c:22007
_mt::undo_text
char undo_text[32]
Definition: multitrack.h:504
_mt::grav_label
LiVESWidget * grav_label
Definition: multitrack.h:249
_mt::framedraw
lives_special_framedraw_rect_t * framedraw
Definition: multitrack.h:520
_mt_opts::snap_over
boolean snap_over
snap to overlap
Definition: multitrack.h:161
mt_init_clips
void mt_init_clips(lives_mt *mt, int orig_file, boolean add)
Definition: multitrack.c:10943
_mt_opts::insert_mode
lives_mt_insert_mode_t insert_mode
Definition: multitrack.h:164
_mt::mouse_mot1
ulong mouse_mot1
Definition: multitrack.h:486
MT_UNDO_REMOVE_GAPS
Definition: multitrack.h:98
multitrack_clear_marks
void multitrack_clear_marks(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14308
MT_UNDO_DELETE_FILTER
Definition: multitrack.h:90
_mt::checkbutton_end_anchored
LiVESWidget * checkbutton_end_anchored
Definition: multitrack.h:266
POLY_CLIPS
Definition: multitrack.h:118
event_list_free_undos
void event_list_free_undos(lives_mt *mt)
Definition: multitrack.c:5465
lives_mt_undo_t
lives_mt_undo_t
Definition: multitrack.h:81
on_track_header_move
boolean on_track_header_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer user_data)
Definition: multitrack.c:13940
re_to_tc
void re_to_tc(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14292
_mt::window
LiVESWidget * window
Definition: multitrack.h:184
_mt::recent_menu
LiVESWidget * recent_menu
Definition: multitrack.h:357
avel_spin_changed
void avel_spin_changed(LiVESSpinButton *spinbutton, livespointer user_data)
Definition: multitrack.c:12413
_mt::pb_start_event
weed_plant_t * pb_start_event
FRAME event from which we start playback.
Definition: multitrack.h:557
multitrack_play_sel
void multitrack_play_sel(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:17311
GRAV_MODE_RIGHT
Definition: multitrack.h:77
_mt::timeline_table_header
LiVESWidget * timeline_table_header
Definition: multitrack.h:201
_mt::undo_mem
uint8_t * undo_mem
Definition: multitrack.h:500
get_eload_filename
char * get_eload_filename(lives_mt *mt, boolean allow_auto_reload)
Definition: multitrack.c:21290
move_init_in_filter_map
void move_init_in_filter_map(lives_mt *mt, weed_plant_t *event_list, weed_plant_t *event, weed_plant_t *ifrom, weed_plant_t *ito, int track, boolean after)
Definition: multitrack.c:19965
animate_multitrack
void animate_multitrack(lives_mt *mt)
Definition: multitrack.c:14148
unpaint_lines
void unpaint_lines(lives_mt *mt)
Definition: multitrack.c:13973
_mt::avel_box
LiVESWidget * avel_box
Definition: multitrack.h:259
_mt::clip_labels
LiVESList * clip_labels
Definition: multitrack.h:599
_mt::end_secs
double end_secs
max display time of timeline in seconds
Definition: multitrack.h:430
stored_event_list_free_all
void stored_event_list_free_all(boolean wiped)
Definition: multitrack.c:5543
FX_ORD_AFTER
Definition: multitrack.h:145
_mt::is_rendering
boolean is_rendering
TRUE if we are in the process of rendering/pre-rendering to a clip, cf. mainw-&gt;is_rendering.
Definition: multitrack.h:462
_mt::sepwin
LiVESWidget * sepwin
Definition: multitrack.h:210
INSERT_MODE_FLEX
stretch first gap to fit block
Definition: multitrack.h:69
mt_track_is_audio
boolean mt_track_is_audio(lives_mt *mt, int ntrack)
return TRUE if ntrack is a valid backing audio track
Definition: multitrack.c:22777
_mt::fm_edit_event
weed_plant_t * fm_edit_event
Definition: multitrack.h:531
delete_audio_tracks
void delete_audio_tracks(lives_mt *mt, LiVESList *list, boolean full)
Definition: multitrack.c:5638
draw_region
void draw_region(lives_mt *mt)
Definition: multitrack.c:17968
_mt::play_window_width
int play_window_width
Definition: multitrack.h:574
_mt::out_image
LiVESWidget * out_image
Definition: multitrack.h:197
_mt::insert
LiVESWidget * insert
Definition: multitrack.h:213
close_clip_cb
void close_clip_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14224
insert_audio
void insert_audio(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc, double avel, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *mt, track_rect *in_block)
Definition: multitrack.c:17870
mt_get_last_block_uid
ulong mt_get_last_block_uid(lives_mt *mt)
get index of last inserted (wallclock time) block for track
Definition: multitrack.c:22783
mt_set_autotrans
void mt_set_autotrans(int idx)
Definition: multitrack.c:5739
_mt::btoolbar2
LiVESWidget * btoolbar2
Definition: multitrack.h:342
_mt::fx_region_3
LiVESWidget * fx_region_3
Definition: multitrack.h:239
NB_ERROR_SEL
Definition: multitrack.h:107
_mt::scrollbar
LiVESWidget * scrollbar
Definition: multitrack.h:219
on_track_move
boolean on_track_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer user_data)
Definition: multitrack.c:13932
track_select
void track_select(lives_mt *mt)
must call after setting mt-&gt;current_track
Definition: multitrack.c:1755
_mt::seltrack_func
ulong seltrack_func
Definition: multitrack.h:420
do_fx_move_context
void do_fx_move_context(lives_mt *mt)
Definition: multitrack.c:18449
load_event_list
weed_plant_t * load_event_list(lives_mt *mt, char *eload_file)
Definition: multitrack.c:21377
_mt::recent4
LiVESWidget * recent4
Definition: multitrack.h:361
_mt_opts::mouse_mode
lives_mt_mouse_mode_t mouse_mode
Definition: multitrack.h:163
_mt::play_width
int play_width
Definition: multitrack.h:570
_mt_opts::show_audio
boolean show_audio
Definition: multitrack.h:165
_mt::selected_init_event
weed_plant_t * selected_init_event
currently selected in list
Definition: multitrack.h:427
_mt::clipedit
LiVESWidget * clipedit
Definition: multitrack.h:216
_mt::track_index
int track_index
Definition: multitrack.h:521
_mt::avel_scale
LiVESWidget * avel_scale
Definition: multitrack.h:262
on_render_activate
boolean on_render_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:16026
scroll_track_by_scrollbar
void scroll_track_by_scrollbar(LiVESScrollbar *sbar, livespointer user_data)
Definition: multitrack.c:3385
_mt::user_asamps
int user_asamps
Definition: multitrack.h:549
get_next_fm
weed_plant_t * get_next_fm(lives_mt *mt, int current_track, weed_plant_t *event)
Definition: multitrack.c:18668
mt_undo::tc
weed_timecode_t tc
Definition: multitrack.h:620
_mt::playall
LiVESWidget * playall
Definition: multitrack.h:220
_lives_amixer_t::inv_checkbutton
LiVESWidget * inv_checkbutton
Definition: multitrack.h:630
_mt::insert_start
weed_timecode_t insert_start
Definition: multitrack.h:492
_mt::spin_out_func
ulong spin_out_func
Definition: multitrack.h:401
on_insgap_cur_activate
void on_insgap_cur_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:15079
lives_lmap_error_t
lives_lmap_error_t
Definition: multitrack.h:942
_mt::play_height
int play_height
Definition: multitrack.h:571
selblock_cb
void selblock_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14259
mt_idle_add
uint32_t mt_idle_add(lives_mt *mt)
Definition: multitrack.c:856
MOUSE_MODE_COPY
Definition: multitrack.h:60
_mt::ins_menuitem
LiVESWidget * ins_menuitem
Definition: multitrack.h:246
LMAP_ERROR_SHIFT_AUDIO
Definition: multitrack.h:952
event_list_get_byte_size
uint32_t event_list_get_byte_size(lives_mt *mt, weed_plant_t *event_list, int *num_events)
returns bytes and sets num_events
Definition: multitrack.c:22175
_mt::opts
mt_opts opts
Definition: multitrack.h:527
_mt::recent2
LiVESWidget * recent2
Definition: multitrack.h:359
_mt::auto_changed
boolean auto_changed
changed since last auto-saved
Definition: multitrack.h:511
on_timeline_release
boolean on_timeline_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:18457
on_rename_track_activate
void on_rename_track_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:15981
_mt::mm_move
LiVESWidget * mm_move
Definition: multitrack.h:244
_mt::is_ready
boolean is_ready
Definition: multitrack.h:587
_mt::accel_group
LiVESAccelGroup * accel_group
Definition: multitrack.h:390
INSERT_MODE_OVERWRITE
overwite existing blocks
Definition: multitrack.h:68
_mt::fx_base_box
LiVESWidget * fx_base_box
Definition: multitrack.h:271
_mt::undo_buffer_used
size_t undo_buffer_used
Definition: multitrack.h:499
wipe_layout
void wipe_layout(lives_mt *mt)
Definition: multitrack.c:21606
_mt::load_event_list
LiVESWidget * load_event_list
menuitem
Definition: multitrack.h:286
_mt_opts::ign_ins_sel
boolean ign_ins_sel
Definition: multitrack.h:167
mt_init_tracks
void mt_init_tracks(lives_mt *mt, boolean set_min_max)
add basic tracks, or set tracks from mt-&gt;event_list
Definition: multitrack.c:9779
on_timeline_update
boolean on_timeline_update(LiVESWidget *widget, LiVESXEventMotion *event, livespointer user_data)
Definition: multitrack.c:18299
_mt::cb_list
LiVESList * cb_list
Definition: multitrack.h:398
_mt::fps
double fps
fps of this timeline
Definition: multitrack.h:455
POLY_COMP
Definition: multitrack.h:123
_mt::delblock
LiVESWidget * delblock
Definition: multitrack.h:215
_mt::grav_left
LiVESWidget * grav_left
Definition: multitrack.h:251
_mt::fx_region_2a
LiVESWidget * fx_region_2a
Definition: multitrack.h:238
_mt_opts::aparam_view_list
LiVESList * aparam_view_list
Definition: multitrack.h:178
_mt::timeline
LiVESWidget * timeline
Definition: multitrack.h:204
on_load_event_list_activate
boolean on_load_event_list_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:21721
amixer_show
void amixer_show(LiVESButton *button, livespointer user_data)
Definition: multitrack.c:22463
update_insert_mode
void update_insert_mode(lives_mt *mt)
Definition: multitrack.c:4608
GRAV_MODE_NORMAL
Definition: multitrack.h:75
used_in_current_layout
boolean used_in_current_layout(lives_mt *mt, int file)
Definition: multitrack.c:9297
multitrack_delete
boolean multitrack_delete(lives_mt *mt, boolean save_layout)
Definition: multitrack.c:9326
_mt::pr_audio
boolean pr_audio
TRUE if we are in the process of prerendering audio to a clip.
Definition: multitrack.h:463
_mt::view_audio
LiVESWidget * view_audio
Definition: multitrack.h:321
_mt::user_arate
int user_arate
Definition: multitrack.h:547
_mt::clip_inner_box
LiVESWidget * clip_inner_box
Definition: multitrack.h:192
show_clipinfo_cb
void show_clipinfo_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14230
_mt::prev_node_button
LiVESWidget * prev_node_button
Definition: multitrack.h:278
insert_audio_here_cb
void insert_audio_here_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14240
_lives_amixer_t::main_hbox
LiVESWidget * main_hbox
Definition: multitrack.h:627
_mt::in_out_box
LiVESWidget * in_out_box
Definition: multitrack.h:193
_mt::clip_selected
int clip_selected
clip in clip window
Definition: multitrack.h:436
_mt::aud_track_selected
boolean aud_track_selected
Definition: multitrack.h:589
_lives_amixer_t
Definition: multitrack.h:626
multitrack_insert
boolean multitrack_insert(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:17346
_mt_opts::pertrack_audio
boolean pertrack_audio
do we want pertrack audio ?
Definition: multitrack.h:170
_mt::r_sel_arrow
LiVESWidget * r_sel_arrow
Definition: multitrack.h:284
_mt::audio_draws
LiVESList * audio_draws
list of audio boxes, 0 == backing audio, 1 == track 0 audio, etc.
Definition: multitrack.h:385
_mt::tc_to_rs
LiVESWidget * tc_to_rs
Definition: multitrack.h:288
set_timeline_end_secs
void set_timeline_end_secs(lives_mt *mt, double secs)
Definition: multitrack.c:2972
multitrack
lives_mt * multitrack(weed_plant_t *event_list, int orig_file, double fps)
create and return lives_mt struct
Definition: multitrack.c:5926
_mt::spinbutton_in
LiVESWidget * spinbutton_in
Definition: multitrack.h:263
lives_mt_last_fx_type_t
lives_mt_last_fx_type_t
Definition: multitrack.h:135
on_timeline_press
boolean on_timeline_press(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:18583
track_arrow_pressed
boolean track_arrow_pressed(LiVESWidget *ebox, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:2643
layout_map::handle
char * handle
Definition: multitrack.h:675
_mt::show_layout_errors
LiVESWidget * show_layout_errors
Definition: multitrack.h:364
_mt::check_end_func
ulong check_end_func
Definition: multitrack.h:404
_mt::mm_menuitem
LiVESWidget * mm_menuitem
Definition: multitrack.h:243
_mt::fx_label
LiVESWidget * fx_label
Definition: multitrack.h:274
_mt::in_hbox
LiVESWidget * in_hbox
Definition: multitrack.h:194
_mt::ptr_time
double ptr_time
stored timeline cursor position before playback
Definition: multitrack.h:451
_mt::node_spinbutton
LiVESWidget * node_spinbutton
Definition: multitrack.h:280
_mt::param_inner_box
LiVESWidget * param_inner_box
Definition: multitrack.h:275
_mt::remove_first_gaps
LiVESWidget * remove_first_gaps
Definition: multitrack.h:296
_mt::spinbutton_in_adj
LiVESObject * spinbutton_in_adj
Definition: multitrack.h:379
INSERT_MODE_FILL
insert enough to fill gap (from selection start or end depending on gravity)
Definition: multitrack.h:70
_mt::init_event
weed_plant_t * init_event
current editable values
Definition: multitrack.h:426
_mt_opts::render_audp
boolean render_audp
render audio
Definition: multitrack.h:176
_mt::exact_preview
int exact_preview
Definition: multitrack.h:552
_track_rect::prev
track_rect * prev
Definition: multitrack.h:649
MT_UNDO_SPLIT_MULTI
Definition: multitrack.h:92
_mt::normalise_aud
LiVESWidget * normalise_aud
Definition: multitrack.h:320
event_list_rectify
boolean event_list_rectify(lives_mt *mt, weed_plant_t *event_list)
Definition: multitrack.c:20383
_mt::change_vals
LiVESWidget * change_vals
Definition: multitrack.h:313
ulong
#define ulong
Definition: main.h:148
_mt::was_undo_redo
boolean was_undo_redo
Definition: multitrack.h:583
_mt::grav_normal_func
ulong grav_normal_func
Definition: multitrack.h:412
_mt::fx_ibefore_button
LiVESWidget * fx_ibefore_button
Definition: multitrack.h:307
_mt::sel_x
int sel_x
Definition: multitrack.h:483
_mt::fx_list_scroll
LiVESWidget * fx_list_scroll
Definition: multitrack.h:303
_mt::fx_edit
LiVESWidget * fx_edit
Definition: multitrack.h:230
on_next_node_clicked
void on_next_node_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18915
LMAP_ERROR_SHIFT_FRAMES
Definition: multitrack.h:950
POLY_FX_STACK
Definition: multitrack.h:120
add_video_track_front
int add_video_track_front(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:10615
_mt_opts::show_ctx
boolean show_ctx
Definition: multitrack.h:166
_mt::troubleshoot
LiVESWidget * troubleshoot
Definition: multitrack.h:332
_mt::display
LiVESXDisplay * display
Definition: multitrack.h:394
_mt::submenu_atransfx
LiVESWidget * submenu_atransfx
Definition: multitrack.h:241
_mt::nb_label
LiVESWidget * nb_label
Definition: multitrack.h:339
_mt::last_filter_map
LiVESWidget * last_filter_map
Definition: multitrack.h:300
on_del_node_clicked
void on_del_node_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18937
_mt::video_draws
LiVESList * video_draws
list of video timeline eventboxes, in layer order
Definition: multitrack.h:391
_mt::adjust_start_end
LiVESWidget * adjust_start_end
Definition: multitrack.h:336
migrate_layouts
void migrate_layouts(const char *old_set_name, const char *new_set_name)
Definition: multitrack.c:21792
_mt::avol_fx
int avol_fx
index of audio volume filter, delegated by user from audio volume candidates
Definition: multitrack.h:534
_mt::ins_gap_cur
LiVESWidget * ins_gap_cur
Definition: multitrack.h:299
_mt::fx_region_2v
LiVESWidget * fx_region_2v
Definition: multitrack.h:237
_mt::redo
LiVESWidget * redo
Definition: multitrack.h:293
lives_mt_grav_mode_t
lives_mt_grav_mode_t
Definition: multitrack.h:74
MT_UNDO_MOVE_AUDIO_BLOCK
Definition: multitrack.h:100
_mt::idlefunc
uint32_t idlefunc
autobackup function
Definition: multitrack.h:597
_mt::putative_block
track_rect * putative_block
putative block to move or copy, or NULL
Definition: multitrack.h:449
in_out_start_changed
void in_out_start_changed(LiVESWidget *widget, livespointer user_data)
Definition: multitrack.c:11855
_mt::fx_iafter_button
LiVESWidget * fx_iafter_button
Definition: multitrack.h:308
multitrack_playall
void multitrack_playall(lives_mt *mt)
Definition: multitrack.c:17230
_mt::out_hbox
LiVESWidget * out_hbox
Definition: multitrack.h:195
_track_rect::start_event
weed_plant_t * start_event
Definition: multitrack.h:650
_mt_opts::set
boolean set
have we set opts (in mainw) ?
Definition: multitrack.h:158
LMAP_ERROR_DELETE_AUDIO
Definition: multitrack.h:947
_mt::block_selected
track_rect * block_selected
pointer to current selected block, or NULL
Definition: multitrack.h:448
mt_sensitise
void mt_sensitise(lives_mt *mt)
Definition: multitrack.c:16965
insert_here_cb
void insert_here_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14205
mt_get_pchain
void ** mt_get_pchain(void)
Definition: multitrack.c:971
_mt::is_paused
boolean is_paused
Definition: multitrack.h:567
on_fx_insa_clicked
void on_fx_insa_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18739
_mt::poly_box
LiVESWidget * poly_box
Definition: multitrack.h:190
on_track_header_release
boolean on_track_header_release(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:13763
_mt::region_start
double region_start
start of time region in seconds (or 0.)
Definition: multitrack.h:457
_track_rect::start_anchored
boolean start_anchored
Definition: multitrack.h:656
rs_to_tc
void rs_to_tc(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14287
remove_first_gaps
void remove_first_gaps(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14689
_mt::move_fx
LiVESWidget * move_fx
Definition: multitrack.h:242
_mt::tl_marks
LiVESList * tl_marks
Definition: multitrack.h:555
_mt::menubar
LiVESWidget * menubar
Definition: multitrack.h:185
tc_to_rs
void tc_to_rs(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14274
_mt::nb
LiVESWidget * nb
Definition: multitrack.h:338
add_blank_frames_up_to
weed_plant_t * add_blank_frames_up_to(weed_plant_t *event_list, weed_plant_t *start_event, weed_timecode_t end_tc, double fps)
Definition: multitrack.c:15685
_mt::render_file
int render_file
Definition: multitrack.h:444
_mt::change_max_disp
LiVESWidget * change_max_disp
Definition: multitrack.h:328
_mt::play_window_height
int play_window_height
Definition: multitrack.h:575
in_out_end_changed
void in_out_end_changed(LiVESWidget *widget, livespointer user_data)
Definition: multitrack.c:12082
_mt::fx_region_1
LiVESWidget * fx_region_1
Definition: multitrack.h:232
get_eventbox_for_track
LiVESWidget * get_eventbox_for_track(lives_mt *mt, int ntrack)
Definition: multitrack.c:22706
_track_rect
Definition: multitrack.h:645
make_backup_space
boolean make_backup_space(lives_mt *mt, size_t space_needed)
Definition: multitrack.c:4809
_mt::add_vid_behind
LiVESWidget * add_vid_behind
Definition: multitrack.h:329
lives_direction_t
lives_direction_t
Definition: multitrack.h:129
mt_track_is_video
boolean mt_track_is_video(lives_mt *mt, int ntrack)
return TRUE if ntrack is a valid video track
Definition: multitrack.c:22771
on_seltrack_toggled
void on_seltrack_toggled(LiVESWidget *checkbutton, livespointer user_data)
Definition: multitrack.c:16881
layout_map::list
LiVESList * list
Definition: multitrack.h:678
mt_desensitise
void mt_desensitise(lives_mt *mt)
Definition: multitrack.c:16902
make_thumb
LiVESPixbuf * make_thumb(lives_mt *mt, int file, int width, int height, int frame, boolean noblanks)
Definition: multitrack.c:363
_mt::did_backup
boolean did_backup
Definition: multitrack.h:502
mt_clear_timeline
void mt_clear_timeline(lives_mt *mt)
Definition: multitrack.c:10822
_mt::clear_marks
LiVESWidget * clear_marks
Definition: multitrack.h:322
list_fx_here_cb
void list_fx_here_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14265
mt_fixup_events
void mt_fixup_events(lives_mt *mt, weed_plant_t *old_event, weed_plant_t *new_event)
Definition: multitrack.c:19012
BLOCK_SELECTED
Definition: multitrack.h:152
_mt::playsel
LiVESWidget * playsel
Definition: multitrack.h:221
_mt::moving_fx
weed_plant_t * moving_fx
Definition: multitrack.h:532
layout_frame_is_affected
LiVESList * layout_frame_is_affected(int clipno, int frame)
Definition: multitrack.c:21941
_mt::view_sel_events
LiVESWidget * view_sel_events
Definition: multitrack.h:335
_mt::jumpback
LiVESWidget * jumpback
Definition: multitrack.h:223
_mt::tl_max
double tl_max
Definition: multitrack.h:434
_mt::loop_cont_func
ulong loop_cont_func
Definition: multitrack.h:418
_mt::hotspot_y
int hotspot_y
Definition: multitrack.h:475
_mt::recent1
LiVESWidget * recent1
Definition: multitrack.h:358
mt_show_current_frame
void mt_show_current_frame(lives_mt *mt, boolean return_layer)
preview the current frame
Definition: multitrack.c:3045
update_filter_events
void update_filter_events(lives_mt *mt, weed_plant_t *first_event, weed_timecode_t start_tc, weed_timecode_t end_tc, int track, weed_timecode_t new_start_tc, int new_track)
Definition: multitrack.c:16322
_mt::next_filter_map
LiVESWidget * next_filter_map
Definition: multitrack.h:301
_mt::layout_set_properties
boolean layout_set_properties
Definition: multitrack.h:541
save_layout_map
void save_layout_map(int *lmap, double *lmap_audio, const char *file, const char *dir)
Definition: multitrack.c:19370
_mt_opts::back_audio_tracks
int back_audio_tracks
number of backing audio tracks (currently 0 or 1)
Definition: multitrack.h:174
_mt::hotspot_x
double hotspot_x
Definition: multitrack.h:474
_mt::num_video_tracks
int num_video_tracks
Definition: multitrack.h:429
_mt::snapo_checkbutton
LiVESWidget * snapo_checkbutton
Definition: multitrack.h:377
clear_context
void clear_context(lives_mt *mt)
Definition: multitrack.c:11678
_track_rect::offset_start
weed_timecode_t offset_start
offset in sourcefile of first frame
Definition: multitrack.h:653
_mt::fx_list_box
LiVESWidget * fx_list_box
Definition: multitrack.h:302
_mt::prev_fm_button
LiVESWidget * prev_fm_button
Definition: multitrack.h:306
MOUSE_MODE_SELECT
Definition: multitrack.h:59
on_track_release
boolean on_track_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:13606
_mt::tl_eventbox
LiVESWidget * tl_eventbox
Definition: multitrack.h:202
MT_UNDO_INSERT_GAP
Definition: multitrack.h:101
_mt::amixer
lives_amixer_t * amixer
Definition: multitrack.h:601
_mt::quit
LiVESWidget * quit
Definition: multitrack.h:331
delete_block_cb
void delete_block_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14253
_mt::playing_sel
boolean playing_sel
are we playing just the time selection ?
Definition: multitrack.h:595
MOUSE_MODE_MOVE
Definition: multitrack.h:58
MT_UNDO_NONE
no event_list
Definition: multitrack.h:84
unselect_all
void unselect_all(lives_mt *mt)
unselect all blocks
Definition: multitrack.c:11636
POLY_IN_OUT
Definition: multitrack.h:119
lives_mt_poly_state_t
lives_mt_poly_state_t
Definition: multitrack.h:116
_mt::open_menu
LiVESWidget * open_menu
Definition: multitrack.h:347
lives_mt_nb_error_t
lives_mt_nb_error_t
Definition: multitrack.h:106
_mt::undos
LiVESList * undos
Definition: multitrack.h:498
mt_do_autotransition
void mt_do_autotransition(lives_mt *mt, track_rect *block)
call this on a block to apply autotransition on it
Definition: multitrack.c:22855
remove_markers
void remove_markers(weed_plant_t *event_list)
Definition: multitrack.c:21586
unpaint_line
void unpaint_line(lives_mt *mt, LiVESWidget *eventbox)
Definition: multitrack.c:13948
_mt::view_in_out
LiVESWidget * view_in_out
Definition: multitrack.h:257
_mt::node_scale
LiVESWidget * node_scale
Definition: multitrack.h:281
avel_reverse_toggled
void avel_reverse_toggled(LiVESToggleButton *togglebutton, livespointer user_data)
Definition: multitrack.c:12364
LMAP_ERROR_MISSING_CLIP
Definition: multitrack.h:944
_mt::inwidth
int inwidth
Definition: multitrack.h:516
_mt::hadjustment
LiVESObject * hadjustment
Definition: multitrack.h:382
GRAV_MODE_LEFT
Definition: multitrack.h:76
_mt::grav_right
LiVESWidget * grav_right
Definition: multitrack.h:252
recover_layout
void recover_layout(void)
Definition: multitrack.c:948
lives_rfx_t
Definition: plugins.h:481
_mt::user_achans
int user_achans
Definition: multitrack.h:548
_mt::cursor_style
lives_cursor_t cursor_style
Definition: multitrack.h:565
on_track_between_click
boolean on_track_between_click(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
Definition: multitrack.c:13773
_mt::checkbutton_avel_reverse
LiVESWidget * checkbutton_avel_reverse
Definition: multitrack.h:260
_mt::layout_name
char layout_name[PATH_MAX]
Definition: multitrack.h:471
_mt::play_box
LiVESWidget * play_box
Definition: multitrack.h:189
_mt::tl_selecting
boolean tl_selecting
for mouse select mode
Definition: multitrack.h:489
mt_clip_select
void mt_clip_select(lives_mt *mt, boolean scroll)
Definition: multitrack.c:2868
_mt::grav_menuitem
LiVESToolItem * grav_menuitem
Definition: multitrack.h:248
NB_ERROR_NOCLIP
Definition: multitrack.h:111
_mt::remove_gaps
LiVESWidget * remove_gaps
Definition: multitrack.h:295
_mt::context_time
double context_time
this is set when the user right clicks on a track, otherwise -1.
Definition: multitrack.h:562
_mt::insert_avel
double insert_avel
override for avel used during audio insert
Definition: multitrack.h:496
_mt::prerender_aud
LiVESWidget * prerender_aud
Definition: multitrack.h:225
on_save_event_list_activate
boolean on_save_event_list_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:19667
_mt::current_rfx
lives_rfx_t * current_rfx
Definition: multitrack.h:469
mt_nextclip
boolean mt_nextclip(LiVESAccelGroup *group, LiVESObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
Definition: multitrack.c:2945
_mt::top_track
int top_track
top (video) track in scrolled window
Definition: multitrack.h:579
_mt::pb_start_time
double pb_start_time
playback start time in seconds. If play is stopped (not paused) we return to here.
Definition: multitrack.h:479
mt_get_block_sttime
double mt_get_block_sttime(lives_mt *mt, int ntrack, int iblock)
return time in seconds of first frame event in block
Definition: multitrack.c:22814
_mt::region_end
double region_end
end of time region in seconds (or 0.)
Definition: multitrack.h:458
_mt::aparam_separator
LiVESWidget * aparam_separator
Definition: multitrack.h:314
_mt::spinbutton_out
LiVESWidget * spinbutton_out
Definition: multitrack.h:264
polymorph
void polymorph(lives_mt *mt, lives_mt_poly_state_t poly)
Definition: multitrack.c:12648
_mt::redoable
boolean redoable
Definition: multitrack.h:508
stored_event_list_free_undos
void stored_event_list_free_undos(void)
Definition: multitrack.c:5484
lives_special_framedraw_rect_t
Definition: paramspecial.h:16
NB_ERROR_NOEFFECT
Definition: multitrack.h:108
mt_mark_callback
boolean mt_mark_callback(LiVESAccelGroup *group, LiVESObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
Definition: multitrack.c:18726
_mt
Definition: multitrack.h:182
set_new_set_name
boolean set_new_set_name(lives_mt *mt)
Definition: multitrack.c:19617
add_context_label
void add_context_label(lives_mt *mt, const char *text)
Definition: multitrack.c:11707
ttable::in
uint64_t in
Definition: multitrack.h:668
mt_prevclip
boolean mt_prevclip(LiVESAccelGroup *group, LiVESObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
Definition: multitrack.c:2936
_mt::rewind
LiVESWidget * rewind
Definition: multitrack.h:209
_lives_amixer_t::gang_checkbutton
LiVESWidget * gang_checkbutton
Definition: multitrack.h:629
_mt::tl_fixed_length
double tl_fixed_length
length of timeline can be fixed (secs) : TODO
Definition: multitrack.h:453
_mt::tl_hbox
LiVESWidget * tl_hbox
Definition: multitrack.h:270
_mt::next_fm_button
LiVESWidget * next_fm_button
Definition: multitrack.h:305
_mt::spinbutton_start
LiVESWidget * spinbutton_start
Definition: multitrack.h:268
load_layout_map
LiVESList * load_layout_map(void)
Definition: multitrack.c:19238
insert_at_ctx_cb
void insert_at_ctx_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14211
_mt::timeline_reg
LiVESWidget * timeline_reg
Definition: multitrack.h:206
_mt::audio_insert
LiVESWidget * audio_insert
Definition: multitrack.h:214
in_anchor_toggled
void in_anchor_toggled(LiVESToggleButton *togglebutton, livespointer user_data)
Definition: multitrack.c:12546
multitrack_end_cb
void multitrack_end_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14199
_mt::view_clips
LiVESWidget * view_clips
Definition: multitrack.h:256
on_multitrack_activate
boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list)
menuitem callback
Definition: multitrack.c:11107
_mt::prev_fx_time
double prev_fx_time
Definition: multitrack.h:603
on_next_fm_clicked
void on_next_fm_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18783
_mt_opts::gang_audio
boolean gang_audio
gang layer audio volume levels
Definition: multitrack.h:172
_mt::eview_button
LiVESToolItem * eview_button
Definition: multitrack.h:325
MT_UNDO_INSERT_AUDIO_BLOCK
Definition: multitrack.h:86
_mt::re_to_tc
LiVESWidget * re_to_tc
Definition: multitrack.h:291
_mt::layout_prompt
boolean layout_prompt
on occasion, prompt user if they want to correct layout on disk or not
Definition: multitrack.h:540
_mt::mm_move_func
ulong mm_move_func
Definition: multitrack.h:407
mt_get_block_entime
double mt_get_block_entime(lives_mt *mt, int ntrack, int iblock)
return time in seconds of last frame event in block, + event duration
Definition: multitrack.c:22822
on_insgap_sel_activate
void on_insgap_sel_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:15042
_mt::infobar
LiVESWidget * infobar
Definition: multitrack.h:207
_mt::outheight
int outheight
Definition: multitrack.h:519
_mt::menu_hbox
LiVESWidget * menu_hbox
Definition: multitrack.h:345
MT_UNDO_APPLY_FILTER
Definition: multitrack.h:89
ttable
Definition: multitrack.h:667
_mt::ins_gap_sel
LiVESWidget * ins_gap_sel
Definition: multitrack.h:298
mt_tl_move
void mt_tl_move(lives_mt *mt, double pos)
Definition: multitrack.c:3269
tc_to_re
void tc_to_re(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14280
_mt_opts
Definition: multitrack.h:157
insert_frames
void insert_frames(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *mt, track_rect *in_block)
Definition: multitrack.c:17636
MT_UNDO_DELETE_BLOCK
Definition: multitrack.h:96
_mt::mt_frame_preview
boolean mt_frame_preview
Definition: multitrack.h:467
_mt_opts::fx_auto_preview
boolean fx_auto_preview
Definition: multitrack.h:160
_mt::mm_select_func
ulong mm_select_func
Definition: multitrack.h:408
add_mt_param_box
boolean add_mt_param_box(lives_mt *mt)
Definition: multitrack.c:1569
on_split_activate
void on_split_activate(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:16509
_mt::top_vbox
LiVESWidget * top_vbox
Definition: multitrack.h:186
NB_ERROR_NOTRANS
Definition: multitrack.h:109
edit_start_end_cb
void edit_start_end_cb(LiVESMenuItem *menuitem, livespointer user_data)
Definition: multitrack.c:14218
_mt::avol_init_event
weed_plant_t * avol_init_event
Definition: multitrack.h:535
layout_audio_is_affected
LiVESList * layout_audio_is_affected(int clipno, double time)
Definition: multitrack.c:21976
_mt::undo_offset
int undo_offset
Definition: multitrack.h:501
set_values_from_defs
char * set_values_from_defs(lives_mt *mt, boolean from_prefs)
Definition: multitrack.c:5402
_track_rect::uid
ulong uid
Definition: multitrack.h:646
do_fx_list_context
void do_fx_list_context(lives_mt *mt, int fxcount)
Definition: multitrack.c:18438
MT_UNDO_DELETE_AUDIO_BLOCK
Definition: multitrack.h:99
_track_rect::ordered
boolean ordered
are frames in sequential order ?
Definition: multitrack.h:658
_mt::rename_track
LiVESWidget * rename_track
Definition: multitrack.h:309
on_fx_insb_clicked
void on_fx_insb_clicked(LiVESWidget *button, livespointer user_data)
Definition: multitrack.c:18752
MT_LAST_FX_BLOCK
Definition: multitrack.h:137
_mt::spinbutton_avel
LiVESWidget * spinbutton_avel
Definition: multitrack.h:261
_mt::has_audio_file
boolean has_audio_file
Definition: multitrack.h:591
_mt::context_box
LiVESWidget * context_box
Definition: multitrack.h:198
get_track_name
LIVES_INLINE char * get_track_name(lives_mt *mt, int track_num, boolean is_audio)
Definition: multitrack.c:976
_track_rect::end_event
weed_plant_t * end_event
Definition: multitrack.h:651